Lines Matching refs:ioim

211 static bfa_boolean_t	bfa_ioim_send_ioreq(struct bfa_ioim_s *ioim);
212 static bfa_boolean_t bfa_ioim_sgpg_alloc(struct bfa_ioim_s *ioim);
213 static bfa_boolean_t bfa_ioim_send_abort(struct bfa_ioim_s *ioim);
214 static void bfa_ioim_notify_cleanup(struct bfa_ioim_s *ioim);
220 static bfa_boolean_t bfa_ioim_is_abortable(struct bfa_ioim_s *ioim);
225 static void bfa_ioim_sm_uninit(struct bfa_ioim_s *ioim,
227 static void bfa_ioim_sm_sgalloc(struct bfa_ioim_s *ioim,
229 static void bfa_ioim_sm_active(struct bfa_ioim_s *ioim,
231 static void bfa_ioim_sm_abort(struct bfa_ioim_s *ioim,
233 static void bfa_ioim_sm_cleanup(struct bfa_ioim_s *ioim,
235 static void bfa_ioim_sm_qfull(struct bfa_ioim_s *ioim,
237 static void bfa_ioim_sm_abort_qfull(struct bfa_ioim_s *ioim,
239 static void bfa_ioim_sm_cleanup_qfull(struct bfa_ioim_s *ioim,
241 static void bfa_ioim_sm_hcb(struct bfa_ioim_s *ioim,
243 static void bfa_ioim_sm_hcb_free(struct bfa_ioim_s *ioim,
245 static void bfa_ioim_sm_resfree(struct bfa_ioim_s *ioim,
247 static void bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim,
440 bfa_ioim_profile_comp(struct bfa_ioim_s *ioim) in bfa_ioim_profile_comp() argument
443 &(ioim->itnim->ioprofile.io_latency); in bfa_ioim_profile_comp()
446 val = (u32)(jiffies - ioim->start_time); in bfa_ioim_profile_comp()
447 idx = bfa_ioim_get_index(scsi_bufflen((struct scsi_cmnd *)ioim->dio)); in bfa_ioim_profile_comp()
448 bfa_itnim_ioprofile_update(ioim->itnim, idx); in bfa_ioim_profile_comp()
457 bfa_ioim_profile_start(struct bfa_ioim_s *ioim) in bfa_ioim_profile_start() argument
459 ioim->start_time = jiffies; in bfa_ioim_profile_start()
968 struct bfa_ioim_s *ioim; in bfa_itnim_iocdisable_cleanup() local
977 ioim = (struct bfa_ioim_s *) qe; in bfa_itnim_iocdisable_cleanup()
978 bfa_ioim_iocdisable(ioim); in bfa_itnim_iocdisable_cleanup()
985 ioim = (struct bfa_ioim_s *) qe; in bfa_itnim_iocdisable_cleanup()
986 bfa_ioim_tov(ioim); in bfa_itnim_iocdisable_cleanup()
990 ioim = (struct bfa_ioim_s *) qe; in bfa_itnim_iocdisable_cleanup()
991 bfa_ioim_iocdisable(ioim); in bfa_itnim_iocdisable_cleanup()
1013 struct bfa_ioim_s *ioim; in bfa_itnim_cleanup() local
1020 ioim = (struct bfa_ioim_s *) qe; in bfa_itnim_cleanup()
1026 list_del(&ioim->qe); in bfa_itnim_cleanup()
1027 list_add_tail(&ioim->qe, &itnim->io_cleanup_q); in bfa_itnim_cleanup()
1030 bfa_ioim_cleanup(ioim); in bfa_itnim_cleanup()
1210 struct bfa_ioim_s *ioim; in bfa_itnim_delayed_comp() local
1214 ioim = (struct bfa_ioim_s *)qe; in bfa_itnim_delayed_comp()
1215 bfa_ioim_delayed_comp(ioim, iotov); in bfa_itnim_delayed_comp()
1225 struct bfa_ioim_s *ioim; in bfa_itnim_iotov_online() local
1238 bfa_q_deq(&itnim->pending_q, &ioim); in bfa_itnim_iotov_online()
1239 list_add_tail(&ioim->qe, &itnim->io_q); in bfa_itnim_iotov_online()
1240 bfa_ioim_start(ioim); in bfa_itnim_iotov_online()
1250 struct bfa_ioim_s *ioim; in bfa_itnim_iotov_cleanup() local
1261 bfa_q_deq(&itnim->pending_q, &ioim); in bfa_itnim_iotov_cleanup()
1262 list_add_tail(&ioim->qe, &ioim->fcpim->ioim_comp_q); in bfa_itnim_iotov_cleanup()
1263 bfa_ioim_tov(ioim); in bfa_itnim_iotov_cleanup()
1505 bfa_ioim_sm_uninit(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_uninit() argument
1509 if (!bfa_itnim_is_online(ioim->itnim)) { in bfa_ioim_sm_uninit()
1510 if (!bfa_itnim_hold_io(ioim->itnim)) { in bfa_ioim_sm_uninit()
1511 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_uninit()
1512 list_del(&ioim->qe); in bfa_ioim_sm_uninit()
1513 list_add_tail(&ioim->qe, in bfa_ioim_sm_uninit()
1514 &ioim->fcpim->ioim_comp_q); in bfa_ioim_sm_uninit()
1515 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_uninit()
1516 __bfa_cb_ioim_pathtov, ioim); in bfa_ioim_sm_uninit()
1518 list_del(&ioim->qe); in bfa_ioim_sm_uninit()
1519 list_add_tail(&ioim->qe, in bfa_ioim_sm_uninit()
1520 &ioim->itnim->pending_q); in bfa_ioim_sm_uninit()
1525 if (ioim->nsges > BFI_SGE_INLINE) { in bfa_ioim_sm_uninit()
1526 if (!bfa_ioim_sgpg_alloc(ioim)) { in bfa_ioim_sm_uninit()
1527 bfa_sm_set_state(ioim, bfa_ioim_sm_sgalloc); in bfa_ioim_sm_uninit()
1532 if (!bfa_ioim_send_ioreq(ioim)) { in bfa_ioim_sm_uninit()
1533 bfa_sm_set_state(ioim, bfa_ioim_sm_qfull); in bfa_ioim_sm_uninit()
1537 bfa_sm_set_state(ioim, bfa_ioim_sm_active); in bfa_ioim_sm_uninit()
1541 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_uninit()
1542 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_uninit()
1543 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_uninit()
1544 __bfa_cb_ioim_pathtov, ioim); in bfa_ioim_sm_uninit()
1552 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_uninit()
1553 WARN_ON(!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim)); in bfa_ioim_sm_uninit()
1554 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_uninit()
1555 __bfa_cb_ioim_abort, ioim); in bfa_ioim_sm_uninit()
1559 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_uninit()
1567 bfa_ioim_sm_sgalloc(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_sgalloc() argument
1569 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_sgalloc()
1570 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_sgalloc()
1574 if (!bfa_ioim_send_ioreq(ioim)) { in bfa_ioim_sm_sgalloc()
1575 bfa_sm_set_state(ioim, bfa_ioim_sm_qfull); in bfa_ioim_sm_sgalloc()
1578 bfa_sm_set_state(ioim, bfa_ioim_sm_active); in bfa_ioim_sm_sgalloc()
1582 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_sgalloc()
1583 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe); in bfa_ioim_sm_sgalloc()
1584 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_sgalloc()
1585 ioim); in bfa_ioim_sm_sgalloc()
1586 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_sgalloc()
1590 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_sgalloc()
1591 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe); in bfa_ioim_sm_sgalloc()
1592 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_sgalloc()
1593 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_sgalloc()
1594 ioim); in bfa_ioim_sm_sgalloc()
1598 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_sgalloc()
1599 bfa_sgpg_wcancel(ioim->bfa, &ioim->iosp->sgpg_wqe); in bfa_ioim_sm_sgalloc()
1600 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_sgalloc()
1601 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_sgalloc()
1602 ioim); in bfa_ioim_sm_sgalloc()
1606 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_sgalloc()
1614 bfa_ioim_sm_active(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_active() argument
1618 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_active()
1619 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_active()
1620 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_active()
1621 __bfa_cb_ioim_good_comp, ioim); in bfa_ioim_sm_active()
1625 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_active()
1626 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_active()
1627 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_comp, in bfa_ioim_sm_active()
1628 ioim); in bfa_ioim_sm_active()
1632 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_active()
1633 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_active()
1634 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_comp, in bfa_ioim_sm_active()
1635 ioim); in bfa_ioim_sm_active()
1639 ioim->iosp->abort_explicit = BFA_TRUE; in bfa_ioim_sm_active()
1640 ioim->io_cbfn = __bfa_cb_ioim_abort; in bfa_ioim_sm_active()
1642 if (bfa_ioim_send_abort(ioim)) in bfa_ioim_sm_active()
1643 bfa_sm_set_state(ioim, bfa_ioim_sm_abort); in bfa_ioim_sm_active()
1645 bfa_sm_set_state(ioim, bfa_ioim_sm_abort_qfull); in bfa_ioim_sm_active()
1646 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_active()
1647 bfa_reqq_wait(ioim->bfa, ioim->reqq, in bfa_ioim_sm_active()
1648 &ioim->iosp->reqq_wait); in bfa_ioim_sm_active()
1653 ioim->iosp->abort_explicit = BFA_FALSE; in bfa_ioim_sm_active()
1654 ioim->io_cbfn = __bfa_cb_ioim_failed; in bfa_ioim_sm_active()
1656 if (bfa_ioim_send_abort(ioim)) in bfa_ioim_sm_active()
1657 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup); in bfa_ioim_sm_active()
1659 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup_qfull); in bfa_ioim_sm_active()
1660 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_active()
1661 bfa_reqq_wait(ioim->bfa, ioim->reqq, in bfa_ioim_sm_active()
1662 &ioim->iosp->reqq_wait); in bfa_ioim_sm_active()
1667 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_active()
1668 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_active()
1669 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_active()
1670 ioim); in bfa_ioim_sm_active()
1674 if (bfa_ioim_maxretry_reached(ioim)) { in bfa_ioim_sm_active()
1676 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_active()
1677 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_active()
1678 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_active()
1679 __bfa_cb_ioim_failed, ioim); in bfa_ioim_sm_active()
1683 bfa_sm_set_state(ioim, bfa_ioim_sm_cmnd_retry); in bfa_ioim_sm_active()
1687 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_active()
1695 bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_cmnd_retry() argument
1700 bfa_ioim_update_iotag(ioim); in bfa_ioim_sm_cmnd_retry()
1701 if (!bfa_ioim_send_ioreq(ioim)) { in bfa_ioim_sm_cmnd_retry()
1702 bfa_sm_set_state(ioim, bfa_ioim_sm_qfull); in bfa_ioim_sm_cmnd_retry()
1705 bfa_sm_set_state(ioim, bfa_ioim_sm_active); in bfa_ioim_sm_cmnd_retry()
1709 ioim->iosp->abort_explicit = BFA_FALSE; in bfa_ioim_sm_cmnd_retry()
1710 ioim->io_cbfn = __bfa_cb_ioim_failed; in bfa_ioim_sm_cmnd_retry()
1712 if (bfa_ioim_send_abort(ioim)) in bfa_ioim_sm_cmnd_retry()
1713 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup); in bfa_ioim_sm_cmnd_retry()
1715 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup_qfull); in bfa_ioim_sm_cmnd_retry()
1716 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_cmnd_retry()
1717 bfa_reqq_wait(ioim->bfa, ioim->reqq, in bfa_ioim_sm_cmnd_retry()
1718 &ioim->iosp->reqq_wait); in bfa_ioim_sm_cmnd_retry()
1723 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cmnd_retry()
1724 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_cmnd_retry()
1725 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, in bfa_ioim_sm_cmnd_retry()
1726 __bfa_cb_ioim_failed, ioim); in bfa_ioim_sm_cmnd_retry()
1733 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_cmnd_retry()
1734 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_cmnd_retry()
1735 ioim); in bfa_ioim_sm_cmnd_retry()
1739 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_cmnd_retry()
1747 bfa_ioim_sm_abort(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_abort() argument
1749 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_abort()
1750 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_abort()
1760 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_abort()
1761 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_abort()
1762 ioim); in bfa_ioim_sm_abort()
1766 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_abort()
1767 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort()
1768 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_abort()
1769 ioim); in bfa_ioim_sm_abort()
1773 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_abort()
1774 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort()
1775 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_abort()
1776 ioim); in bfa_ioim_sm_abort()
1780 WARN_ON(ioim->iosp->abort_explicit != BFA_TRUE); in bfa_ioim_sm_abort()
1781 ioim->iosp->abort_explicit = BFA_FALSE; in bfa_ioim_sm_abort()
1783 if (bfa_ioim_send_abort(ioim)) in bfa_ioim_sm_abort()
1784 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup); in bfa_ioim_sm_abort()
1786 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup_qfull); in bfa_ioim_sm_abort()
1787 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_abort()
1788 bfa_reqq_wait(ioim->bfa, ioim->reqq, in bfa_ioim_sm_abort()
1789 &ioim->iosp->reqq_wait); in bfa_ioim_sm_abort()
1794 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_abort()
1795 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort()
1796 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_abort()
1797 ioim); in bfa_ioim_sm_abort()
1801 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_abort()
1810 bfa_ioim_sm_cleanup(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_cleanup() argument
1812 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_cleanup()
1813 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_cleanup()
1826 ioim->io_cbfn = __bfa_cb_ioim_abort; in bfa_ioim_sm_cleanup()
1830 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_cleanup()
1831 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_sm_cleanup()
1832 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_cleanup()
1836 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cleanup()
1837 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_sm_cleanup()
1838 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_cleanup()
1842 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cleanup()
1843 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_sm_cleanup()
1844 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_cleanup()
1848 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cleanup()
1849 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_cleanup()
1850 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_cleanup()
1851 ioim); in bfa_ioim_sm_cleanup()
1862 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_cleanup()
1870 bfa_ioim_sm_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_qfull() argument
1872 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_qfull()
1873 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_qfull()
1877 bfa_sm_set_state(ioim, bfa_ioim_sm_active); in bfa_ioim_sm_qfull()
1878 bfa_ioim_send_ioreq(ioim); in bfa_ioim_sm_qfull()
1882 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_qfull()
1883 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_qfull()
1884 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_qfull()
1885 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_qfull()
1886 ioim); in bfa_ioim_sm_qfull()
1890 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_qfull()
1891 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_qfull()
1892 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_qfull()
1893 ioim); in bfa_ioim_sm_qfull()
1894 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_qfull()
1898 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_qfull()
1899 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_qfull()
1900 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_qfull()
1901 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_qfull()
1902 ioim); in bfa_ioim_sm_qfull()
1906 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_qfull()
1914 bfa_ioim_sm_abort_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_abort_qfull() argument
1916 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_abort_qfull()
1917 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_abort_qfull()
1921 bfa_sm_set_state(ioim, bfa_ioim_sm_abort); in bfa_ioim_sm_abort_qfull()
1922 bfa_ioim_send_abort(ioim); in bfa_ioim_sm_abort_qfull()
1926 WARN_ON(ioim->iosp->abort_explicit != BFA_TRUE); in bfa_ioim_sm_abort_qfull()
1927 ioim->iosp->abort_explicit = BFA_FALSE; in bfa_ioim_sm_abort_qfull()
1928 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup_qfull); in bfa_ioim_sm_abort_qfull()
1933 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_abort_qfull()
1934 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_abort_qfull()
1935 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort_qfull()
1936 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_abort_qfull()
1937 ioim); in bfa_ioim_sm_abort_qfull()
1941 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_abort_qfull()
1942 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_abort_qfull()
1943 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort_qfull()
1944 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_abort, in bfa_ioim_sm_abort_qfull()
1945 ioim); in bfa_ioim_sm_abort_qfull()
1949 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_abort_qfull()
1950 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_abort_qfull()
1951 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_abort_qfull()
1952 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_abort_qfull()
1953 ioim); in bfa_ioim_sm_abort_qfull()
1957 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_abort_qfull()
1965 bfa_ioim_sm_cleanup_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_cleanup_qfull() argument
1967 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_cleanup_qfull()
1968 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_cleanup_qfull()
1972 bfa_sm_set_state(ioim, bfa_ioim_sm_cleanup); in bfa_ioim_sm_cleanup_qfull()
1973 bfa_ioim_send_abort(ioim); in bfa_ioim_sm_cleanup_qfull()
1980 ioim->io_cbfn = __bfa_cb_ioim_abort; in bfa_ioim_sm_cleanup_qfull()
1985 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cleanup_qfull()
1986 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_cleanup_qfull()
1987 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_sm_cleanup_qfull()
1988 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_cleanup_qfull()
1992 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb_free); in bfa_ioim_sm_cleanup_qfull()
1993 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_cleanup_qfull()
1994 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_sm_cleanup_qfull()
1995 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_cleanup_qfull()
1999 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_cleanup_qfull()
2000 bfa_reqq_wcancel(&ioim->iosp->reqq_wait); in bfa_ioim_sm_cleanup_qfull()
2001 bfa_ioim_move_to_comp_q(ioim); in bfa_ioim_sm_cleanup_qfull()
2002 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, __bfa_cb_ioim_failed, in bfa_ioim_sm_cleanup_qfull()
2003 ioim); in bfa_ioim_sm_cleanup_qfull()
2007 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_cleanup_qfull()
2015 bfa_ioim_sm_hcb(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_hcb() argument
2019 bfa_sm_set_state(ioim, bfa_ioim_sm_uninit); in bfa_ioim_sm_hcb()
2020 bfa_ioim_free(ioim); in bfa_ioim_sm_hcb()
2024 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_hcb()
2031 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_hcb()
2039 bfa_ioim_sm_hcb_free(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_hcb_free() argument
2041 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_hcb_free()
2042 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_hcb_free()
2046 bfa_sm_set_state(ioim, bfa_ioim_sm_resfree); in bfa_ioim_sm_hcb_free()
2047 list_del(&ioim->qe); in bfa_ioim_sm_hcb_free()
2048 list_add_tail(&ioim->qe, &ioim->fcpim->ioim_resfree_q); in bfa_ioim_sm_hcb_free()
2052 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_hcb_free()
2056 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_hcb_free()
2060 bfa_sm_set_state(ioim, bfa_ioim_sm_hcb); in bfa_ioim_sm_hcb_free()
2064 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_hcb_free()
2072 bfa_ioim_sm_resfree(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) in bfa_ioim_sm_resfree() argument
2074 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_sm_resfree()
2075 bfa_trc(ioim->bfa, event); in bfa_ioim_sm_resfree()
2079 bfa_sm_set_state(ioim, bfa_ioim_sm_uninit); in bfa_ioim_sm_resfree()
2080 bfa_ioim_free(ioim); in bfa_ioim_sm_resfree()
2084 bfa_ioim_notify_cleanup(ioim); in bfa_ioim_sm_resfree()
2091 bfa_sm_fault(ioim->bfa, event); in bfa_ioim_sm_resfree()
2120 struct bfa_ioim_s *ioim = cbarg; in __bfa_cb_ioim_good_comp() local
2123 bfa_sm_send_event(ioim, BFA_IOIM_SM_HCB); in __bfa_cb_ioim_good_comp()
2127 bfa_cb_ioim_good_comp(ioim->bfa->bfad, ioim->dio); in __bfa_cb_ioim_good_comp()
2133 struct bfa_ioim_s *ioim = cbarg; in __bfa_cb_ioim_comp() local
2140 bfa_sm_send_event(ioim, BFA_IOIM_SM_HCB); in __bfa_cb_ioim_comp()
2144 m = (struct bfi_ioim_rsp_s *) &ioim->iosp->comp_rspmsg; in __bfa_cb_ioim_comp()
2152 snsinfo = BFA_SNSINFO_FROM_TAG(ioim->fcpim->fcp, in __bfa_cb_ioim_comp()
2153 ioim->iotag); in __bfa_cb_ioim_comp()
2161 bfa_stats(ioim->itnim, iocomp_underrun); in __bfa_cb_ioim_comp()
2166 bfa_stats(ioim->itnim, iocomp_overrun); in __bfa_cb_ioim_comp()
2170 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, m->io_status, in __bfa_cb_ioim_comp()
2389 struct bfa_ioim_s *ioim = cbarg; in __bfa_cb_ioim_failed() local
2392 bfa_sm_send_event(ioim, BFA_IOIM_SM_HCB); in __bfa_cb_ioim_failed()
2396 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, BFI_IOIM_STS_ABORTED, in __bfa_cb_ioim_failed()
2403 struct bfa_ioim_s *ioim = cbarg; in __bfa_cb_ioim_pathtov() local
2405 bfa_stats(ioim->itnim, path_tov_expired); in __bfa_cb_ioim_pathtov()
2407 bfa_sm_send_event(ioim, BFA_IOIM_SM_HCB); in __bfa_cb_ioim_pathtov()
2411 bfa_cb_ioim_done(ioim->bfa->bfad, ioim->dio, BFI_IOIM_STS_PATHTOV, in __bfa_cb_ioim_pathtov()
2418 struct bfa_ioim_s *ioim = cbarg; in __bfa_cb_ioim_abort() local
2421 bfa_sm_send_event(ioim, BFA_IOIM_SM_HCB); in __bfa_cb_ioim_abort()
2425 bfa_cb_ioim_abort(ioim->bfa->bfad, ioim->dio); in __bfa_cb_ioim_abort()
2431 struct bfa_ioim_s *ioim = cbarg; in bfa_ioim_sgpg_alloced() local
2433 ioim->nsgpgs = BFA_SGPG_NPAGE(ioim->nsges); in bfa_ioim_sgpg_alloced()
2434 list_splice_tail_init(&ioim->iosp->sgpg_wqe.sgpg_q, &ioim->sgpg_q); in bfa_ioim_sgpg_alloced()
2435 ioim->sgpg = bfa_q_first(&ioim->sgpg_q); in bfa_ioim_sgpg_alloced()
2436 bfa_sm_send_event(ioim, BFA_IOIM_SM_SGALLOCED); in bfa_ioim_sgpg_alloced()
2443 bfa_ioim_send_ioreq(struct bfa_ioim_s *ioim) in bfa_ioim_send_ioreq() argument
2445 struct bfa_itnim_s *itnim = ioim->itnim; in bfa_ioim_send_ioreq()
2454 struct scsi_cmnd *cmnd = (struct scsi_cmnd *) ioim->dio; in bfa_ioim_send_ioreq()
2461 m = bfa_reqq_next(ioim->bfa, ioim->reqq); in bfa_ioim_send_ioreq()
2463 bfa_stats(ioim->itnim, qwait); in bfa_ioim_send_ioreq()
2464 bfa_reqq_wait(ioim->bfa, ioim->reqq, in bfa_ioim_send_ioreq()
2465 &ioim->iosp->reqq_wait); in bfa_ioim_send_ioreq()
2472 m->io_tag = cpu_to_be16(ioim->iotag); in bfa_ioim_send_ioreq()
2473 m->rport_hdl = ioim->itnim->rport->fw_handle; in bfa_ioim_send_ioreq()
2477 sgpg = ioim->sgpg; in bfa_ioim_send_ioreq()
2481 scsi_for_each_sg(cmnd, sg, ioim->nsges, i) { in bfa_ioim_send_ioreq()
2488 sge->flags = (ioim->nsges > BFI_SGE_INLINE) ? in bfa_ioim_send_ioreq()
2502 if (i < (ioim->nsges - 1) && in bfa_ioim_send_ioreq()
2505 else if (i < (ioim->nsges - 1)) in bfa_ioim_send_ioreq()
2513 if (i == (ioim->nsges - 1)) { in bfa_ioim_send_ioreq()
2531 if (ioim->nsges > BFI_SGE_INLINE) { in bfa_ioim_send_ioreq()
2532 sge->sga = ioim->sgpg->sgpg_pa; in bfa_ioim_send_ioreq()
2563 bfi_h2i_set(m->mh, BFI_MC_IOIM_READ, 0, bfa_fn_lpu(ioim->bfa)); in bfa_ioim_send_ioreq()
2565 ioim->itnim->stats.rd_throughput += fcp_dl; in bfa_ioim_send_ioreq()
2568 bfi_h2i_set(m->mh, BFI_MC_IOIM_WRITE, 0, bfa_fn_lpu(ioim->bfa)); in bfa_ioim_send_ioreq()
2570 ioim->itnim->stats.wr_throughput += fcp_dl; in bfa_ioim_send_ioreq()
2577 bfi_h2i_set(m->mh, BFI_MC_IOIM_IO, 0, bfa_fn_lpu(ioim->bfa)); in bfa_ioim_send_ioreq()
2581 bfi_h2i_set(m->mh, BFI_MC_IOIM_IO, 0, bfa_fn_lpu(ioim->bfa)); in bfa_ioim_send_ioreq()
2586 bfa_reqq_produce(ioim->bfa, ioim->reqq, m->mh); in bfa_ioim_send_ioreq()
2595 bfa_ioim_sgpg_alloc(struct bfa_ioim_s *ioim) in bfa_ioim_sgpg_alloc() argument
2599 WARN_ON(ioim->nsges <= BFI_SGE_INLINE); in bfa_ioim_sgpg_alloc()
2604 nsgpgs = BFA_SGPG_NPAGE(ioim->nsges); in bfa_ioim_sgpg_alloc()
2608 if (bfa_sgpg_malloc(ioim->bfa, &ioim->sgpg_q, nsgpgs) in bfa_ioim_sgpg_alloc()
2610 bfa_sgpg_wait(ioim->bfa, &ioim->iosp->sgpg_wqe, nsgpgs); in bfa_ioim_sgpg_alloc()
2614 ioim->nsgpgs = nsgpgs; in bfa_ioim_sgpg_alloc()
2615 ioim->sgpg = bfa_q_first(&ioim->sgpg_q); in bfa_ioim_sgpg_alloc()
2624 bfa_ioim_send_abort(struct bfa_ioim_s *ioim) in bfa_ioim_send_abort() argument
2632 m = bfa_reqq_next(ioim->bfa, ioim->reqq); in bfa_ioim_send_abort()
2639 if (ioim->iosp->abort_explicit) in bfa_ioim_send_abort()
2644 bfi_h2i_set(m->mh, BFI_MC_IOIM, msgop, bfa_fn_lpu(ioim->bfa)); in bfa_ioim_send_abort()
2645 m->io_tag = cpu_to_be16(ioim->iotag); in bfa_ioim_send_abort()
2646 m->abort_tag = ++ioim->abort_tag; in bfa_ioim_send_abort()
2651 bfa_reqq_produce(ioim->bfa, ioim->reqq, m->mh); in bfa_ioim_send_abort()
2661 struct bfa_ioim_s *ioim = cbarg; in bfa_ioim_qresume() local
2663 bfa_stats(ioim->itnim, qresumes); in bfa_ioim_qresume()
2664 bfa_sm_send_event(ioim, BFA_IOIM_SM_QRESUME); in bfa_ioim_qresume()
2669 bfa_ioim_notify_cleanup(struct bfa_ioim_s *ioim) in bfa_ioim_notify_cleanup() argument
2675 list_del(&ioim->qe); in bfa_ioim_notify_cleanup()
2676 list_add_tail(&ioim->qe, &ioim->fcpim->ioim_comp_q); in bfa_ioim_notify_cleanup()
2678 if (!ioim->iosp->tskim) { in bfa_ioim_notify_cleanup()
2679 if (ioim->fcpim->delay_comp && ioim->itnim->iotov_active) { in bfa_ioim_notify_cleanup()
2680 bfa_cb_dequeue(&ioim->hcb_qe); in bfa_ioim_notify_cleanup()
2681 list_del(&ioim->qe); in bfa_ioim_notify_cleanup()
2682 list_add_tail(&ioim->qe, &ioim->itnim->delay_comp_q); in bfa_ioim_notify_cleanup()
2684 bfa_itnim_iodone(ioim->itnim); in bfa_ioim_notify_cleanup()
2686 bfa_wc_down(&ioim->iosp->tskim->wc); in bfa_ioim_notify_cleanup()
2690 bfa_ioim_is_abortable(struct bfa_ioim_s *ioim) in bfa_ioim_is_abortable() argument
2692 if ((bfa_sm_cmp_state(ioim, bfa_ioim_sm_uninit) && in bfa_ioim_is_abortable()
2693 (!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim))) || in bfa_ioim_is_abortable()
2694 (bfa_sm_cmp_state(ioim, bfa_ioim_sm_abort)) || in bfa_ioim_is_abortable()
2695 (bfa_sm_cmp_state(ioim, bfa_ioim_sm_abort_qfull)) || in bfa_ioim_is_abortable()
2696 (bfa_sm_cmp_state(ioim, bfa_ioim_sm_hcb)) || in bfa_ioim_is_abortable()
2697 (bfa_sm_cmp_state(ioim, bfa_ioim_sm_hcb_free)) || in bfa_ioim_is_abortable()
2698 (bfa_sm_cmp_state(ioim, bfa_ioim_sm_resfree))) in bfa_ioim_is_abortable()
2705 bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, bfa_boolean_t iotov) in bfa_ioim_delayed_comp() argument
2715 ioim->io_cbfn = __bfa_cb_ioim_pathtov; in bfa_ioim_delayed_comp()
2717 ioim->io_cbfn = __bfa_cb_ioim_failed; in bfa_ioim_delayed_comp()
2718 bfa_stats(ioim->itnim, iocom_nexus_abort); in bfa_ioim_delayed_comp()
2720 bfa_cb_queue(ioim->bfa, &ioim->hcb_qe, ioim->io_cbfn, ioim); in bfa_ioim_delayed_comp()
2726 list_del(&ioim->qe); in bfa_ioim_delayed_comp()
2727 list_add_tail(&ioim->qe, &ioim->fcpim->ioim_comp_q); in bfa_ioim_delayed_comp()
2737 struct bfa_ioim_s *ioim; in bfa_ioim_attach() local
2745 ioim = (struct bfa_ioim_s *) bfa_mem_kva_curp(fcp); in bfa_ioim_attach()
2746 fcpim->ioim_arr = ioim; in bfa_ioim_attach()
2747 bfa_mem_kva_curp(fcp) = (u8 *) (ioim + fcpim->fcp->num_ioim_reqs); in bfa_ioim_attach()
2760 i++, ioim++, iosp++) { in bfa_ioim_attach()
2764 memset(ioim, 0, sizeof(struct bfa_ioim_s)); in bfa_ioim_attach()
2765 ioim->iotag = i; in bfa_ioim_attach()
2766 ioim->bfa = fcpim->bfa; in bfa_ioim_attach()
2767 ioim->fcpim = fcpim; in bfa_ioim_attach()
2768 ioim->iosp = iosp; in bfa_ioim_attach()
2769 INIT_LIST_HEAD(&ioim->sgpg_q); in bfa_ioim_attach()
2770 bfa_reqq_winit(&ioim->iosp->reqq_wait, in bfa_ioim_attach()
2771 bfa_ioim_qresume, ioim); in bfa_ioim_attach()
2772 bfa_sgpg_winit(&ioim->iosp->sgpg_wqe, in bfa_ioim_attach()
2773 bfa_ioim_sgpg_alloced, ioim); in bfa_ioim_attach()
2774 bfa_sm_set_state(ioim, bfa_ioim_sm_uninit); in bfa_ioim_attach()
2783 struct bfa_ioim_s *ioim; in bfa_ioim_isr() local
2789 ioim = BFA_IOIM_FROM_TAG(fcpim, iotag); in bfa_ioim_isr()
2790 WARN_ON(ioim->iotag != iotag); in bfa_ioim_isr()
2792 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_isr()
2793 bfa_trc(ioim->bfa, rsp->io_status); in bfa_ioim_isr()
2794 bfa_trc(ioim->bfa, rsp->reuse_io_tag); in bfa_ioim_isr()
2796 if (bfa_sm_cmp_state(ioim, bfa_ioim_sm_active)) in bfa_ioim_isr()
2797 ioim->iosp->comp_rspmsg = *m; in bfa_ioim_isr()
2801 bfa_stats(ioim->itnim, iocomp_ok); in bfa_ioim_isr()
2809 bfa_stats(ioim->itnim, iocomp_timedout); in bfa_ioim_isr()
2813 bfa_stats(ioim->itnim, iocomp_aborted); in bfa_ioim_isr()
2821 bfa_stats(ioim->itnim, iocom_proto_err); in bfa_ioim_isr()
2827 bfa_stats(ioim->itnim, iocom_sqer_needed); in bfa_ioim_isr()
2833 bfa_stats(ioim->itnim, iocom_res_free); in bfa_ioim_isr()
2838 bfa_stats(ioim->itnim, iocom_hostabrts); in bfa_ioim_isr()
2839 if (rsp->abort_tag != ioim->abort_tag) { in bfa_ioim_isr()
2840 bfa_trc(ioim->bfa, rsp->abort_tag); in bfa_ioim_isr()
2841 bfa_trc(ioim->bfa, ioim->abort_tag); in bfa_ioim_isr()
2852 bfa_stats(ioim->itnim, iocom_utags); in bfa_ioim_isr()
2860 bfa_sm_send_event(ioim, evt); in bfa_ioim_isr()
2868 struct bfa_ioim_s *ioim; in bfa_ioim_good_comp_isr() local
2873 ioim = BFA_IOIM_FROM_TAG(fcpim, iotag); in bfa_ioim_good_comp_isr()
2874 WARN_ON(ioim->iotag != iotag); in bfa_ioim_good_comp_isr()
2876 bfa_ioim_cb_profile_comp(fcpim, ioim); in bfa_ioim_good_comp_isr()
2878 bfa_sm_send_event(ioim, BFA_IOIM_SM_COMP_GOOD); in bfa_ioim_good_comp_isr()
2885 bfa_ioim_cleanup(struct bfa_ioim_s *ioim) in bfa_ioim_cleanup() argument
2887 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_cleanup()
2888 bfa_stats(ioim->itnim, io_cleanups); in bfa_ioim_cleanup()
2890 ioim->iosp->tskim = NULL; in bfa_ioim_cleanup()
2891 bfa_sm_send_event(ioim, BFA_IOIM_SM_CLEANUP); in bfa_ioim_cleanup()
2895 bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim, struct bfa_tskim_s *tskim) in bfa_ioim_cleanup_tm() argument
2897 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_cleanup_tm()
2898 bfa_stats(ioim->itnim, io_tmaborts); in bfa_ioim_cleanup_tm()
2900 ioim->iosp->tskim = tskim; in bfa_ioim_cleanup_tm()
2901 bfa_sm_send_event(ioim, BFA_IOIM_SM_CLEANUP); in bfa_ioim_cleanup_tm()
2908 bfa_ioim_iocdisable(struct bfa_ioim_s *ioim) in bfa_ioim_iocdisable() argument
2910 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_iocdisable()
2911 bfa_stats(ioim->itnim, io_iocdowns); in bfa_ioim_iocdisable()
2912 bfa_sm_send_event(ioim, BFA_IOIM_SM_HWFAIL); in bfa_ioim_iocdisable()
2919 bfa_ioim_tov(struct bfa_ioim_s *ioim) in bfa_ioim_tov() argument
2921 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_tov()
2922 bfa_sm_send_event(ioim, BFA_IOIM_SM_IOTOV); in bfa_ioim_tov()
2934 struct bfa_ioim_s *ioim; in bfa_ioim_alloc() local
2946 ioim = BFA_IOIM_FROM_TAG(fcpim, iotag->tag); in bfa_ioim_alloc()
2948 ioim->dio = dio; in bfa_ioim_alloc()
2949 ioim->itnim = itnim; in bfa_ioim_alloc()
2950 ioim->nsges = nsges; in bfa_ioim_alloc()
2951 ioim->nsgpgs = 0; in bfa_ioim_alloc()
2956 list_add_tail(&ioim->qe, &itnim->io_q); in bfa_ioim_alloc()
2958 return ioim; in bfa_ioim_alloc()
2962 bfa_ioim_free(struct bfa_ioim_s *ioim) in bfa_ioim_free() argument
2964 struct bfa_fcpim_s *fcpim = ioim->fcpim; in bfa_ioim_free()
2967 if (ioim->nsgpgs > 0) in bfa_ioim_free()
2968 bfa_sgpg_mfree(ioim->bfa, &ioim->sgpg_q, ioim->nsgpgs); in bfa_ioim_free()
2970 bfa_stats(ioim->itnim, io_comps); in bfa_ioim_free()
2973 ioim->iotag &= BFA_IOIM_IOTAG_MASK; in bfa_ioim_free()
2975 WARN_ON(!(ioim->iotag < in bfa_ioim_free()
2977 iotag = BFA_IOTAG_FROM_TAG(fcpim->fcp, ioim->iotag); in bfa_ioim_free()
2979 if (ioim->iotag < fcpim->fcp->num_ioim_reqs) in bfa_ioim_free()
2984 list_del(&ioim->qe); in bfa_ioim_free()
2988 bfa_ioim_start(struct bfa_ioim_s *ioim) in bfa_ioim_start() argument
2990 bfa_ioim_cb_profile_start(ioim->fcpim, ioim); in bfa_ioim_start()
2995 ioim->reqq = bfa_fcpim_ioredirect_enabled(ioim->bfa) ? in bfa_ioim_start()
2996 BFA_FALSE : bfa_itnim_get_reqq(ioim); in bfa_ioim_start()
2998 bfa_sm_send_event(ioim, BFA_IOIM_SM_START); in bfa_ioim_start()
3005 bfa_ioim_abort(struct bfa_ioim_s *ioim) in bfa_ioim_abort() argument
3008 bfa_trc(ioim->bfa, ioim->iotag); in bfa_ioim_abort()
3010 if (!bfa_ioim_is_abortable(ioim)) in bfa_ioim_abort()
3013 bfa_stats(ioim->itnim, io_aborts); in bfa_ioim_abort()
3014 bfa_sm_send_event(ioim, BFA_IOIM_SM_ABORT); in bfa_ioim_abort()
3306 struct bfa_ioim_s *ioim; in bfa_tskim_gather_ios() local
3317 ioim = (struct bfa_ioim_s *) qe; in bfa_tskim_gather_ios()
3318 cmnd = (struct scsi_cmnd *) ioim->dio; in bfa_tskim_gather_ios()
3321 list_del(&ioim->qe); in bfa_tskim_gather_ios()
3322 list_add_tail(&ioim->qe, &tskim->io_q); in bfa_tskim_gather_ios()
3330 ioim = (struct bfa_ioim_s *) qe; in bfa_tskim_gather_ios()
3331 cmnd = (struct scsi_cmnd *) ioim->dio; in bfa_tskim_gather_ios()
3334 list_del(&ioim->qe); in bfa_tskim_gather_ios()
3335 list_add_tail(&ioim->qe, &ioim->fcpim->ioim_comp_q); in bfa_tskim_gather_ios()
3336 bfa_ioim_tov(ioim); in bfa_tskim_gather_ios()
3359 struct bfa_ioim_s *ioim; in bfa_tskim_cleanup_ios() local
3365 ioim = (struct bfa_ioim_s *) qe; in bfa_tskim_cleanup_ios()
3367 bfa_ioim_cleanup_tm(ioim, tskim); in bfa_tskim_cleanup_ios()
3457 struct bfa_ioim_s *ioim; in bfa_tskim_iocdisable_ios() local
3461 ioim = (struct bfa_ioim_s *) qe; in bfa_tskim_iocdisable_ios()
3462 bfa_ioim_iocdisable(ioim); in bfa_tskim_iocdisable_ios()