Lines Matching refs:crq

224 	entry->fmt = evt->crq.format;
261 entry->fmt = evt->crq.format;
822 evt->crq.valid = 0x80;
823 evt->crq.ioba = cpu_to_be64(pool->iu_token + (sizeof(*evt->xfer_iu) * i));
888 * the crq with the hypervisor.
894 struct ibmvfc_queue *crq = &vhost->crq;
908 ibmvfc_free_queue(vhost, crq);
937 spin_lock(vhost->crq.q_lock);
940 spin_unlock(vhost->crq.q_lock);
949 * ibmvfc_reset_crq - resets a crq after a failure
960 struct ibmvfc_queue *crq = &vhost->crq;
972 spin_lock(vhost->crq.q_lock);
979 memset(crq->msgs.crq, 0, PAGE_SIZE);
980 crq->cur = 0;
984 crq->msg_token, PAGE_SIZE);
990 dev_warn(vhost->dev, "Couldn't register crq (rc=%d)\n", rc);
992 spin_unlock(vhost->crq.q_lock);
1122 spin_lock_irqsave(&vhost->crq.l_lock, flags);
1123 list_for_each_entry_safe(evt, pos, &vhost->crq.sent, queue_list)
1125 list_splice_init(&vhost->crq.sent, &vhost->purge);
1126 spin_unlock_irqrestore(&vhost->crq.l_lock, flags);
1563 evt->crq.format = format;
1685 __be64 *crq_as_u64 = (__be64 *) &evt->crq;
1691 if (evt->crq.format == IBMVFC_CMD_FORMAT)
1693 else if (evt->crq.format == IBMVFC_MAD_FORMAT)
1911 vfc_cmd->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offset);
1959 evt = ibmvfc_get_event(&vhost->crq);
2049 evt = ibmvfc_get_event(&vhost->crq);
2112 evt = ibmvfc_get_event(&vhost->crq);
2234 evt = ibmvfc_get_event(&vhost->crq);
2248 mad->cmd_ioba.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) +
2326 evt = ibmvfc_get_event(&vhost->crq);
2471 queues = &vhost->crq;
2658 spin_lock(&vhost->crq.l_lock);
2659 list_for_each_entry(evt, &vhost->crq.sent, queue_list) {
2665 spin_unlock(&vhost->crq.l_lock);
2675 evt = ibmvfc_init_tmf(&vhost->crq, sdev, type);
2748 if (evt->crq.format == IBMVFC_CMD_FORMAT &&
2794 spin_lock(&vhost->crq.l_lock);
2795 list_for_each_entry(evt, &vhost->crq.sent, queue_list) {
2801 spin_unlock(&vhost->crq.l_lock);
2811 evt = ibmvfc_get_event(&vhost->crq);
3153 * @crq: crq to process
3157 static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
3160 const struct ibmvfc_async_desc *desc = ibmvfc_get_ae_desc(be64_to_cpu(crq->event));
3164 " node_name: %llx%s\n", desc->desc, be64_to_cpu(crq->scsi_id),
3165 be64_to_cpu(crq->wwpn), be64_to_cpu(crq->node_name),
3166 ibmvfc_get_link_state(crq->link_state));
3168 switch (be64_to_cpu(crq->event)) {
3170 switch (crq->link_state) {
3209 if (!crq->scsi_id && !crq->wwpn && !crq->node_name)
3211 if (crq->scsi_id && cpu_to_be64(tgt->scsi_id) != crq->scsi_id)
3213 if (crq->wwpn && cpu_to_be64(tgt->ids.port_name) != crq->wwpn)
3215 if (crq->node_name && cpu_to_be64(tgt->ids.node_name) != crq->node_name)
3217 if (tgt->need_login && be64_to_cpu(crq->event) == IBMVFC_AE_ELS_LOGO)
3219 if (!tgt->need_login || be64_to_cpu(crq->event) == IBMVFC_AE_ELS_PLOGI) {
3236 dev_err(vhost->dev, "Unknown async event received: %lld\n", crq->event);
3243 * @crq: Command/Response queue
3248 static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost,
3252 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba);
3254 switch (crq->valid) {
3256 switch (crq->format) {
3271 dev_err(vhost->dev, "Unknown crq message type: %d\n", crq->format);
3278 if (crq->format == IBMVFC_PARTITION_MIGRATED) {
3288 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {
3289 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);
3294 dev_err(vhost->dev, "Received unknown transport event from partner (rc=%d)\n", crq->format);
3300 dev_err(vhost->dev, "Got an invalid message type 0x%02x\n", crq->valid);
3304 if (crq->format == IBMVFC_ASYNC_EVENT)
3311 if (unlikely(!ibmvfc_valid_event(&vhost->crq.evt_pool, evt))) {
3313 crq->ioba);
3319 crq->ioba);
3688 struct ibmvfc_async_crq *crq;
3690 crq = &async_crq->msgs.async[async_crq->cur];
3691 if (crq->valid & 0x80) {
3696 crq = NULL;
3698 return crq;
3710 struct ibmvfc_queue *queue = &vhost->crq;
3711 struct ibmvfc_crq *crq;
3713 crq = &queue->msgs.crq[queue->cur];
3714 if (crq->valid & 0x80) {
3719 crq = NULL;
3721 return crq;
3755 struct ibmvfc_crq *crq;
3763 spin_lock(vhost->crq.q_lock);
3773 while ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3774 ibmvfc_handle_crq(crq, vhost, &evt_doneq);
3775 crq->valid = 0;
3785 } else if ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3787 ibmvfc_handle_crq(crq, vhost, &evt_doneq);
3788 crq->valid = 0;
3794 spin_unlock(vhost->crq.q_lock);
3819 dev_err(dev, "Couldn't %s sub-crq[%lu] irq. rc=%ld\n",
3825 static void ibmvfc_handle_scrq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost,
3828 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba);
3830 switch (crq->valid) {
3836 dev_err(vhost->dev, "Got and invalid message type 0x%02x\n", crq->valid);
3846 crq->ioba);
3852 crq->ioba);
3863 struct ibmvfc_crq *crq;
3865 crq = &scrq->msgs.scrq[scrq->cur].crq;
3866 if (crq->valid & 0x80) {
3871 crq = NULL;
3873 return crq;
3878 struct ibmvfc_crq *crq;
3886 while ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3887 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3888 crq->valid = 0;
3893 if ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3895 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3896 crq->valid = 0;
4073 evt = ibmvfc_get_event(&vhost->crq);
4186 evt = ibmvfc_get_event(&vhost->crq);
4268 evt = ibmvfc_get_event(&vhost->crq);
4443 evt = ibmvfc_get_event(&vhost->crq);
4549 mad->cmd_ioba.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4554 mad->iu.cmd.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4558 mad->iu.rsp.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4615 evt = ibmvfc_get_event(&vhost->crq);
4673 evt = ibmvfc_get_event(&vhost->crq);
4782 evt = ibmvfc_get_event(&vhost->crq);
4960 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq);
5041 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq);
5114 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq);
5242 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq);
5285 if (list_empty(&vhost->crq.sent) &&
5313 evt = ibmvfc_get_event(&vhost->crq);
5555 * before sending the crq init.
5578 * sending the crq init.
5775 fmt_size = sizeof(*queue->msgs.crq);
5822 * the crq with the hypervisor.
5832 struct ibmvfc_queue *crq = &vhost->crq;
5835 if (ibmvfc_alloc_queue(vhost, crq, IBMVFC_CRQ_FMT))
5839 crq->msg_token, PAGE_SIZE);
5875 ibmvfc_free_queue(vhost, crq);
5894 dev_warn(dev, "Error registering sub-crq: %d\n", rc);
5904 dev_err(dev, "Error mapping sub-crq[%d] irq\n", index);
5913 dev_err(dev, "Couldn't register sub-crq[%d] irq\n", index);
5951 dev_err(dev, "Failed to free sub-crq[%d]: rc=%ld\n", index, rc);
5954 memset(scrq->msgs.crq, 0, PAGE_SIZE);
6289 dev_err(dev, "Couldn't initialize crq. rc=%d\n", rc);