Lines Matching refs:crq

157 	entry->fmt = evt->crq.format;
190 entry->fmt = evt->crq.format;
698 * the crq with the hypervisor.
704 struct ibmvfc_crq_queue *crq = &vhost->crq;
717 dma_unmap_single(vhost->dev, crq->msg_token, PAGE_SIZE, DMA_BIDIRECTIONAL);
718 free_page((unsigned long)crq->msgs);
747 * ibmvfc_reset_crq - resets a crq after a failure
758 struct ibmvfc_crq_queue *crq = &vhost->crq;
772 memset(crq->msgs, 0, PAGE_SIZE);
773 crq->cur = 0;
777 crq->msg_token, PAGE_SIZE);
783 dev_warn(vhost->dev, "Couldn't register crq (rc=%d)\n", rc);
1276 evt->crq.valid = 0x80;
1277 evt->crq.ioba = cpu_to_be64(pool->iu_token + (sizeof(*evt->xfer_iu) * i));
1344 evt->crq.format = format;
1460 __be64 *crq_as_u64 = (__be64 *) &evt->crq;
1465 if (evt->crq.format == IBMVFC_CMD_FORMAT)
1467 else if (evt->crq.format == IBMVFC_MAD_FORMAT)
1685 vfc_cmd->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offsetof(struct ibmvfc_cmd, rsp));
1957 mad->cmd_ioba.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) +
2036 tmf->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offsetof(struct ibmvfc_cmd, rsp));
2301 if (evt->crq.format == IBMVFC_CMD_FORMAT &&
2366 tmf->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offsetof(struct ibmvfc_cmd, rsp));
2703 * @crq: crq to process
2707 static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
2710 const struct ibmvfc_async_desc *desc = ibmvfc_get_ae_desc(be64_to_cpu(crq->event));
2714 " node_name: %llx%s\n", desc->desc, be64_to_cpu(crq->scsi_id),
2715 be64_to_cpu(crq->wwpn), be64_to_cpu(crq->node_name),
2716 ibmvfc_get_link_state(crq->link_state));
2718 switch (be64_to_cpu(crq->event)) {
2720 switch (crq->link_state) {
2759 if (!crq->scsi_id && !crq->wwpn && !crq->node_name)
2761 if (crq->scsi_id && cpu_to_be64(tgt->scsi_id) != crq->scsi_id)
2763 if (crq->wwpn && cpu_to_be64(tgt->ids.port_name) != crq->wwpn)
2765 if (crq->node_name && cpu_to_be64(tgt->ids.node_name) != crq->node_name)
2767 if (tgt->need_login && be64_to_cpu(crq->event) == IBMVFC_AE_ELS_LOGO)
2769 if (!tgt->need_login || be64_to_cpu(crq->event) == IBMVFC_AE_ELS_PLOGI) {
2786 dev_err(vhost->dev, "Unknown async event received: %lld\n", crq->event);
2793 * @crq: Command/Response queue
2797 static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost)
2800 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba);
2802 switch (crq->valid) {
2804 switch (crq->format) {
2819 dev_err(vhost->dev, "Unknown crq message type: %d\n", crq->format);
2826 if (crq->format == IBMVFC_PARTITION_MIGRATED) {
2836 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {
2837 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);
2842 dev_err(vhost->dev, "Received unknown transport event from partner (rc=%d)\n", crq->format);
2848 dev_err(vhost->dev, "Got an invalid message type 0x%02x\n", crq->valid);
2852 if (crq->format == IBMVFC_ASYNC_EVENT)
2861 crq->ioba);
2867 crq->ioba);
3194 struct ibmvfc_async_crq *crq;
3196 crq = &async_crq->msgs[async_crq->cur];
3197 if (crq->valid & 0x80) {
3202 crq = NULL;
3204 return crq;
3216 struct ibmvfc_crq_queue *queue = &vhost->crq;
3217 struct ibmvfc_crq *crq;
3219 crq = &queue->msgs[queue->cur];
3220 if (crq->valid & 0x80) {
3225 crq = NULL;
3227 return crq;
3261 struct ibmvfc_crq *crq;
3276 while ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3277 ibmvfc_handle_crq(crq, vhost);
3278 crq->valid = 0;
3288 } else if ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3290 ibmvfc_handle_crq(crq, vhost);
3291 crq->valid = 0;
3889 mad->cmd_ioba.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
3894 mad->iu.cmd.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
3898 mad->iu.rsp.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4680 * before sending the crq init.
4701 * sending the crq init.
4867 * the crq with the hypervisor.
4877 struct ibmvfc_crq_queue *crq = &vhost->crq;
4880 crq->msgs = (struct ibmvfc_crq *)get_zeroed_page(GFP_KERNEL);
4882 if (!crq->msgs)
4885 crq->size = PAGE_SIZE / sizeof(*crq->msgs);
4886 crq->msg_token = dma_map_single(dev, crq->msgs,
4889 if (dma_mapping_error(dev, crq->msg_token))
4893 crq->msg_token, PAGE_SIZE);
4920 crq->cur = 0;
4930 dma_unmap_single(dev, crq->msg_token, PAGE_SIZE, DMA_BIDIRECTIONAL);
4932 free_page((unsigned long)crq->msgs);
5165 dev_err(dev, "Couldn't initialize crq. rc=%d\n", rc);