Lines Matching refs:evt
213 static void ibmvfc_trc_start(struct ibmvfc_event *evt) in ibmvfc_trc_start() argument
215 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_trc_start()
216 struct ibmvfc_cmd *vfc_cmd = &evt->iu.cmd; in ibmvfc_trc_start()
217 struct ibmvfc_mad_common *mad = &evt->iu.mad_common; in ibmvfc_trc_start()
223 entry->evt = evt; in ibmvfc_trc_start()
225 entry->fmt = evt->crq.format; in ibmvfc_trc_start()
249 static void ibmvfc_trc_end(struct ibmvfc_event *evt) in ibmvfc_trc_end() argument
251 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_trc_end()
252 struct ibmvfc_cmd *vfc_cmd = &evt->xfer_iu->cmd; in ibmvfc_trc_end()
253 struct ibmvfc_mad_common *mad = &evt->xfer_iu->mad_common; in ibmvfc_trc_end()
260 entry->evt = evt; in ibmvfc_trc_end()
262 entry->fmt = evt->crq.format; in ibmvfc_trc_end()
288 #define ibmvfc_trc_start(evt) do { } while (0) argument
289 #define ibmvfc_trc_end(evt) do { } while (0) argument
808 struct ibmvfc_event *evt = &pool->events[i]; in ibmvfc_init_event_pool() local
816 atomic_set(&evt->active, -1); in ibmvfc_init_event_pool()
817 atomic_set(&evt->free, 1); in ibmvfc_init_event_pool()
818 evt->crq.valid = 0x80; in ibmvfc_init_event_pool()
819 evt->crq.ioba = cpu_to_be64(pool->iu_token + (sizeof(*evt->xfer_iu) * i)); in ibmvfc_init_event_pool()
820 evt->xfer_iu = pool->iu_storage + i; in ibmvfc_init_event_pool()
821 evt->vhost = vhost; in ibmvfc_init_event_pool()
822 evt->queue = queue; in ibmvfc_init_event_pool()
823 evt->ext_list = NULL; in ibmvfc_init_event_pool()
824 list_add_tail(&evt->queue_list, &queue->free); in ibmvfc_init_event_pool()
1005 struct ibmvfc_event *evt) in ibmvfc_valid_event() argument
1007 int index = evt - pool->events; in ibmvfc_valid_event()
1010 if (evt != pool->events + index) /* unaligned */ in ibmvfc_valid_event()
1020 static void ibmvfc_free_event(struct ibmvfc_event *evt) in ibmvfc_free_event() argument
1022 struct ibmvfc_event_pool *pool = &evt->queue->evt_pool; in ibmvfc_free_event()
1025 BUG_ON(!ibmvfc_valid_event(pool, evt)); in ibmvfc_free_event()
1026 BUG_ON(atomic_inc_return(&evt->free) != 1); in ibmvfc_free_event()
1027 BUG_ON(atomic_dec_and_test(&evt->active)); in ibmvfc_free_event()
1029 spin_lock_irqsave(&evt->queue->l_lock, flags); in ibmvfc_free_event()
1030 list_add_tail(&evt->queue_list, &evt->queue->free); in ibmvfc_free_event()
1031 if (evt->eh_comp) in ibmvfc_free_event()
1032 complete(evt->eh_comp); in ibmvfc_free_event()
1033 spin_unlock_irqrestore(&evt->queue->l_lock, flags); in ibmvfc_free_event()
1043 static void ibmvfc_scsi_eh_done(struct ibmvfc_event *evt) in ibmvfc_scsi_eh_done() argument
1045 struct scsi_cmnd *cmnd = evt->cmnd; in ibmvfc_scsi_eh_done()
1052 ibmvfc_free_event(evt); in ibmvfc_scsi_eh_done()
1064 struct ibmvfc_event *evt, *pos; in ibmvfc_complete_purge() local
1066 list_for_each_entry_safe(evt, pos, purge_list, queue_list) { in ibmvfc_complete_purge()
1067 list_del(&evt->queue_list); in ibmvfc_complete_purge()
1068 ibmvfc_trc_end(evt); in ibmvfc_complete_purge()
1069 evt->done(evt); in ibmvfc_complete_purge()
1081 static void ibmvfc_fail_request(struct ibmvfc_event *evt, int error_code) in ibmvfc_fail_request() argument
1088 BUG_ON(!atomic_dec_and_test(&evt->active)); in ibmvfc_fail_request()
1089 if (evt->cmnd) { in ibmvfc_fail_request()
1090 evt->cmnd->result = (error_code << 16); in ibmvfc_fail_request()
1091 evt->done = ibmvfc_scsi_eh_done; in ibmvfc_fail_request()
1093 evt->xfer_iu->mad_common.status = cpu_to_be16(IBMVFC_MAD_DRIVER_FAILED); in ibmvfc_fail_request()
1095 del_timer(&evt->timer); in ibmvfc_fail_request()
1108 struct ibmvfc_event *evt, *pos; in ibmvfc_purge_requests() local
1119 list_for_each_entry_safe(evt, pos, &vhost->crq.sent, queue_list) in ibmvfc_purge_requests()
1120 ibmvfc_fail_request(evt, error_code); in ibmvfc_purge_requests()
1127 list_for_each_entry_safe(evt, pos, &queues[i].sent, queue_list) in ibmvfc_purge_requests()
1128 ibmvfc_fail_request(evt, error_code); in ibmvfc_purge_requests()
1513 struct ibmvfc_event *evt; in ibmvfc_get_event() local
1518 evt = list_entry(queue->free.next, struct ibmvfc_event, queue_list); in ibmvfc_get_event()
1519 atomic_set(&evt->free, 0); in ibmvfc_get_event()
1520 list_del(&evt->queue_list); in ibmvfc_get_event()
1522 return evt; in ibmvfc_get_event()
1533 static void ibmvfc_locked_done(struct ibmvfc_event *evt) in ibmvfc_locked_done() argument
1537 spin_lock_irqsave(evt->vhost->host->host_lock, flags); in ibmvfc_locked_done()
1538 evt->_done(evt); in ibmvfc_locked_done()
1539 spin_unlock_irqrestore(evt->vhost->host->host_lock, flags); in ibmvfc_locked_done()
1549 static void ibmvfc_init_event(struct ibmvfc_event *evt, in ibmvfc_init_event() argument
1552 evt->cmnd = NULL; in ibmvfc_init_event()
1553 evt->sync_iu = NULL; in ibmvfc_init_event()
1554 evt->eh_comp = NULL; in ibmvfc_init_event()
1555 evt->crq.format = format; in ibmvfc_init_event()
1557 evt->done = done; in ibmvfc_init_event()
1559 evt->_done = done; in ibmvfc_init_event()
1560 evt->done = ibmvfc_locked_done; in ibmvfc_init_event()
1562 evt->hwq = 0; in ibmvfc_init_event()
1595 struct ibmvfc_event *evt, in ibmvfc_map_sg_data() argument
1602 struct ibmvfc_fcp_cmd_iu *iu = ibmvfc_get_fcp_iu(evt->vhost, vfc_cmd); in ibmvfc_map_sg_data()
1632 if (!evt->ext_list) { in ibmvfc_map_sg_data()
1633 evt->ext_list = dma_pool_alloc(vhost->sg_pool, GFP_ATOMIC, in ibmvfc_map_sg_data()
1634 &evt->ext_list_token); in ibmvfc_map_sg_data()
1636 if (!evt->ext_list) { in ibmvfc_map_sg_data()
1644 ibmvfc_map_sg_list(scmd, sg_mapped, evt->ext_list); in ibmvfc_map_sg_data()
1646 data->va = cpu_to_be64(evt->ext_list_token); in ibmvfc_map_sg_data()
1660 struct ibmvfc_event *evt = from_timer(evt, t, timer); in ibmvfc_timeout() local
1661 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_timeout()
1662 dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt); in ibmvfc_timeout()
1674 static int ibmvfc_send_event(struct ibmvfc_event *evt, in ibmvfc_send_event() argument
1677 __be64 *crq_as_u64 = (__be64 *) &evt->crq; in ibmvfc_send_event()
1682 *evt->xfer_iu = evt->iu; in ibmvfc_send_event()
1683 if (evt->crq.format == IBMVFC_CMD_FORMAT) in ibmvfc_send_event()
1684 evt->xfer_iu->cmd.tag = cpu_to_be64((u64)evt); in ibmvfc_send_event()
1685 else if (evt->crq.format == IBMVFC_MAD_FORMAT) in ibmvfc_send_event()
1686 evt->xfer_iu->mad_common.tag = cpu_to_be64((u64)evt); in ibmvfc_send_event()
1690 timer_setup(&evt->timer, ibmvfc_timeout, 0); in ibmvfc_send_event()
1693 evt->timer.expires = jiffies + (timeout * HZ); in ibmvfc_send_event()
1694 add_timer(&evt->timer); in ibmvfc_send_event()
1697 spin_lock_irqsave(&evt->queue->l_lock, flags); in ibmvfc_send_event()
1698 list_add_tail(&evt->queue_list, &evt->queue->sent); in ibmvfc_send_event()
1699 atomic_set(&evt->active, 1); in ibmvfc_send_event()
1703 if (evt->queue->fmt == IBMVFC_SUB_CRQ_FMT) in ibmvfc_send_event()
1705 evt->queue->vios_cookie, in ibmvfc_send_event()
1714 atomic_set(&evt->active, 0); in ibmvfc_send_event()
1715 list_del(&evt->queue_list); in ibmvfc_send_event()
1716 spin_unlock_irqrestore(&evt->queue->l_lock, flags); in ibmvfc_send_event()
1717 del_timer(&evt->timer); in ibmvfc_send_event()
1727 if (evt->cmnd) in ibmvfc_send_event()
1728 scsi_dma_unmap(evt->cmnd); in ibmvfc_send_event()
1729 ibmvfc_free_event(evt); in ibmvfc_send_event()
1734 if (evt->cmnd) { in ibmvfc_send_event()
1735 evt->cmnd->result = DID_ERROR << 16; in ibmvfc_send_event()
1736 evt->done = ibmvfc_scsi_eh_done; in ibmvfc_send_event()
1738 evt->xfer_iu->mad_common.status = cpu_to_be16(IBMVFC_MAD_CRQ_ERROR); in ibmvfc_send_event()
1740 evt->done(evt); in ibmvfc_send_event()
1742 spin_unlock_irqrestore(&evt->queue->l_lock, flags); in ibmvfc_send_event()
1743 ibmvfc_trc_start(evt); in ibmvfc_send_event()
1754 static void ibmvfc_log_error(struct ibmvfc_event *evt) in ibmvfc_log_error() argument
1756 struct ibmvfc_cmd *vfc_cmd = &evt->xfer_iu->cmd; in ibmvfc_log_error()
1757 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_log_error()
1759 struct scsi_cmnd *cmnd = evt->cmnd; in ibmvfc_log_error()
1812 static void ibmvfc_scsi_done(struct ibmvfc_event *evt) in ibmvfc_scsi_done() argument
1814 struct ibmvfc_cmd *vfc_cmd = &evt->xfer_iu->cmd; in ibmvfc_scsi_done()
1815 struct ibmvfc_fcp_rsp *rsp = ibmvfc_get_fcp_rsp(evt->vhost, vfc_cmd); in ibmvfc_scsi_done()
1816 struct scsi_cmnd *cmnd = evt->cmnd; in ibmvfc_scsi_done()
1829 cmnd->result = ibmvfc_get_err_result(evt->vhost, vfc_cmd); in ibmvfc_scsi_done()
1844 ibmvfc_log_error(evt); in ibmvfc_scsi_done()
1855 ibmvfc_free_event(evt); in ibmvfc_scsi_done()
1888 static struct ibmvfc_cmd *ibmvfc_init_vfc_cmd(struct ibmvfc_event *evt, struct scsi_device *sdev) in ibmvfc_init_vfc_cmd() argument
1891 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_init_vfc_cmd()
1892 struct ibmvfc_cmd *vfc_cmd = &evt->iu.cmd; in ibmvfc_init_vfc_cmd()
1903 vfc_cmd->resp.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + offset); in ibmvfc_init_vfc_cmd()
1929 struct ibmvfc_event *evt; in ibmvfc_queuecommand() local
1945 evt = ibmvfc_get_event(&vhost->scsi_scrqs.scrqs[scsi_channel]); in ibmvfc_queuecommand()
1946 evt->hwq = hwq % vhost->scsi_scrqs.active_queues; in ibmvfc_queuecommand()
1948 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_queuecommand()
1950 ibmvfc_init_event(evt, ibmvfc_scsi_done, IBMVFC_CMD_FORMAT); in ibmvfc_queuecommand()
1951 evt->cmnd = cmnd; in ibmvfc_queuecommand()
1953 vfc_cmd = ibmvfc_init_vfc_cmd(evt, cmnd->device); in ibmvfc_queuecommand()
1964 vfc_cmd->correlation = cpu_to_be64((u64)evt); in ibmvfc_queuecommand()
1966 if (likely(!(rc = ibmvfc_map_sg_data(cmnd, evt, vfc_cmd, vhost->dev)))) in ibmvfc_queuecommand()
1967 return ibmvfc_send_event(evt, vhost, 0); in ibmvfc_queuecommand()
1969 ibmvfc_free_event(evt); in ibmvfc_queuecommand()
1987 static void ibmvfc_sync_completion(struct ibmvfc_event *evt) in ibmvfc_sync_completion() argument
1990 if (evt->sync_iu) in ibmvfc_sync_completion()
1991 *evt->sync_iu = *evt->xfer_iu; in ibmvfc_sync_completion()
1993 complete(&evt->comp); in ibmvfc_sync_completion()
2001 static void ibmvfc_bsg_timeout_done(struct ibmvfc_event *evt) in ibmvfc_bsg_timeout_done() argument
2003 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_bsg_timeout_done()
2005 ibmvfc_free_event(evt); in ibmvfc_bsg_timeout_done()
2021 struct ibmvfc_event *evt; in ibmvfc_bsg_timeout() local
2035 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_bsg_timeout()
2036 ibmvfc_init_event(evt, ibmvfc_bsg_timeout_done, IBMVFC_MAD_FORMAT); in ibmvfc_bsg_timeout()
2038 tmf = &evt->iu.tmf; in ibmvfc_bsg_timeout()
2046 rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_bsg_timeout()
2074 struct ibmvfc_event *evt; in ibmvfc_bsg_plogi() local
2093 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_bsg_plogi()
2094 ibmvfc_init_event(evt, ibmvfc_sync_completion, IBMVFC_MAD_FORMAT); in ibmvfc_bsg_plogi()
2095 plogi = &evt->iu.plogi; in ibmvfc_bsg_plogi()
2101 evt->sync_iu = &rsp_iu; in ibmvfc_bsg_plogi()
2102 init_completion(&evt->comp); in ibmvfc_bsg_plogi()
2104 rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_bsg_plogi()
2110 wait_for_completion(&evt->comp); in ibmvfc_bsg_plogi()
2116 ibmvfc_free_event(evt); in ibmvfc_bsg_plogi()
2135 struct ibmvfc_event *evt; in ibmvfc_bsg_request() local
2211 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_bsg_request()
2212 ibmvfc_init_event(evt, ibmvfc_sync_completion, IBMVFC_MAD_FORMAT); in ibmvfc_bsg_request()
2213 mad = &evt->iu.passthru; in ibmvfc_bsg_request()
2220 mad->cmd_ioba.va = cpu_to_be64(be64_to_cpu(evt->crq.ioba) + in ibmvfc_bsg_request()
2234 mad->iu.tag = cpu_to_be64((u64)evt); in ibmvfc_bsg_request()
2237 evt->sync_iu = &rsp_iu; in ibmvfc_bsg_request()
2238 init_completion(&evt->comp); in ibmvfc_bsg_request()
2239 rc = ibmvfc_send_event(evt, vhost, 0); in ibmvfc_bsg_request()
2247 wait_for_completion(&evt->comp); in ibmvfc_bsg_request()
2255 ibmvfc_free_event(evt); in ibmvfc_bsg_request()
2285 struct ibmvfc_event *evt = NULL; in ibmvfc_reset_device() local
2296 evt = ibmvfc_get_event(&vhost->scsi_scrqs.scrqs[0]); in ibmvfc_reset_device()
2298 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_reset_device()
2300 ibmvfc_init_event(evt, ibmvfc_sync_completion, IBMVFC_CMD_FORMAT); in ibmvfc_reset_device()
2301 tmf = ibmvfc_init_vfc_cmd(evt, sdev); in ibmvfc_reset_device()
2308 evt->sync_iu = &rsp_iu; in ibmvfc_reset_device()
2310 init_completion(&evt->comp); in ibmvfc_reset_device()
2311 rsp_rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_reset_device()
2322 wait_for_completion(&evt->comp); in ibmvfc_reset_device()
2341 ibmvfc_free_event(evt); in ibmvfc_reset_device()
2354 static int ibmvfc_match_rport(struct ibmvfc_event *evt, void *rport) in ibmvfc_match_rport() argument
2358 if (evt->cmnd) { in ibmvfc_match_rport()
2359 cmd_rport = starget_to_rport(scsi_target(evt->cmnd->device)); in ibmvfc_match_rport()
2374 static int ibmvfc_match_target(struct ibmvfc_event *evt, void *device) in ibmvfc_match_target() argument
2376 if (evt->cmnd && scsi_target(evt->cmnd->device) == device) in ibmvfc_match_target()
2389 static int ibmvfc_match_lun(struct ibmvfc_event *evt, void *device) in ibmvfc_match_lun() argument
2391 if (evt->cmnd && evt->cmnd->device == device) in ibmvfc_match_lun()
2403 static bool ibmvfc_event_is_free(struct ibmvfc_event *evt) in ibmvfc_event_is_free() argument
2407 list_for_each_entry(loop_evt, &evt->queue->free, queue_list) in ibmvfc_event_is_free()
2408 if (loop_evt == evt) in ibmvfc_event_is_free()
2426 struct ibmvfc_event *evt; in ibmvfc_wait_for_ops() local
2448 evt = &queues[q_index].evt_pool.events[i]; in ibmvfc_wait_for_ops()
2449 if (!ibmvfc_event_is_free(evt)) { in ibmvfc_wait_for_ops()
2450 if (match(evt, device)) { in ibmvfc_wait_for_ops()
2451 evt->eh_comp = ∁ in ibmvfc_wait_for_ops()
2469 evt = &queues[q_index].evt_pool.events[i]; in ibmvfc_wait_for_ops()
2470 if (!ibmvfc_event_is_free(evt)) { in ibmvfc_wait_for_ops()
2471 if (match(evt, device)) { in ibmvfc_wait_for_ops()
2472 evt->eh_comp = NULL; in ibmvfc_wait_for_ops()
2499 struct ibmvfc_event *evt; in ibmvfc_init_tmf() local
2502 evt = ibmvfc_get_event(queue); in ibmvfc_init_tmf()
2503 ibmvfc_init_event(evt, ibmvfc_sync_completion, IBMVFC_MAD_FORMAT); in ibmvfc_init_tmf()
2505 tmf = &evt->iu.tmf; in ibmvfc_init_tmf()
2526 init_completion(&evt->comp); in ibmvfc_init_tmf()
2528 return evt; in ibmvfc_init_tmf()
2534 struct ibmvfc_event *evt, *found_evt, *temp; in ibmvfc_cancel_all_mq() local
2549 list_for_each_entry(evt, &queues[i].sent, queue_list) { in ibmvfc_cancel_all_mq()
2550 if (evt->cmnd && evt->cmnd->device == sdev) { in ibmvfc_cancel_all_mq()
2551 found_evt = evt; in ibmvfc_cancel_all_mq()
2558 evt = ibmvfc_init_tmf(&queues[i], sdev, type); in ibmvfc_cancel_all_mq()
2559 evt->sync_iu = &queues[i].cancel_rsp; in ibmvfc_cancel_all_mq()
2560 ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_cancel_all_mq()
2561 list_add_tail(&evt->cancel, &cancelq); in ibmvfc_cancel_all_mq()
2576 list_for_each_entry_safe(evt, temp, &cancelq, cancel) { in ibmvfc_cancel_all_mq()
2577 wait_for_completion(&evt->comp); in ibmvfc_cancel_all_mq()
2578 status = be16_to_cpu(evt->queue->cancel_rsp.mad_common.status); in ibmvfc_cancel_all_mq()
2579 list_del(&evt->cancel); in ibmvfc_cancel_all_mq()
2580 ibmvfc_free_event(evt); in ibmvfc_cancel_all_mq()
2609 struct ibmvfc_event *evt, *found_evt; in ibmvfc_cancel_all_sq() local
2619 list_for_each_entry(evt, &vhost->crq.sent, queue_list) { in ibmvfc_cancel_all_sq()
2620 if (evt->cmnd && evt->cmnd->device == sdev) { in ibmvfc_cancel_all_sq()
2621 found_evt = evt; in ibmvfc_cancel_all_sq()
2635 evt = ibmvfc_init_tmf(&vhost->crq, sdev, type); in ibmvfc_cancel_all_sq()
2636 evt->sync_iu = &rsp; in ibmvfc_cancel_all_sq()
2637 rsp_rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_cancel_all_sq()
2652 wait_for_completion(&evt->comp); in ibmvfc_cancel_all_sq()
2655 ibmvfc_free_event(evt); in ibmvfc_cancel_all_sq()
2704 static int ibmvfc_match_key(struct ibmvfc_event *evt, void *key) in ibmvfc_match_key() argument
2708 if (evt->crq.format == IBMVFC_CMD_FORMAT && in ibmvfc_match_key()
2709 be32_to_cpu(evt->iu.cmd.cancel_key) == cancel_key) in ibmvfc_match_key()
2722 static int ibmvfc_match_evt(struct ibmvfc_event *evt, void *match) in ibmvfc_match_evt() argument
2724 if (evt == match) in ibmvfc_match_evt()
2744 struct ibmvfc_event *evt, *found_evt; in ibmvfc_abort_task_set() local
2755 list_for_each_entry(evt, &vhost->crq.sent, queue_list) { in ibmvfc_abort_task_set()
2756 if (evt->cmnd && evt->cmnd->device == sdev) { in ibmvfc_abort_task_set()
2757 found_evt = evt; in ibmvfc_abort_task_set()
2771 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_abort_task_set()
2772 ibmvfc_init_event(evt, ibmvfc_sync_completion, IBMVFC_CMD_FORMAT); in ibmvfc_abort_task_set()
2773 tmf = ibmvfc_init_vfc_cmd(evt, sdev); in ibmvfc_abort_task_set()
2780 evt->sync_iu = &rsp_iu; in ibmvfc_abort_task_set()
2782 tmf->correlation = cpu_to_be64((u64)evt); in ibmvfc_abort_task_set()
2784 init_completion(&evt->comp); in ibmvfc_abort_task_set()
2785 rsp_rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_abort_task_set()
2796 timeout = wait_for_completion_timeout(&evt->comp, timeout); in ibmvfc_abort_task_set()
2815 rc = ibmvfc_wait_for_ops(vhost, evt, ibmvfc_match_evt); in ibmvfc_abort_task_set()
2845 ibmvfc_free_event(evt); in ibmvfc_abort_task_set()
3208 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba); in ibmvfc_handle_crq() local
3264 if (unlikely(!ibmvfc_valid_event(&vhost->crq.evt_pool, evt))) { in ibmvfc_handle_crq()
3270 if (unlikely(atomic_dec_if_positive(&evt->active))) { in ibmvfc_handle_crq()
3276 spin_lock(&evt->queue->l_lock); in ibmvfc_handle_crq()
3277 list_move_tail(&evt->queue_list, evt_doneq); in ibmvfc_handle_crq()
3278 spin_unlock(&evt->queue->l_lock); in ibmvfc_handle_crq()
3710 struct ibmvfc_event *evt, *temp; in ibmvfc_tasklet() local
3750 list_for_each_entry_safe(evt, temp, &evt_doneq, queue_list) { in ibmvfc_tasklet()
3751 del_timer(&evt->timer); in ibmvfc_tasklet()
3752 list_del(&evt->queue_list); in ibmvfc_tasklet()
3753 ibmvfc_trc_end(evt); in ibmvfc_tasklet()
3754 evt->done(evt); in ibmvfc_tasklet()
3781 struct ibmvfc_event *evt = (struct ibmvfc_event *)be64_to_cpu(crq->ioba); in ibmvfc_handle_scrq() local
3797 if (unlikely(!ibmvfc_valid_event(&evt->queue->evt_pool, evt))) { in ibmvfc_handle_scrq()
3803 if (unlikely(atomic_dec_if_positive(&evt->active))) { in ibmvfc_handle_scrq()
3809 spin_lock(&evt->queue->l_lock); in ibmvfc_handle_scrq()
3810 list_move_tail(&evt->queue_list, evt_doneq); in ibmvfc_handle_scrq()
3811 spin_unlock(&evt->queue->l_lock); in ibmvfc_handle_scrq()
3832 struct ibmvfc_event *evt, *temp; in ibmvfc_drain_sub_crq() local
3856 list_for_each_entry_safe(evt, temp, &evt_doneq, queue_list) { in ibmvfc_drain_sub_crq()
3857 del_timer(&evt->timer); in ibmvfc_drain_sub_crq()
3858 list_del(&evt->queue_list); in ibmvfc_drain_sub_crq()
3859 ibmvfc_trc_end(evt); in ibmvfc_drain_sub_crq()
3860 evt->done(evt); in ibmvfc_drain_sub_crq()
3947 static void ibmvfc_tgt_prli_done(struct ibmvfc_event *evt) in ibmvfc_tgt_prli_done() argument
3949 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_prli_done()
3950 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_prli_done()
3951 struct ibmvfc_process_login *rsp = &evt->xfer_iu->prli; in ibmvfc_tgt_prli_done()
4007 ibmvfc_free_event(evt); in ibmvfc_tgt_prli_done()
4020 struct ibmvfc_event *evt; in ibmvfc_tgt_send_prli() local
4026 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_tgt_send_prli()
4028 ibmvfc_init_event(evt, ibmvfc_tgt_prli_done, IBMVFC_MAD_FORMAT); in ibmvfc_tgt_send_prli()
4029 evt->tgt = tgt; in ibmvfc_tgt_send_prli()
4030 prli = &evt->iu.prli; in ibmvfc_tgt_send_prli()
4051 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_send_prli()
4064 static void ibmvfc_tgt_plogi_done(struct ibmvfc_event *evt) in ibmvfc_tgt_plogi_done() argument
4066 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_plogi_done()
4067 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_plogi_done()
4068 struct ibmvfc_port_login *rsp = &evt->xfer_iu->plogi; in ibmvfc_tgt_plogi_done()
4113 ibmvfc_free_event(evt); in ibmvfc_tgt_plogi_done()
4126 struct ibmvfc_event *evt; in ibmvfc_tgt_send_plogi() local
4133 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_tgt_send_plogi()
4136 ibmvfc_init_event(evt, ibmvfc_tgt_plogi_done, IBMVFC_MAD_FORMAT); in ibmvfc_tgt_send_plogi()
4137 evt->tgt = tgt; in ibmvfc_tgt_send_plogi()
4138 plogi = &evt->iu.plogi; in ibmvfc_tgt_send_plogi()
4150 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_send_plogi()
4163 static void ibmvfc_tgt_implicit_logout_done(struct ibmvfc_event *evt) in ibmvfc_tgt_implicit_logout_done() argument
4165 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_implicit_logout_done()
4166 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_implicit_logout_done()
4167 struct ibmvfc_implicit_logout *rsp = &evt->xfer_iu->implicit_logout; in ibmvfc_tgt_implicit_logout_done()
4171 ibmvfc_free_event(evt); in ibmvfc_tgt_implicit_logout_done()
4206 struct ibmvfc_event *evt; in __ibmvfc_tgt_get_implicit_logout_evt() local
4209 evt = ibmvfc_get_event(&vhost->crq); in __ibmvfc_tgt_get_implicit_logout_evt()
4210 ibmvfc_init_event(evt, done, IBMVFC_MAD_FORMAT); in __ibmvfc_tgt_get_implicit_logout_evt()
4211 evt->tgt = tgt; in __ibmvfc_tgt_get_implicit_logout_evt()
4212 mad = &evt->iu.implicit_logout; in __ibmvfc_tgt_get_implicit_logout_evt()
4218 return evt; in __ibmvfc_tgt_get_implicit_logout_evt()
4229 struct ibmvfc_event *evt; in ibmvfc_tgt_implicit_logout() local
4235 evt = __ibmvfc_tgt_get_implicit_logout_evt(tgt, in ibmvfc_tgt_implicit_logout()
4239 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_implicit_logout()
4252 static void ibmvfc_tgt_implicit_logout_and_del_done(struct ibmvfc_event *evt) in ibmvfc_tgt_implicit_logout_and_del_done() argument
4254 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_implicit_logout_and_del_done()
4255 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_implicit_logout_and_del_done()
4256 struct ibmvfc_passthru_mad *mad = &evt->xfer_iu->passthru; in ibmvfc_tgt_implicit_logout_and_del_done()
4260 ibmvfc_free_event(evt); in ibmvfc_tgt_implicit_logout_and_del_done()
4287 struct ibmvfc_event *evt; in ibmvfc_tgt_implicit_logout_and_del() local
4298 evt = __ibmvfc_tgt_get_implicit_logout_evt(tgt, in ibmvfc_tgt_implicit_logout_and_del()
4302 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_implicit_logout_and_del()
4315 static void ibmvfc_tgt_move_login_done(struct ibmvfc_event *evt) in ibmvfc_tgt_move_login_done() argument
4317 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_move_login_done()
4318 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_move_login_done()
4319 struct ibmvfc_move_login *rsp = &evt->xfer_iu->move_login; in ibmvfc_tgt_move_login_done()
4355 ibmvfc_free_event(evt); in ibmvfc_tgt_move_login_done()
4369 struct ibmvfc_event *evt; in ibmvfc_tgt_move_login() local
4375 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_tgt_move_login()
4378 ibmvfc_init_event(evt, ibmvfc_tgt_move_login_done, IBMVFC_MAD_FORMAT); in ibmvfc_tgt_move_login()
4379 evt->tgt = tgt; in ibmvfc_tgt_move_login()
4380 move = &evt->iu.move_login; in ibmvfc_tgt_move_login()
4391 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_move_login()
4424 static void ibmvfc_tgt_adisc_done(struct ibmvfc_event *evt) in ibmvfc_tgt_adisc_done() argument
4426 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_done()
4427 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_adisc_done()
4428 struct ibmvfc_passthru_mad *mad = &evt->xfer_iu->passthru; in ibmvfc_tgt_adisc_done()
4458 ibmvfc_free_event(evt); in ibmvfc_tgt_adisc_done()
4467 static void ibmvfc_init_passthru(struct ibmvfc_event *evt) in ibmvfc_init_passthru() argument
4469 struct ibmvfc_passthru_mad *mad = &evt->iu.passthru; in ibmvfc_init_passthru()
4475 mad->cmd_ioba.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) + in ibmvfc_init_passthru()
4480 mad->iu.cmd.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) + in ibmvfc_init_passthru()
4484 mad->iu.rsp.va = cpu_to_be64((u64)be64_to_cpu(evt->crq.ioba) + in ibmvfc_init_passthru()
4500 static void ibmvfc_tgt_adisc_cancel_done(struct ibmvfc_event *evt) in ibmvfc_tgt_adisc_cancel_done() argument
4502 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_adisc_cancel_done()
4503 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_cancel_done()
4507 ibmvfc_free_event(evt); in ibmvfc_tgt_adisc_cancel_done()
4524 struct ibmvfc_event *evt; in ibmvfc_adisc_timeout() local
4541 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_adisc_timeout()
4542 ibmvfc_init_event(evt, ibmvfc_tgt_adisc_cancel_done, IBMVFC_MAD_FORMAT); in ibmvfc_adisc_timeout()
4544 evt->tgt = tgt; in ibmvfc_adisc_timeout()
4545 tmf = &evt->iu.tmf; in ibmvfc_adisc_timeout()
4558 rc = ibmvfc_send_event(evt, vhost, default_timeout); in ibmvfc_adisc_timeout()
4585 struct ibmvfc_event *evt; in ibmvfc_tgt_adisc() local
4591 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_tgt_adisc()
4593 ibmvfc_init_event(evt, ibmvfc_tgt_adisc_done, IBMVFC_MAD_FORMAT); in ibmvfc_tgt_adisc()
4594 evt->tgt = tgt; in ibmvfc_tgt_adisc()
4596 ibmvfc_init_passthru(evt); in ibmvfc_tgt_adisc()
4597 mad = &evt->iu.passthru; in ibmvfc_tgt_adisc()
4617 if (ibmvfc_send_event(evt, vhost, IBMVFC_ADISC_PLUS_CANCEL_TIMEOUT)) { in ibmvfc_tgt_adisc()
4631 static void ibmvfc_tgt_query_target_done(struct ibmvfc_event *evt) in ibmvfc_tgt_query_target_done() argument
4633 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_query_target_done()
4634 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_tgt_query_target_done()
4635 struct ibmvfc_query_tgt *rsp = &evt->xfer_iu->query_tgt; in ibmvfc_tgt_query_target_done()
4675 ibmvfc_free_event(evt); in ibmvfc_tgt_query_target_done()
4688 struct ibmvfc_event *evt; in ibmvfc_tgt_query_target() local
4694 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_tgt_query_target()
4696 evt->tgt = tgt; in ibmvfc_tgt_query_target()
4697 ibmvfc_init_event(evt, ibmvfc_tgt_query_target_done, IBMVFC_MAD_FORMAT); in ibmvfc_tgt_query_target()
4698 query_tgt = &evt->iu.query_tgt; in ibmvfc_tgt_query_target()
4706 if (ibmvfc_send_event(evt, vhost, default_timeout)) { in ibmvfc_tgt_query_target()
4827 static void ibmvfc_discover_targets_done(struct ibmvfc_event *evt) in ibmvfc_discover_targets_done() argument
4829 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_discover_targets_done()
4830 struct ibmvfc_discover_targets *rsp = &evt->xfer_iu->discover_targets; in ibmvfc_discover_targets_done()
4854 ibmvfc_free_event(evt); in ibmvfc_discover_targets_done()
4866 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_discover_targets() local
4868 ibmvfc_init_event(evt, ibmvfc_discover_targets_done, IBMVFC_MAD_FORMAT); in ibmvfc_discover_targets()
4869 mad = &evt->iu.discover_targets; in ibmvfc_discover_targets()
4880 if (!ibmvfc_send_event(evt, vhost, default_timeout)) in ibmvfc_discover_targets()
4886 static void ibmvfc_channel_setup_done(struct ibmvfc_event *evt) in ibmvfc_channel_setup_done() argument
4888 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_channel_setup_done()
4891 u32 mad_status = be16_to_cpu(evt->xfer_iu->channel_setup.common.status); in ibmvfc_channel_setup_done()
4895 ibmvfc_free_event(evt); in ibmvfc_channel_setup_done()
4940 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_channel_setup() local
4955 ibmvfc_init_event(evt, ibmvfc_channel_setup_done, IBMVFC_MAD_FORMAT); in ibmvfc_channel_setup()
4956 mad = &evt->iu.channel_setup; in ibmvfc_channel_setup()
4966 if (!ibmvfc_send_event(evt, vhost, default_timeout)) in ibmvfc_channel_setup()
4972 static void ibmvfc_channel_enquiry_done(struct ibmvfc_event *evt) in ibmvfc_channel_enquiry_done() argument
4974 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_channel_enquiry_done()
4975 struct ibmvfc_channel_enquiry *rsp = &evt->xfer_iu->channel_enquiry; in ibmvfc_channel_enquiry_done()
4983 ibmvfc_free_event(evt); in ibmvfc_channel_enquiry_done()
4990 ibmvfc_free_event(evt); in ibmvfc_channel_enquiry_done()
4996 ibmvfc_free_event(evt); in ibmvfc_channel_enquiry_done()
5006 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_channel_enquiry() local
5008 ibmvfc_init_event(evt, ibmvfc_channel_enquiry_done, IBMVFC_MAD_FORMAT); in ibmvfc_channel_enquiry()
5009 mad = &evt->iu.channel_enquiry; in ibmvfc_channel_enquiry()
5022 if (!ibmvfc_send_event(evt, vhost, default_timeout)) in ibmvfc_channel_enquiry()
5033 static void ibmvfc_npiv_login_done(struct ibmvfc_event *evt) in ibmvfc_npiv_login_done() argument
5035 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_npiv_login_done()
5036 u32 mad_status = be16_to_cpu(evt->xfer_iu->npiv_login.common.status); in ibmvfc_npiv_login_done()
5043 ibmvfc_free_event(evt); in ibmvfc_npiv_login_done()
5053 ibmvfc_free_event(evt); in ibmvfc_npiv_login_done()
5059 ibmvfc_free_event(evt); in ibmvfc_npiv_login_done()
5064 ibmvfc_free_event(evt); in ibmvfc_npiv_login_done()
5127 struct ibmvfc_event *evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_npiv_login() local
5131 ibmvfc_init_event(evt, ibmvfc_npiv_login_done, IBMVFC_MAD_FORMAT); in ibmvfc_npiv_login()
5134 mad = &evt->iu.npiv_login; in ibmvfc_npiv_login()
5144 if (!ibmvfc_send_event(evt, vhost, default_timeout)) in ibmvfc_npiv_login()
5155 static void ibmvfc_npiv_logout_done(struct ibmvfc_event *evt) in ibmvfc_npiv_logout_done() argument
5157 struct ibmvfc_host *vhost = evt->vhost; in ibmvfc_npiv_logout_done()
5158 u32 mad_status = be16_to_cpu(evt->xfer_iu->npiv_logout.common.status); in ibmvfc_npiv_logout_done()
5160 ibmvfc_free_event(evt); in ibmvfc_npiv_logout_done()
5190 struct ibmvfc_event *evt; in ibmvfc_npiv_logout() local
5192 evt = ibmvfc_get_event(&vhost->crq); in ibmvfc_npiv_logout()
5193 ibmvfc_init_event(evt, ibmvfc_npiv_logout_done, IBMVFC_MAD_FORMAT); in ibmvfc_npiv_logout()
5195 mad = &evt->iu.npiv_logout; in ibmvfc_npiv_logout()
5203 if (!ibmvfc_send_event(evt, vhost, default_timeout)) in ibmvfc_npiv_logout()