Lines Matching refs:tgt
112 static void qlt_clear_tgt_db(struct qla_tgt *tgt);
205 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); in qlt_incr_num_pend_cmds()
207 vha->hw->tgt.num_pend_cmds++; in qlt_incr_num_pend_cmds()
208 if (vha->hw->tgt.num_pend_cmds > vha->qla_stats.stat_max_pend_cmds) in qlt_incr_num_pend_cmds()
210 vha->hw->tgt.num_pend_cmds; in qlt_incr_num_pend_cmds()
211 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_incr_num_pend_cmds()
217 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); in qlt_decr_num_pend_cmds()
218 vha->hw->tgt.num_pend_cmds--; in qlt_decr_num_pend_cmds()
219 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_decr_num_pend_cmds()
227 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_queue_unknown_atio() local
230 if (tgt->tgt_stop) { in qlt_queue_unknown_atio()
264 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_try_to_dequeue_unknown_atios() local
283 } else if (tgt->tgt_stop) { in qlt_try_to_dequeue_unknown_atios()
545 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_nack_sp_done()
580 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_nack_sp_done()
582 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_nack_sp_done()
598 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_nack_sp_done()
674 vha->hw->tgt.tgt_ops->put_sess(e->u.nack.fcport); in qla24xx_do_nack_work()
693 ha->tgt.tgt_ops->shutdown_sess(fcport); in qla24xx_delete_sess_fn()
694 ha->tgt.tgt_ops->put_sess(fcport); in qla24xx_delete_sess_fn()
706 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_fc_port_added() local
710 if (!vha->hw->tgt.tgt_ops) in qlt_fc_port_added()
713 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
714 if (tgt->tgt_stop) { in qlt_fc_port_added()
715 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
720 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
725 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
731 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
734 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
742 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
754 ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, in qlt_fc_port_added()
766 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_fc_port_added()
768 ha->tgt.tgt_ops->put_sess(sess); in qlt_fc_port_added()
950 struct qla_tgt *tgt = sess->tgt; in qlt_free_session_done() local
1037 ha->tgt.tgt_ops->free_session(sess); in qlt_free_session_done()
1075 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_free_session_done()
1078 if (tgt && !IS_SW_RESV_ADDR(sess->d_id)) in qlt_free_session_done()
1079 tgt->sess_count--; in qlt_free_session_done()
1135 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_free_session_done()
1144 if (tgt && (tgt->sess_count == 0)) in qlt_free_session_done()
1145 wake_up_all(&tgt->waitQ); in qlt_free_session_done()
1149 (!tgt || !tgt->tgt_stop) && !LOOP_TRANSITION(vha)) { in qlt_free_session_done()
1191 vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess); in qlt_unreg_sess()
1215 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_reset()
1217 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_reset()
1219 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_reset()
1220 sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); in qlt_reset()
1221 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_reset()
1250 struct qla_tgt *tgt = sess->tgt; in qlt_schedule_sess_for_deletion() local
1260 if (tgt && tgt->tgt_stop && tgt->sess_count == 0) in qlt_schedule_sess_for_deletion()
1261 wake_up_all(&tgt->waitQ); in qlt_schedule_sess_for_deletion()
1307 static void qlt_clear_tgt_db(struct qla_tgt *tgt) in qlt_clear_tgt_db() argument
1310 scsi_qla_host_t *vha = tgt->vha; in qlt_clear_tgt_db()
1392 sess->tgt = vha->vha_tgt.qla_tgt; in qlt_create_sess()
1405 if (ha->tgt.tgt_ops->check_initiator_node_acl(vha, in qlt_create_sess()
1424 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_create_sess()
1429 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_create_sess()
1454 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_fc_port_deleted() local
1458 if (!vha->hw->tgt.tgt_ops) in qlt_fc_port_deleted()
1461 if (!tgt) in qlt_fc_port_deleted()
1464 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qlt_fc_port_deleted()
1465 if (tgt->tgt_stop) { in qlt_fc_port_deleted()
1466 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_fc_port_deleted()
1470 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_fc_port_deleted()
1475 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_fc_port_deleted()
1487 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_fc_port_deleted()
1491 static inline int test_tgt_sess_count(struct qla_tgt *tgt) in test_tgt_sess_count() argument
1493 struct qla_hw_data *ha = tgt->ha; in test_tgt_sess_count()
1500 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in test_tgt_sess_count()
1501 ql_dbg(ql_dbg_tgt, tgt->vha, 0xe002, in test_tgt_sess_count()
1503 tgt, tgt->sess_count); in test_tgt_sess_count()
1504 res = (tgt->sess_count == 0); in test_tgt_sess_count()
1505 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in test_tgt_sess_count()
1511 int qlt_stop_phase1(struct qla_tgt *tgt) in qlt_stop_phase1() argument
1513 struct scsi_qla_host *vha = tgt->vha; in qlt_stop_phase1()
1514 struct qla_hw_data *ha = tgt->ha; in qlt_stop_phase1()
1520 if (tgt->tgt_stop || tgt->tgt_stopped) { in qlt_stop_phase1()
1535 tgt->tgt_stop = 1; in qlt_stop_phase1()
1536 qlt_clear_tgt_db(tgt); in qlt_stop_phase1()
1541 "Waiting for sess works (tgt %p)", tgt); in qlt_stop_phase1()
1542 spin_lock_irqsave(&tgt->sess_work_lock, flags); in qlt_stop_phase1()
1544 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); in qlt_stop_phase1()
1545 flush_work(&tgt->sess_work); in qlt_stop_phase1()
1546 spin_lock_irqsave(&tgt->sess_work_lock, flags); in qlt_stop_phase1()
1547 } while (!list_empty(&tgt->sess_works_list)); in qlt_stop_phase1()
1548 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); in qlt_stop_phase1()
1551 "Waiting for tgt %p: sess_count=%d\n", tgt, tgt->sess_count); in qlt_stop_phase1()
1553 wait_event_timeout(tgt->waitQ, test_tgt_sess_count(tgt), 10*HZ); in qlt_stop_phase1()
1561 wait_event_timeout(tgt->waitQ, test_tgt_sess_count(tgt), 10*HZ); in qlt_stop_phase1()
1569 void qlt_stop_phase2(struct qla_tgt *tgt) in qlt_stop_phase2() argument
1571 scsi_qla_host_t *vha = tgt->vha; in qlt_stop_phase2()
1573 if (tgt->tgt_stopped) { in qlt_stop_phase2()
1579 if (!tgt->tgt_stop) { in qlt_stop_phase2()
1586 mutex_lock(&tgt->ha->optrom_mutex); in qlt_stop_phase2()
1588 tgt->tgt_stop = 0; in qlt_stop_phase2()
1589 tgt->tgt_stopped = 1; in qlt_stop_phase2()
1591 mutex_unlock(&tgt->ha->optrom_mutex); in qlt_stop_phase2()
1594 tgt); in qlt_stop_phase2()
1608 static void qlt_release(struct qla_tgt *tgt) in qlt_release() argument
1610 scsi_qla_host_t *vha = tgt->vha; in qlt_release()
1617 if (!tgt->tgt_stop && !tgt->tgt_stopped) in qlt_release()
1618 qlt_stop_phase1(tgt); in qlt_release()
1620 if (!tgt->tgt_stopped) in qlt_release()
1621 qlt_stop_phase2(tgt); in qlt_release()
1626 h = &tgt->qphints[i]; in qlt_release()
1634 kfree(tgt->qphints); in qlt_release()
1639 btree_for_each_safe64(&tgt->lun_qpair_map, key, node) in qlt_release()
1640 btree_remove64(&tgt->lun_qpair_map, key); in qlt_release()
1642 btree_destroy64(&tgt->lun_qpair_map); in qlt_release()
1645 if (ha->tgt.tgt_ops && in qlt_release()
1646 ha->tgt.tgt_ops->remove_target && in qlt_release()
1648 ha->tgt.tgt_ops->remove_target(vha); in qlt_release()
1653 "Release of tgt %p finished\n", tgt); in qlt_release()
1655 kfree(tgt); in qlt_release()
1659 static int qlt_sched_sess_work(struct qla_tgt *tgt, int type, in qlt_sched_sess_work() argument
1667 ql_dbg(ql_dbg_tgt_mgt, tgt->vha, 0xf050, in qlt_sched_sess_work()
1673 ql_dbg(ql_dbg_tgt_mgt, tgt->vha, 0xf00e, in qlt_sched_sess_work()
1676 type, prm, param, param_size, tgt); in qlt_sched_sess_work()
1681 spin_lock_irqsave(&tgt->sess_work_lock, flags); in qlt_sched_sess_work()
1682 list_add_tail(&prm->sess_works_list_entry, &tgt->sess_works_list); in qlt_sched_sess_work()
1683 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); in qlt_sched_sess_work()
1685 schedule_work(&tgt->sess_work); in qlt_sched_sess_work()
2033 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_find_qphint() local
2037 h = btree_lookup64(&tgt->lun_qpair_map, unpacked_lun); in qlt_find_qphint()
2039 h = &tgt->qphints[0]; in qlt_find_qphint()
2041 h = &tgt->qphints[0]; in qlt_find_qphint()
2065 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, mcmd->unpacked_lun, in qlt_do_tmr_work()
2135 abort_cmd = ha->tgt.tgt_ops->find_cmd_by_tag(sess, in __qlt_24xx_handle_abts()
2195 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_24xx_handle_abts()
2196 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); in qlt_24xx_handle_abts()
2201 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_24xx_handle_abts()
2207 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_24xx_handle_abts()
2375 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
2413 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_xmit_tm_rsp()
2775 prm->tgt = cmd->tgt; in qlt_pre_xmit_response()
2953 scsi_qla_host_t *vha = cmd->tgt->vha; in qla_tgt_set_dif_tags()
2974 t32 = ha->tgt.tgt_ops->get_dif_tags(cmd, pfw_prot_opts); in qla_tgt_set_dif_tags()
2997 !(ha->tgt.tgt_ops->chk_dif_tags(t32))) { in qla_tgt_set_dif_tags()
3014 !(ha->tgt.tgt_ops->chk_dif_tags(t32))) { in qla_tgt_set_dif_tags()
3405 struct qla_tgt *tgt = cmd->tgt; in qlt_rdy_to_xfer() local
3413 prm.tgt = tgt; in qlt_rdy_to_xfer()
3426 vha->hw->tgt.tgt_ops->handle_data(cmd); in qlt_rdy_to_xfer()
3565 vha->hw->tgt.tgt_ops->handle_data(cmd); in qlt_handle_dif_error()
3571 vha->hw->tgt.tgt_ops->free_cmd(cmd); in qlt_handle_dif_error()
3581 vha->hw->tgt.tgt_ops->free_cmd(cmd); in qlt_handle_dif_error()
3740 vha->hw->tgt.tgt_ops->free_cmd(cmd); in qlt_send_term_exchange()
3754 vha->hw->tgt.leak_exchg_thresh_hold = in qlt_init_term_exchange()
3758 if (!list_empty(&vha->hw->tgt.q_full_list)) { in qlt_init_term_exchange()
3760 list_splice_init(&vha->hw->tgt.q_full_list, &free_list); in qlt_init_term_exchange()
3768 vha->hw->tgt.num_qfull_cmds_alloc--; in qlt_init_term_exchange()
3771 vha->hw->tgt.num_qfull_cmds_dropped = 0; in qlt_init_term_exchange()
3778 total_leaked = vha->hw->tgt.num_qfull_cmds_dropped; in qlt_chk_exch_leak_thresh_hold()
3780 if (vha->hw->tgt.leak_exchg_thresh_hold && in qlt_chk_exch_leak_thresh_hold()
3781 (total_leaked > vha->hw->tgt.leak_exchg_thresh_hold)) { in qlt_chk_exch_leak_thresh_hold()
3798 struct qla_tgt *tgt = cmd->tgt; in qlt_abort_cmd() local
3799 struct scsi_qla_host *vha = tgt->vha; in qlt_abort_cmd()
3856 cmd->vha->hw->tgt.tgt_ops->rel_cmd(cmd); in qlt_free_cmd()
4087 ha->tgt.tgt_ops->handle_data(cmd); in qlt_do_ctio_completion()
4106 ha->tgt.tgt_ops->free_cmd(cmd); in qlt_do_ctio_completion()
4185 ret = ha->tgt.tgt_ops->handle_cmd(vha, cmd, cdb, data_length, in __qlt_do_work()
4192 ha->tgt.tgt_ops->put_sess(sess); in __qlt_do_work()
4206 cmd->vha->hw->tgt.tgt_ops->rel_cmd(cmd); in __qlt_do_work()
4209 ha->tgt.tgt_ops->put_sess(sess); in __qlt_do_work()
4229 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_clr_qp_table() local
4235 ha->tgt.num_act_qpairs); in qlt_clr_qp_table()
4237 spin_lock_irqsave(&ha->tgt.atio_lock, flags); in qlt_clr_qp_table()
4239 btree_for_each_safe64(&tgt->lun_qpair_map, key, node) in qlt_clr_qp_table()
4240 btree_remove64(&tgt->lun_qpair_map, key); in qlt_clr_qp_table()
4247 spin_unlock_irqrestore(&ha->tgt.atio_lock, flags); in qlt_clr_qp_table()
4254 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_assign_qpair() local
4258 h = btree_lookup64(&tgt->lun_qpair_map, cmd->unpacked_lun); in qlt_assign_qpair()
4268 h = qla_qpair_to_hint(tgt, qpair); in qlt_assign_qpair()
4270 rc = btree_insert64(&tgt->lun_qpair_map, in qlt_assign_qpair()
4288 h = qla_qpair_to_hint(tgt, qp); in qlt_assign_qpair()
4290 rc = btree_insert64(&tgt->lun_qpair_map, in qlt_assign_qpair()
4310 h = qla_qpair_to_hint(tgt, qpair); in qlt_assign_qpair()
4312 rc = btree_insert64(&tgt->lun_qpair_map, in qlt_assign_qpair()
4322 h = &tgt->qphints[0]; in qlt_assign_qpair()
4335 cmd = vha->hw->tgt.tgt_ops->get_cmd(sess); in qlt_get_tag()
4343 cmd->tgt = vha->vha_tgt.qla_tgt; in qlt_get_tag()
4368 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_handle_cmd_for_atio() local
4374 if (unlikely(tgt->tgt_stop)) { in qlt_handle_cmd_for_atio()
4376 "New command while device %p is shutting down\n", tgt); in qlt_handle_cmd_for_atio()
4384 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, atio->u.isp24.fcp_hdr.s_id); in qlt_handle_cmd_for_atio()
4412 ha->tgt.tgt_ops->put_sess(sess); in qlt_handle_cmd_for_atio()
4513 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_handle_task_mgmt()
4514 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, in qlt_handle_task_mgmt()
4516 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_handle_task_mgmt()
4556 rc = ha->tgt.tgt_ops->handle_tmr(mcmd, unpacked_lun, mcmd->tmr_func, in __qlt_abort_task()
4580 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_abort_task()
4581 sess = ha->tgt.tgt_ops->find_sess_by_loop_id(vha, loop_id); in qlt_abort_task()
4582 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_abort_task()
4748 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qlt_handle_login()
4751 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_handle_login()
4943 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_24xx_handle_els() local
5015 spin_lock_irqsave(&tgt->ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5018 spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5052 spin_lock_irqsave(&tgt->ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5065 spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, in qlt_24xx_handle_els()
5091 spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, in qlt_24xx_handle_els()
5127 spin_unlock_irqrestore(&tgt->ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5168 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5170 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in qlt_24xx_handle_els()
5203 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_24xx_handle_els() local
5205 if (tgt->link_reinit_iocb_pending) { in qlt_24xx_handle_els()
5207 &tgt->link_reinit_iocb, 0, 0, 0, 0, 0, 0); in qlt_24xx_handle_els()
5208 tgt->link_reinit_iocb_pending = 0; in qlt_24xx_handle_els()
5270 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_handle_imm_notify() local
5277 if (tgt->link_reinit_iocb_pending) { in qlt_handle_imm_notify()
5279 &tgt->link_reinit_iocb, 0, 0, 0, 0, 0, 0); in qlt_handle_imm_notify()
5281 memcpy(&tgt->link_reinit_iocb, iocb, sizeof(*iocb)); in qlt_handle_imm_notify()
5282 tgt->link_reinit_iocb_pending = 1; in qlt_handle_imm_notify()
5393 spin_lock_irqsave(&ha->tgt.sess_lock, flags); in __qlt_send_busy()
5395 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); in __qlt_send_busy()
5456 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_alloc_qfull_cmd() local
5462 if (unlikely(tgt->tgt_stop)) { in qlt_alloc_qfull_cmd()
5464 "New command while device %p is shutting down\n", tgt); in qlt_alloc_qfull_cmd()
5468 if ((vha->hw->tgt.num_qfull_cmds_alloc + 1) > MAX_QFULL_CMDS_ALLOC) { in qlt_alloc_qfull_cmd()
5469 vha->hw->tgt.num_qfull_cmds_dropped++; in qlt_alloc_qfull_cmd()
5470 if (vha->hw->tgt.num_qfull_cmds_dropped > in qlt_alloc_qfull_cmd()
5473 vha->hw->tgt.num_qfull_cmds_dropped; in qlt_alloc_qfull_cmd()
5478 vha->hw->tgt.num_qfull_cmds_dropped); in qlt_alloc_qfull_cmd()
5484 sess = ha->tgt.tgt_ops->find_sess_by_s_id in qlt_alloc_qfull_cmd()
5489 cmd = ha->tgt.tgt_ops->get_cmd(sess); in qlt_alloc_qfull_cmd()
5495 vha->hw->tgt.num_qfull_cmds_dropped++; in qlt_alloc_qfull_cmd()
5496 if (vha->hw->tgt.num_qfull_cmds_dropped > in qlt_alloc_qfull_cmd()
5499 vha->hw->tgt.num_qfull_cmds_dropped; in qlt_alloc_qfull_cmd()
5509 cmd->tgt = vha->vha_tgt.qla_tgt; in qlt_alloc_qfull_cmd()
5522 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); in qlt_alloc_qfull_cmd()
5523 list_add_tail(&cmd->cmd_list, &vha->hw->tgt.q_full_list); in qlt_alloc_qfull_cmd()
5525 vha->hw->tgt.num_qfull_cmds_alloc++; in qlt_alloc_qfull_cmd()
5526 if (vha->hw->tgt.num_qfull_cmds_alloc > in qlt_alloc_qfull_cmd()
5529 vha->hw->tgt.num_qfull_cmds_alloc; in qlt_alloc_qfull_cmd()
5530 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_alloc_qfull_cmd()
5543 if (list_empty(&ha->tgt.q_full_list)) in qlt_free_qfull_cmds()
5549 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); in qlt_free_qfull_cmds()
5550 if (list_empty(&ha->tgt.q_full_list)) { in qlt_free_qfull_cmds()
5551 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_free_qfull_cmds()
5555 list_splice_init(&vha->hw->tgt.q_full_list, &q_full_list); in qlt_free_qfull_cmds()
5556 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_free_qfull_cmds()
5585 vha->hw->tgt.num_qfull_cmds_alloc--; in qlt_free_qfull_cmds()
5600 spin_lock_irqsave(&vha->hw->tgt.q_full_lock, flags); in qlt_free_qfull_cmds()
5601 list_splice(&q_full_list, &vha->hw->tgt.q_full_list); in qlt_free_qfull_cmds()
5602 spin_unlock_irqrestore(&vha->hw->tgt.q_full_lock, flags); in qlt_free_qfull_cmds()
5627 if (ha->tgt.num_pend_cmds < Q_FULL_THRESH_HOLD(ha)) in qlt_chk_qfull_thresh_hold()
5645 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_24xx_atio_pkt() local
5649 if (unlikely(tgt == NULL)) { in qlt_24xx_atio_pkt()
5659 tgt->atio_irq_cmd_count++; in qlt_24xx_atio_pkt()
5682 tgt->atio_irq_cmd_count--; in qlt_24xx_atio_pkt()
5751 tgt->atio_irq_cmd_count--; in qlt_24xx_atio_pkt()
5830 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5841 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5844 ha->tgt.tgt_ops->free_mcmd(mcmd); in qlt_handle_abts_completion()
5853 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_response_pkt() local
5855 if (unlikely(tgt == NULL)) { in qlt_response_pkt()
5955 if (tgt->notify_ack_expected > 0) { in qlt_response_pkt()
5962 tgt->notify_ack_expected--; in qlt_response_pkt()
5984 if (tgt->abts_resp_expected > 0) { in qlt_response_pkt()
6009 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_async_event() local
6012 if (!tgt || tgt->tgt_stop || tgt->tgt_stopped) in qlt_async_event()
6043 if (tgt->link_reinit_iocb_pending) { in qlt_async_event()
6045 &tgt->link_reinit_iocb, in qlt_async_event()
6047 tgt->link_reinit_iocb_pending = 0; in qlt_async_event()
6138 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qlt_get_port_database()
6164 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qlt_get_port_database()
6261 static void qlt_abort_work(struct qla_tgt *tgt, in qlt_abort_work() argument
6264 struct scsi_qla_host *vha = tgt->vha; in qlt_abort_work()
6271 spin_lock_irqsave(&ha->tgt.sess_lock, flags2); in qlt_abort_work()
6273 if (tgt->tgt_stop) in qlt_abort_work()
6278 sess = ha->tgt.tgt_ops->find_sess_by_s_id(vha, s_id); in qlt_abort_work()
6280 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); in qlt_abort_work()
6285 spin_lock_irqsave(&ha->tgt.sess_lock, flags2); in qlt_abort_work()
6304 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); in qlt_abort_work()
6306 ha->tgt.tgt_ops->put_sess(sess); in qlt_abort_work()
6313 spin_unlock_irqrestore(&ha->tgt.sess_lock, flags2); in qlt_abort_work()
6324 struct qla_tgt *tgt = container_of(work, struct qla_tgt, sess_work); in qlt_sess_work_fn() local
6325 struct scsi_qla_host *vha = tgt->vha; in qlt_sess_work_fn()
6328 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf000, "Sess work (tgt %p)", tgt); in qlt_sess_work_fn()
6330 spin_lock_irqsave(&tgt->sess_work_lock, flags); in qlt_sess_work_fn()
6331 while (!list_empty(&tgt->sess_works_list)) { in qlt_sess_work_fn()
6333 tgt->sess_works_list.next, typeof(*prm), in qlt_sess_work_fn()
6342 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); in qlt_sess_work_fn()
6346 qlt_abort_work(tgt, prm); in qlt_sess_work_fn()
6353 spin_lock_irqsave(&tgt->sess_work_lock, flags); in qlt_sess_work_fn()
6357 spin_unlock_irqrestore(&tgt->sess_work_lock, flags); in qlt_sess_work_fn()
6363 struct qla_tgt *tgt; in qlt_add_target() local
6381 tgt = kzalloc(sizeof(struct qla_tgt), GFP_KERNEL); in qlt_add_target()
6382 if (!tgt) { in qlt_add_target()
6388 tgt->qphints = kcalloc(ha->max_qpairs + 1, in qlt_add_target()
6391 if (!tgt->qphints) { in qlt_add_target()
6392 kfree(tgt); in qlt_add_target()
6401 rc = btree_init64(&tgt->lun_qpair_map); in qlt_add_target()
6403 kfree(tgt->qphints); in qlt_add_target()
6404 kfree(tgt); in qlt_add_target()
6409 h = &tgt->qphints[0]; in qlt_add_target()
6420 h = &tgt->qphints[i + 1]; in qlt_add_target()
6431 tgt->ha = ha; in qlt_add_target()
6432 tgt->vha = base_vha; in qlt_add_target()
6433 init_waitqueue_head(&tgt->waitQ); in qlt_add_target()
6434 spin_lock_init(&tgt->sess_work_lock); in qlt_add_target()
6435 INIT_WORK(&tgt->sess_work, qlt_sess_work_fn); in qlt_add_target()
6436 INIT_LIST_HEAD(&tgt->sess_works_list); in qlt_add_target()
6437 atomic_set(&tgt->tgt_global_resets_count, 0); in qlt_add_target()
6439 base_vha->vha_tgt.qla_tgt = tgt; in qlt_add_target()
6445 tgt->sg_tablesize = QLA_TGT_MAX_SG_24XX(base_vha->req->length - 3); in qlt_add_target()
6448 list_add_tail(&tgt->tgt_list_entry, &qla_tgt_glist); in qlt_add_target()
6451 if (ha->tgt.tgt_ops && ha->tgt.tgt_ops->add_target) in qlt_add_target()
6452 ha->tgt.tgt_ops->add_target(base_vha); in qlt_add_target()
6511 struct qla_tgt *tgt; in qlt_lport_register() local
6520 list_for_each_entry(tgt, &qla_tgt_glist, tgt_list_entry) { in qlt_lport_register()
6521 vha = tgt->vha; in qlt_lport_register()
6541 if (tgt->tgt_stop) { in qlt_lport_register()
6587 ha->tgt.tgt_ops = NULL; in qlt_lport_deregister()
6642 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_enable_vha() local
6646 if (!tgt) { in qlt_enable_vha()
6656 if (ha->tgt.num_act_qpairs > ha->max_qpairs) in qlt_enable_vha()
6657 ha->tgt.num_act_qpairs = ha->max_qpairs; in qlt_enable_vha()
6659 tgt->tgt_stopped = 0; in qlt_enable_vha()
6687 struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; in qlt_disable_vha() local
6690 if (!tgt) { in qlt_disable_vha()
6738 ha->tgt.atio_q_length = ATIO_ENTRY_CNT_24XX; in qlt_vport_create()
6774 struct atio_from_isp *pkt = (struct atio_from_isp *)ha->tgt.atio_ring; in qlt_init_atio_q_entries()
6779 for (cnt = 0; cnt < ha->tgt.atio_q_length; cnt++) { in qlt_init_atio_q_entries()
6800 while ((ha->tgt.atio_ring_ptr->signature != ATIO_PROCESSED) || in qlt_24xx_process_atio_queue()
6801 fcpcmd_is_corrupted(ha->tgt.atio_ring_ptr)) { in qlt_24xx_process_atio_queue()
6802 pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; in qlt_24xx_process_atio_queue()
6805 if (unlikely(fcpcmd_is_corrupted(ha->tgt.atio_ring_ptr))) { in qlt_24xx_process_atio_queue()
6826 ha->tgt.atio_ring_index++; in qlt_24xx_process_atio_queue()
6827 if (ha->tgt.atio_ring_index == ha->tgt.atio_q_length) { in qlt_24xx_process_atio_queue()
6828 ha->tgt.atio_ring_index = 0; in qlt_24xx_process_atio_queue()
6829 ha->tgt.atio_ring_ptr = ha->tgt.atio_ring; in qlt_24xx_process_atio_queue()
6831 ha->tgt.atio_ring_ptr++; in qlt_24xx_process_atio_queue()
6834 pkt = (struct atio_from_isp *)ha->tgt.atio_ring_ptr; in qlt_24xx_process_atio_queue()
6840 wrt_reg_dword(ISP_ATIO_Q_OUT(vha), ha->tgt.atio_ring_index); in qlt_24xx_process_atio_queue()
6886 if (!ha->tgt.saved_set) { in qlt_24xx_config_nvram_stage1()
6888 ha->tgt.saved_exchange_count = nv->exchange_count; in qlt_24xx_config_nvram_stage1()
6889 ha->tgt.saved_firmware_options_1 = in qlt_24xx_config_nvram_stage1()
6891 ha->tgt.saved_firmware_options_2 = in qlt_24xx_config_nvram_stage1()
6893 ha->tgt.saved_firmware_options_3 = in qlt_24xx_config_nvram_stage1()
6895 ha->tgt.saved_set = 1; in qlt_24xx_config_nvram_stage1()
6941 if (ha->tgt.saved_set) { in qlt_24xx_config_nvram_stage1()
6942 nv->exchange_count = ha->tgt.saved_exchange_count; in qlt_24xx_config_nvram_stage1()
6944 ha->tgt.saved_firmware_options_1; in qlt_24xx_config_nvram_stage1()
6946 ha->tgt.saved_firmware_options_2; in qlt_24xx_config_nvram_stage1()
6948 ha->tgt.saved_firmware_options_3; in qlt_24xx_config_nvram_stage1()
6976 if (ha->tgt.node_name_set) { in qlt_24xx_config_nvram_stage2()
6977 memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); in qlt_24xx_config_nvram_stage2()
6992 if (!ha->tgt.saved_set) { in qlt_81xx_config_nvram_stage1()
6994 ha->tgt.saved_exchange_count = nv->exchange_count; in qlt_81xx_config_nvram_stage1()
6995 ha->tgt.saved_firmware_options_1 = in qlt_81xx_config_nvram_stage1()
6997 ha->tgt.saved_firmware_options_2 = in qlt_81xx_config_nvram_stage1()
6999 ha->tgt.saved_firmware_options_3 = in qlt_81xx_config_nvram_stage1()
7001 ha->tgt.saved_set = 1; in qlt_81xx_config_nvram_stage1()
7044 if (ha->tgt.saved_set) { in qlt_81xx_config_nvram_stage1()
7045 nv->exchange_count = ha->tgt.saved_exchange_count; in qlt_81xx_config_nvram_stage1()
7047 ha->tgt.saved_firmware_options_1; in qlt_81xx_config_nvram_stage1()
7049 ha->tgt.saved_firmware_options_2; in qlt_81xx_config_nvram_stage1()
7051 ha->tgt.saved_firmware_options_3; in qlt_81xx_config_nvram_stage1()
7079 if (ha->tgt.node_name_set) { in qlt_81xx_config_nvram_stage2()
7080 memcpy(icb->node_name, ha->tgt.tgt_node_name, WWN_SIZE); in qlt_81xx_config_nvram_stage2()
7146 spin_lock_irqsave(&ha->tgt.atio_lock, flags); in qla83xx_msix_atio_q()
7150 spin_unlock_irqrestore(&ha->tgt.atio_lock, flags); in qla83xx_msix_atio_q()
7168 spin_lock_irqsave(&ha->tgt.atio_lock, flags); in qlt_handle_abts_recv_work()
7170 spin_unlock_irqrestore(&ha->tgt.atio_lock, flags); in qlt_handle_abts_recv_work()
7210 ha->tgt.atio_ring = dma_alloc_coherent(&ha->pdev->dev, in qlt_mem_alloc()
7211 (ha->tgt.atio_q_length + 1) * sizeof(struct atio_from_isp), in qlt_mem_alloc()
7212 &ha->tgt.atio_dma, GFP_KERNEL); in qlt_mem_alloc()
7213 if (!ha->tgt.atio_ring) { in qlt_mem_alloc()
7225 if (ha->tgt.atio_ring) { in qlt_mem_free()
7226 dma_free_coherent(&ha->pdev->dev, (ha->tgt.atio_q_length + 1) * in qlt_mem_free()
7227 sizeof(struct atio_from_isp), ha->tgt.atio_ring, in qlt_mem_free()
7228 ha->tgt.atio_dma); in qlt_mem_free()
7230 ha->tgt.atio_ring = NULL; in qlt_mem_free()
7231 ha->tgt.atio_dma = 0; in qlt_mem_free()