Lines Matching defs:crq

228 	entry->fmt = evt->crq.format;
265 entry->fmt = evt->crq.format;
826 evt->crq.valid = 0x80;
827 evt->crq.ioba = cpu_to_be64(pool->iu_token + (sizeof(*evt->xfer_iu) * i));
892 * the crq with the hypervisor.
898 struct ibmvfc_queue *crq = &vhost->crq;
912 ibmvfc_free_queue(vhost, crq);
941 spin_lock(vhost->crq.q_lock);
944 spin_unlock(vhost->crq.q_lock);
953 * ibmvfc_reset_crq - resets a crq after a failure
964 struct ibmvfc_queue *crq = &vhost->crq;
976 spin_lock(vhost->crq.q_lock);
983 memset(crq->msgs.crq, 0, PAGE_SIZE);
984 crq->cur = 0;
988 crq->msg_token, PAGE_SIZE);
994 dev_warn(vhost->dev, "Couldn't register crq (rc=%d)\n", rc);
996 spin_unlock(vhost->crq.q_lock);
1132 spin_lock_irqsave(&vhost->crq.l_lock, flags);
1133 list_for_each_entry_safe(evt, pos, &vhost->crq.sent, queue_list)
1135 list_splice_init(&vhost->crq.sent, &vhost->purge);
1136 spin_unlock_irqrestore(&vhost->crq.l_lock, flags);
1591 evt->crq.format = format;
1713 __be64 *crq_as_u64 = (__be64 *) &evt->crq;
1719 if (evt->crq.format == IBMVFC_CMD_FORMAT)
1721 else if (evt->crq.format == IBMVFC_MAD_FORMAT)
1939 vfc_cmd->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offset);
1987 evt = ibmvfc_get_event(&vhost->crq);
2077 evt = ibmvfc_get_reserved_event(&vhost->crq);
2140 evt = ibmvfc_get_reserved_event(&vhost->crq);
2262 evt = ibmvfc_get_reserved_event(&vhost->crq);
2276 mad->cmd_ioba.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) +
2354 evt = ibmvfc_get_event(&vhost->crq);
2499 queues = &vhost->crq;
2686 spin_lock(&vhost->crq.l_lock);
2687 list_for_each_entry(evt, &vhost->crq.sent, queue_list) {
2693 spin_unlock(&vhost->crq.l_lock);
2703 evt = ibmvfc_init_tmf(&vhost->crq, sdev, type);
2776 if (evt->crq.format == IBMVFC_CMD_FORMAT &&
2822 spin_lock(&vhost->crq.l_lock);
2823 list_for_each_entry(evt, &vhost->crq.sent, queue_list) {
2829 spin_unlock(&vhost->crq.l_lock);
2839 evt = ibmvfc_get_event(&vhost->crq);
3185 * @crq: crq to process
3189 static void ibmvfc_handle_async(struct ibmvfc_async_crq *crq,
3192 const struct ibmvfc_async_desc *desc = ibmvfc_get_ae_desc(be64_to_cpu(crq->event));
3196 " node_name: %llx%s\n", desc->desc, be64_to_cpu(crq->scsi_id),
3197 be64_to_cpu(crq->wwpn), be64_to_cpu(crq->node_name),
3198 ibmvfc_get_link_state(crq->link_state));
3200 switch (be64_to_cpu(crq->event)) {
3202 switch (crq->link_state) {
3241 if (!crq->scsi_id && !crq->wwpn && !crq->node_name)
3243 if (crq->scsi_id && cpu_to_be64(tgt->scsi_id) != crq->scsi_id)
3245 if (crq->wwpn && cpu_to_be64(tgt->ids.port_name) != crq->wwpn)
3247 if (crq->node_name && cpu_to_be64(tgt->ids.node_name) != crq->node_name)
3249 if (tgt->need_login && be64_to_cpu(crq->event) == IBMVFC_AE_ELS_LOGO)
3251 if (!tgt->need_login || be64_to_cpu(crq->event) == IBMVFC_AE_ELS_PLOGI) {
3268 dev_err(vhost->dev, "Unknown async event received: %lld\n", crq->event);
3275 * @crq: Command/Response queue
3280 static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost,
3284 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba);
3286 switch (crq->valid) {
3288 switch (crq->format) {
3303 dev_err(vhost->dev, "Unknown crq message type: %d\n", crq->format);
3310 if (crq->format == IBMVFC_PARTITION_MIGRATED) {
3320 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {
3321 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);
3326 dev_err(vhost->dev, "Received unknown transport event from partner (rc=%d)\n", crq->format);
3332 dev_err(vhost->dev, "Got an invalid message type 0x%02x\n", crq->valid);
3336 if (crq->format == IBMVFC_ASYNC_EVENT)
3343 if (unlikely(!ibmvfc_valid_event(&vhost->crq.evt_pool, evt))) {
3345 crq->ioba);
3351 crq->ioba);
3719 struct ibmvfc_async_crq *crq;
3721 crq = &async_crq->msgs.async[async_crq->cur];
3722 if (crq->valid & 0x80) {
3727 crq = NULL;
3729 return crq;
3741 struct ibmvfc_queue *queue = &vhost->crq;
3742 struct ibmvfc_crq *crq;
3744 crq = &queue->msgs.crq[queue->cur];
3745 if (crq->valid & 0x80) {
3750 crq = NULL;
3752 return crq;
3786 struct ibmvfc_crq *crq;
3794 spin_lock(vhost->crq.q_lock);
3804 while ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3805 ibmvfc_handle_crq(crq, vhost, &evt_doneq);
3806 crq->valid = 0;
3816 } else if ((crq = ibmvfc_next_crq(vhost)) != NULL) {
3818 ibmvfc_handle_crq(crq, vhost, &evt_doneq);
3819 crq->valid = 0;
3825 spin_unlock(vhost->crq.q_lock);
3850 dev_err(dev, "Couldn't %s sub-crq[%lu] irq. rc=%ld\n",
3856 static void ibmvfc_handle_scrq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost,
3859 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba);
3861 switch (crq->valid) {
3867 dev_err(vhost->dev, "Got and invalid message type 0x%02x\n", crq->valid);
3877 crq->ioba);
3883 crq->ioba);
3894 struct ibmvfc_crq *crq;
3896 crq = &scrq->msgs.scrq[scrq->cur].crq;
3897 if (crq->valid & 0x80) {
3902 crq = NULL;
3904 return crq;
3909 struct ibmvfc_crq *crq;
3917 while ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3918 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3919 crq->valid = 0;
3924 if ((crq = ibmvfc_next_scrq(scrq)) != NULL) {
3926 ibmvfc_handle_scrq(crq, scrq->vhost, &evt_doneq);
3927 crq->valid = 0;
4104 evt = ibmvfc_get_reserved_event(&vhost->crq);
4217 evt = ibmvfc_get_reserved_event(&vhost->crq);
4299 evt = ibmvfc_get_reserved_event(&vhost->crq);
4474 evt = ibmvfc_get_reserved_event(&vhost->crq);
4580 mad->cmd_ioba.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4585 mad->iu.cmd.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4589 mad->iu.rsp.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) +
4646 evt = ibmvfc_get_reserved_event(&vhost->crq);
4704 evt = ibmvfc_get_reserved_event(&vhost->crq);
4813 evt = ibmvfc_get_reserved_event(&vhost->crq);
4991 struct ibmvfc_event *evt = ibmvfc_get_reserved_event(&vhost->crq);
5072 struct ibmvfc_event *evt = ibmvfc_get_reserved_event(&vhost->crq);
5145 struct ibmvfc_event *evt = ibmvfc_get_reserved_event(&vhost->crq);
5273 struct ibmvfc_event *evt = ibmvfc_get_reserved_event(&vhost->crq);
5316 if (list_empty(&vhost->crq.sent) &&
5344 evt = ibmvfc_get_reserved_event(&vhost->crq);
5586 * before sending the crq init.
5609 * sending the crq init.
5805 fmt_size = sizeof(*queue->msgs.crq);
5856 * the crq with the hypervisor.
5866 struct ibmvfc_queue *crq = &vhost->crq;
5869 if (ibmvfc_alloc_queue(vhost, crq, IBMVFC_CRQ_FMT))
5873 crq->msg_token, PAGE_SIZE);
5909 ibmvfc_free_queue(vhost, crq);
5929 dev_warn(dev, "Error registering sub-crq: %d\n", rc);
5939 dev_err(dev, "Error mapping sub-crq[%d] irq\n", index);
5963 dev_err(dev, "Couldn't register sub-crq[%d] irq\n", index);
6003 dev_err(dev, "Failed to free sub-crq[%d]: rc=%ld\n", index, rc);
6006 memset(scrq->msgs.crq, 0, PAGE_SIZE);
6377 dev_err(dev, "Couldn't initialize crq. rc=%d\n", rc);