Lines Matching refs:vha
30 qla2x00_prep_ms_iocb(scsi_qla_host_t *vha, struct ct_arg *arg) in qla2x00_prep_ms_iocb() argument
32 struct qla_hw_data *ha = vha->hw; in qla2x00_prep_ms_iocb()
56 vha->qla_stats.control_requests++; in qla2x00_prep_ms_iocb()
69 qla24xx_prep_ms_iocb(scsi_qla_host_t *vha, struct ct_arg *arg) in qla24xx_prep_ms_iocb() argument
71 struct qla_hw_data *ha = vha->hw; in qla24xx_prep_ms_iocb()
93 ct_pkt->vp_index = vha->vp_idx; in qla24xx_prep_ms_iocb()
95 vha->qla_stats.control_requests++; in qla24xx_prep_ms_iocb()
123 qla2x00_chk_ms_status(scsi_qla_host_t *vha, ms_iocb_entry_t *ms_pkt, in qla2x00_chk_ms_status() argument
128 struct qla_hw_data *ha = vha->hw; in qla2x00_chk_ms_status()
133 ql_dbg(ql_dbg_disc, vha, 0x2031, in qla2x00_chk_ms_status()
135 routine, ms_pkt->entry_status, vha->d_id.b.domain, in qla2x00_chk_ms_status()
136 vha->d_id.b.area, vha->d_id.b.al_pa); in qla2x00_chk_ms_status()
149 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2077, in qla2x00_chk_ms_status()
151 routine, vha->d_id.b.domain, in qla2x00_chk_ms_status()
152 vha->d_id.b.area, vha->d_id.b.al_pa, in qla2x00_chk_ms_status()
154 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, in qla2x00_chk_ms_status()
172 ql_dbg(ql_dbg_async, vha, 0x502b, in qla2x00_chk_ms_status()
176 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_chk_ms_status()
177 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_chk_ms_status()
184 ql_dbg(ql_dbg_disc, vha, 0x2033, in qla2x00_chk_ms_status()
187 vha->d_id.b.domain, vha->d_id.b.area, in qla2x00_chk_ms_status()
188 vha->d_id.b.al_pa); in qla2x00_chk_ms_status()
203 qla2x00_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_ga_nxt() argument
210 struct qla_hw_data *ha = vha->hw; in qla2x00_ga_nxt()
214 return qla2x00_sns_ga_nxt(vha, fcport); in qla2x00_ga_nxt()
225 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_ga_nxt()
238 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_ga_nxt()
242 ql_dbg(ql_dbg_disc, vha, 0x2062, in qla2x00_ga_nxt()
244 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "GA_NXT") != in qla2x00_ga_nxt()
265 ql_dbg(ql_dbg_disc, vha, 0x2063, in qla2x00_ga_nxt()
277 qla2x00_gid_pt_rsp_size(scsi_qla_host_t *vha) in qla2x00_gid_pt_rsp_size() argument
279 return vha->hw->max_fibre_devices * 4 + 16; in qla2x00_gid_pt_rsp_size()
292 qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gid_pt() argument
302 struct qla_hw_data *ha = vha->hw; in qla2x00_gid_pt()
307 return qla2x00_sns_gid_pt(vha, list); in qla2x00_gid_pt()
310 gid_pt_rsp_size = qla2x00_gid_pt_rsp_size(vha); in qla2x00_gid_pt()
321 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_gid_pt()
331 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gid_pt()
335 ql_dbg(ql_dbg_disc, vha, 0x2055, in qla2x00_gid_pt()
337 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "GID_PT") != in qla2x00_gid_pt()
378 qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gpn_id() argument
386 struct qla_hw_data *ha = vha->hw; in qla2x00_gpn_id()
390 return qla2x00_sns_gpn_id(vha, list); in qla2x00_gpn_id()
402 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_gpn_id()
415 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gpn_id()
419 ql_dbg(ql_dbg_disc, vha, 0x2056, in qla2x00_gpn_id()
422 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, in qla2x00_gpn_id()
448 qla2x00_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gnn_id() argument
452 struct qla_hw_data *ha = vha->hw; in qla2x00_gnn_id()
459 return qla2x00_sns_gnn_id(vha, list); in qla2x00_gnn_id()
471 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_gnn_id()
484 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gnn_id()
488 ql_dbg(ql_dbg_disc, vha, 0x2057, in qla2x00_gnn_id()
491 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, in qla2x00_gnn_id()
500 ql_dbg(ql_dbg_disc, vha, 0x2058, in qla2x00_gnn_id()
519 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_sns_sp_done() local
525 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_sns_sp_done()
529 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_sns_sp_done()
538 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_sns_sp_done()
542 e = qla2x00_alloc_work(vha, QLA_EVT_SP_RETRY); in qla2x00_async_sns_sp_done()
548 qla2x00_post_work(vha, e); in qla2x00_async_sns_sp_done()
553 e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP); in qla2x00_async_sns_sp_done()
558 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_sns_sp_done()
566 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_sns_sp_done()
579 qla2x00_post_work(vha, e); in qla2x00_async_sns_sp_done()
589 qla2x00_rft_id(scsi_qla_host_t *vha) in qla2x00_rft_id() argument
591 struct qla_hw_data *ha = vha->hw; in qla2x00_rft_id()
594 return qla2x00_sns_rft_id(vha); in qla2x00_rft_id()
596 return qla_async_rftid(vha, &vha->d_id); in qla2x00_rft_id()
599 static int qla_async_rftid(scsi_qla_host_t *vha, port_id_t *d_id) in qla_async_rftid() argument
606 if (!vha->flags.online) in qla_async_rftid()
609 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla_async_rftid()
615 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla_async_rftid()
617 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rftid()
622 ql_log(ql_log_warn, vha, 0xd041, in qla_async_rftid()
628 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rftid()
633 ql_log(ql_log_warn, vha, 0xd042, in qla_async_rftid()
646 ct_req->req.rft_id.port_id[0] = vha->d_id.b.domain; in qla_async_rftid()
647 ct_req->req.rft_id.port_id[1] = vha->d_id.b.area; in qla_async_rftid()
648 ct_req->req.rft_id.port_id[2] = vha->d_id.b.al_pa; in qla_async_rftid()
651 if (vha->flags.nvme_enabled) in qla_async_rftid()
662 ql_dbg(ql_dbg_disc, vha, 0x2043, in qla_async_rftid()
666 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla_async_rftid()
684 qla2x00_rff_id(scsi_qla_host_t *vha, u8 type) in qla2x00_rff_id() argument
686 struct qla_hw_data *ha = vha->hw; in qla2x00_rff_id()
689 ql_dbg(ql_dbg_disc, vha, 0x2046, in qla2x00_rff_id()
694 return qla_async_rffid(vha, &vha->d_id, qlt_rff_id(vha), in qla2x00_rff_id()
698 static int qla_async_rffid(scsi_qla_host_t *vha, port_id_t *d_id, in qla_async_rffid() argument
706 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla_async_rffid()
712 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla_async_rffid()
714 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rffid()
719 ql_log(ql_log_warn, vha, 0xd041, in qla_async_rffid()
725 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rffid()
730 ql_log(ql_log_warn, vha, 0xd042, in qla_async_rffid()
757 ql_dbg(ql_dbg_disc, vha, 0x2047, in qla_async_rffid()
762 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla_async_rffid()
780 qla2x00_rnn_id(scsi_qla_host_t *vha) in qla2x00_rnn_id() argument
782 struct qla_hw_data *ha = vha->hw; in qla2x00_rnn_id()
785 return qla2x00_sns_rnn_id(vha); in qla2x00_rnn_id()
787 return qla_async_rnnid(vha, &vha->d_id, vha->node_name); in qla2x00_rnn_id()
790 static int qla_async_rnnid(scsi_qla_host_t *vha, port_id_t *d_id, in qla_async_rnnid() argument
798 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla_async_rnnid()
804 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla_async_rnnid()
806 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rnnid()
811 ql_log(ql_log_warn, vha, 0xd041, in qla_async_rnnid()
817 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rnnid()
822 ql_log(ql_log_warn, vha, 0xd042, in qla_async_rnnid()
835 ct_req->req.rnn_id.port_id[0] = vha->d_id.b.domain; in qla_async_rnnid()
836 ct_req->req.rnn_id.port_id[1] = vha->d_id.b.area; in qla_async_rnnid()
837 ct_req->req.rnn_id.port_id[2] = vha->d_id.b.al_pa; in qla_async_rnnid()
838 memcpy(ct_req->req.rnn_id.node_name, vha->node_name, WWN_SIZE); in qla_async_rnnid()
849 ql_dbg(ql_dbg_disc, vha, 0x204d, in qla_async_rnnid()
853 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla_async_rnnid()
866 qla2x00_get_sym_node_name(scsi_qla_host_t *vha, uint8_t *snn, size_t size) in qla2x00_get_sym_node_name() argument
868 struct qla_hw_data *ha = vha->hw; in qla2x00_get_sym_node_name()
887 qla2x00_rsnn_nn(scsi_qla_host_t *vha) in qla2x00_rsnn_nn() argument
889 struct qla_hw_data *ha = vha->hw; in qla2x00_rsnn_nn()
892 ql_dbg(ql_dbg_disc, vha, 0x2050, in qla2x00_rsnn_nn()
897 return qla_async_rsnn_nn(vha); in qla2x00_rsnn_nn()
900 static int qla_async_rsnn_nn(scsi_qla_host_t *vha) in qla_async_rsnn_nn() argument
907 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla_async_rsnn_nn()
913 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla_async_rsnn_nn()
915 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rsnn_nn()
920 ql_log(ql_log_warn, vha, 0xd041, in qla_async_rsnn_nn()
926 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, in qla_async_rsnn_nn()
931 ql_log(ql_log_warn, vha, 0xd042, in qla_async_rsnn_nn()
944 memcpy(ct_req->req.rsnn_nn.node_name, vha->node_name, WWN_SIZE); in qla_async_rsnn_nn()
947 qla2x00_get_sym_node_name(vha, ct_req->req.rsnn_nn.sym_node_name, in qla_async_rsnn_nn()
962 ql_dbg(ql_dbg_disc, vha, 0x2043, in qla_async_rsnn_nn()
966 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla_async_rsnn_nn()
988 qla2x00_prep_sns_cmd(scsi_qla_host_t *vha, uint16_t cmd, uint16_t scmd_len, in qla2x00_prep_sns_cmd() argument
993 struct qla_hw_data *ha = vha->hw; in qla2x00_prep_sns_cmd()
1006 vha->qla_stats.control_requests++; in qla2x00_prep_sns_cmd()
1021 qla2x00_sns_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_sns_ga_nxt() argument
1024 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_ga_nxt()
1029 sns_cmd = qla2x00_prep_sns_cmd(vha, GA_NXT_CMD, GA_NXT_SNS_SCMD_LEN, in qla2x00_sns_ga_nxt()
1038 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, GA_NXT_SNS_CMD_SIZE / 2, in qla2x00_sns_ga_nxt()
1042 ql_dbg(ql_dbg_disc, vha, 0x205f, in qla2x00_sns_ga_nxt()
1046 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2084, in qla2x00_sns_ga_nxt()
1048 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2074, in qla2x00_sns_ga_nxt()
1064 ql_dbg(ql_dbg_disc, vha, 0x2061, in qla2x00_sns_ga_nxt()
1087 qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_sns_gid_pt() argument
1090 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_gid_pt()
1096 gid_pt_sns_data_size = qla2x00_gid_pt_rsp_size(vha); in qla2x00_sns_gid_pt()
1100 sns_cmd = qla2x00_prep_sns_cmd(vha, GID_PT_CMD, GID_PT_SNS_SCMD_LEN, in qla2x00_sns_gid_pt()
1107 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, GID_PT_SNS_CMD_SIZE / 2, in qla2x00_sns_gid_pt()
1111 ql_dbg(ql_dbg_disc, vha, 0x206d, in qla2x00_sns_gid_pt()
1115 ql_dbg(ql_dbg_disc, vha, 0x202f, in qla2x00_sns_gid_pt()
1117 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2081, in qla2x00_sns_gid_pt()
1158 qla2x00_sns_gpn_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_sns_gpn_id() argument
1161 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_gpn_id()
1168 sns_cmd = qla2x00_prep_sns_cmd(vha, GPN_ID_CMD, in qla2x00_sns_gpn_id()
1177 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, in qla2x00_sns_gpn_id()
1181 ql_dbg(ql_dbg_disc, vha, 0x2032, in qla2x00_sns_gpn_id()
1185 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x207e, in qla2x00_sns_gpn_id()
1187 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207f, in qla2x00_sns_gpn_id()
1214 qla2x00_sns_gnn_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_sns_gnn_id() argument
1217 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_gnn_id()
1224 sns_cmd = qla2x00_prep_sns_cmd(vha, GNN_ID_CMD, in qla2x00_sns_gnn_id()
1233 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, in qla2x00_sns_gnn_id()
1237 ql_dbg(ql_dbg_disc, vha, 0x203f, in qla2x00_sns_gnn_id()
1241 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2082, in qla2x00_sns_gnn_id()
1243 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207a, in qla2x00_sns_gnn_id()
1251 ql_dbg(ql_dbg_disc, vha, 0x206e, in qla2x00_sns_gnn_id()
1276 qla2x00_sns_rft_id(scsi_qla_host_t *vha) in qla2x00_sns_rft_id() argument
1279 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_rft_id()
1284 sns_cmd = qla2x00_prep_sns_cmd(vha, RFT_ID_CMD, RFT_ID_SNS_SCMD_LEN, in qla2x00_sns_rft_id()
1288 sns_cmd->p.cmd.param[0] = vha->d_id.b.al_pa; in qla2x00_sns_rft_id()
1289 sns_cmd->p.cmd.param[1] = vha->d_id.b.area; in qla2x00_sns_rft_id()
1290 sns_cmd->p.cmd.param[2] = vha->d_id.b.domain; in qla2x00_sns_rft_id()
1295 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, RFT_ID_SNS_CMD_SIZE / 2, in qla2x00_sns_rft_id()
1299 ql_dbg(ql_dbg_disc, vha, 0x2060, in qla2x00_sns_rft_id()
1303 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2083, in qla2x00_sns_rft_id()
1305 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2080, in qla2x00_sns_rft_id()
1309 ql_dbg(ql_dbg_disc, vha, 0x2073, in qla2x00_sns_rft_id()
1325 qla2x00_sns_rnn_id(scsi_qla_host_t *vha) in qla2x00_sns_rnn_id() argument
1328 struct qla_hw_data *ha = vha->hw; in qla2x00_sns_rnn_id()
1333 sns_cmd = qla2x00_prep_sns_cmd(vha, RNN_ID_CMD, RNN_ID_SNS_SCMD_LEN, in qla2x00_sns_rnn_id()
1337 sns_cmd->p.cmd.param[0] = vha->d_id.b.al_pa; in qla2x00_sns_rnn_id()
1338 sns_cmd->p.cmd.param[1] = vha->d_id.b.area; in qla2x00_sns_rnn_id()
1339 sns_cmd->p.cmd.param[2] = vha->d_id.b.domain; in qla2x00_sns_rnn_id()
1341 sns_cmd->p.cmd.param[4] = vha->node_name[7]; in qla2x00_sns_rnn_id()
1342 sns_cmd->p.cmd.param[5] = vha->node_name[6]; in qla2x00_sns_rnn_id()
1343 sns_cmd->p.cmd.param[6] = vha->node_name[5]; in qla2x00_sns_rnn_id()
1344 sns_cmd->p.cmd.param[7] = vha->node_name[4]; in qla2x00_sns_rnn_id()
1345 sns_cmd->p.cmd.param[8] = vha->node_name[3]; in qla2x00_sns_rnn_id()
1346 sns_cmd->p.cmd.param[9] = vha->node_name[2]; in qla2x00_sns_rnn_id()
1347 sns_cmd->p.cmd.param[10] = vha->node_name[1]; in qla2x00_sns_rnn_id()
1348 sns_cmd->p.cmd.param[11] = vha->node_name[0]; in qla2x00_sns_rnn_id()
1351 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, RNN_ID_SNS_CMD_SIZE / 2, in qla2x00_sns_rnn_id()
1355 ql_dbg(ql_dbg_disc, vha, 0x204a, in qla2x00_sns_rnn_id()
1359 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x207b, in qla2x00_sns_rnn_id()
1361 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207c, in qla2x00_sns_rnn_id()
1365 ql_dbg(ql_dbg_disc, vha, 0x204c, in qla2x00_sns_rnn_id()
1379 qla2x00_mgmt_svr_login(scsi_qla_host_t *vha) in qla2x00_mgmt_svr_login() argument
1383 struct qla_hw_data *ha = vha->hw; in qla2x00_mgmt_svr_login()
1385 if (vha->flags.management_server_logged_in) in qla2x00_mgmt_svr_login()
1388 rval = ha->isp_ops->fabric_login(vha, vha->mgmt_svr_loop_id, 0xff, 0xff, in qla2x00_mgmt_svr_login()
1392 ql_dbg(ql_dbg_disc, vha, 0x2085, in qla2x00_mgmt_svr_login()
1394 "rval=%d\n", vha->mgmt_svr_loop_id, rval); in qla2x00_mgmt_svr_login()
1396 ql_dbg(ql_dbg_disc, vha, 0x2024, in qla2x00_mgmt_svr_login()
1399 vha->mgmt_svr_loop_id, mb[0], mb[1], mb[2], mb[6], in qla2x00_mgmt_svr_login()
1403 vha->flags.management_server_logged_in = 1; in qla2x00_mgmt_svr_login()
1417 qla2x00_prep_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size, in qla2x00_prep_ms_fdmi_iocb() argument
1421 struct qla_hw_data *ha = vha->hw; in qla2x00_prep_ms_fdmi_iocb()
1427 SET_TARGET_ID(ha, ms_pkt->loop_id, vha->mgmt_svr_loop_id); in qla2x00_prep_ms_fdmi_iocb()
1455 qla24xx_prep_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size, in qla24xx_prep_ms_fdmi_iocb() argument
1459 struct qla_hw_data *ha = vha->hw; in qla24xx_prep_ms_fdmi_iocb()
1466 ct_pkt->nport_handle = cpu_to_le16(vha->mgmt_svr_loop_id); in qla24xx_prep_ms_fdmi_iocb()
1480 ct_pkt->vp_index = vha->vp_idx; in qla24xx_prep_ms_fdmi_iocb()
1486 qla2x00_update_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size) in qla2x00_update_ms_fdmi_iocb() argument
1488 struct qla_hw_data *ha = vha->hw; in qla2x00_update_ms_fdmi_iocb()
1533 qla2x00_fdmi_rhba(scsi_qla_host_t *vha) in qla2x00_fdmi_rhba() argument
1543 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmi_rhba()
1548 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, RHBA_RSP_SIZE); in qla2x00_fdmi_rhba()
1555 memcpy(ct_req->req.rhba.hba_identifier, vha->port_name, WWN_SIZE); in qla2x00_fdmi_rhba()
1557 memcpy(ct_req->req.rhba.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmi_rhba()
1569 memcpy(eiter->a.node_name, vha->node_name, WWN_SIZE); in qla2x00_fdmi_rhba()
1572 ql_dbg(ql_dbg_disc, vha, 0x2025, in qla2x00_fdmi_rhba()
1585 ql_dbg(ql_dbg_disc, vha, 0x2026, in qla2x00_fdmi_rhba()
1592 qla2xxx_get_vpd_field(vha, "SN", eiter->a.serial_num, in qla2x00_fdmi_rhba()
1605 ql_dbg(ql_dbg_disc, vha, 0x2027, in qla2x00_fdmi_rhba()
1618 ql_dbg(ql_dbg_disc, vha, 0x2028, in qla2x00_fdmi_rhba()
1631 ql_dbg(ql_dbg_disc, vha, 0x2029, in qla2x00_fdmi_rhba()
1640 } else if (qla2xxx_get_vpd_field(vha, "MN", eiter->a.hw_version, in qla2x00_fdmi_rhba()
1643 } else if (qla2xxx_get_vpd_field(vha, "EC", eiter->a.hw_version, in qla2x00_fdmi_rhba()
1655 ql_dbg(ql_dbg_disc, vha, 0x202a, in qla2x00_fdmi_rhba()
1668 ql_dbg(ql_dbg_disc, vha, 0x202b, in qla2x00_fdmi_rhba()
1681 ql_dbg(ql_dbg_disc, vha , 0x202c, in qla2x00_fdmi_rhba()
1687 ha->isp_ops->fw_version_str(vha, eiter->a.fw_version, in qla2x00_fdmi_rhba()
1694 ql_dbg(ql_dbg_disc, vha, 0x202d, in qla2x00_fdmi_rhba()
1698 qla2x00_update_ms_fdmi_iocb(vha, size + 16); in qla2x00_fdmi_rhba()
1700 ql_dbg(ql_dbg_disc, vha, 0x202e, in qla2x00_fdmi_rhba()
1703 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2076, in qla2x00_fdmi_rhba()
1707 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_fdmi_rhba()
1711 ql_dbg(ql_dbg_disc, vha, 0x2030, in qla2x00_fdmi_rhba()
1713 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RHBA") != in qla2x00_fdmi_rhba()
1719 ql_dbg(ql_dbg_disc, vha, 0x2034, in qla2x00_fdmi_rhba()
1723 ql_dbg(ql_dbg_disc, vha, 0x20ad, in qla2x00_fdmi_rhba()
1729 ql_dbg(ql_dbg_disc, vha, 0x2035, in qla2x00_fdmi_rhba()
1743 qla2x00_fdmi_rpa(scsi_qla_host_t *vha) in qla2x00_fdmi_rpa() argument
1747 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmi_rpa()
1759 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, RPA_RSP_SIZE); in qla2x00_fdmi_rpa()
1767 memcpy(ct_req->req.rpa.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmi_rpa()
1781 ql_dbg(ql_dbg_disc, vha, 0x2039, in qla2x00_fdmi_rpa()
1823 ql_dbg(ql_dbg_disc, vha, 0x203a, in qla2x00_fdmi_rpa()
1866 ql_dbg(ql_dbg_disc, vha, 0x203b, in qla2x00_fdmi_rpa()
1879 ql_dbg(ql_dbg_disc, vha, 0x203c, in qla2x00_fdmi_rpa()
1886 "%s:host%lu", QLA2XXX_DRIVER_NAME, vha->host_no); in qla2x00_fdmi_rpa()
1892 ql_dbg(ql_dbg_disc, vha, 0x204b, in qla2x00_fdmi_rpa()
1904 "%s", fc_host_system_hostname(vha->host)); in qla2x00_fdmi_rpa()
1911 ql_dbg(ql_dbg_disc, vha, 0x203d, "HostName=%s.\n", eiter->a.host_name); in qla2x00_fdmi_rpa()
1914 qla2x00_update_ms_fdmi_iocb(vha, size + 16); in qla2x00_fdmi_rpa()
1916 ql_dbg(ql_dbg_disc, vha, 0x203e, in qla2x00_fdmi_rpa()
1919 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2079, in qla2x00_fdmi_rpa()
1923 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_fdmi_rpa()
1927 ql_dbg(ql_dbg_disc, vha, 0x2040, in qla2x00_fdmi_rpa()
1929 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RPA") != in qla2x00_fdmi_rpa()
1935 ql_dbg(ql_dbg_disc, vha, 0x20cd, in qla2x00_fdmi_rpa()
1941 ql_dbg(ql_dbg_disc, vha, 0x2041, in qla2x00_fdmi_rpa()
1955 qla2x00_fdmiv2_rhba(scsi_qla_host_t *vha) in qla2x00_fdmiv2_rhba() argument
1964 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmiv2_rhba()
1970 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, RHBA_RSP_SIZE); in qla2x00_fdmiv2_rhba()
1978 memcpy(ct_req->req.rhba2.hba_identifier, vha->port_name, WWN_SIZE); in qla2x00_fdmiv2_rhba()
1980 memcpy(ct_req->req.rhba2.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmiv2_rhba()
1991 memcpy(eiter->a.node_name, vha->node_name, WWN_SIZE); in qla2x00_fdmiv2_rhba()
1994 ql_dbg(ql_dbg_disc, vha, 0x207d, in qla2x00_fdmiv2_rhba()
2008 ql_dbg(ql_dbg_disc, vha, 0x20a5, in qla2x00_fdmiv2_rhba()
2015 qla2xxx_get_vpd_field(vha, "SN", eiter->a.serial_num, in qla2x00_fdmiv2_rhba()
2028 ql_dbg(ql_dbg_disc, vha, 0x20a6, in qla2x00_fdmiv2_rhba()
2041 ql_dbg(ql_dbg_disc, vha, 0x20a7, in qla2x00_fdmiv2_rhba()
2054 ql_dbg(ql_dbg_disc, vha, 0x20a8, in qla2x00_fdmiv2_rhba()
2063 } else if (qla2xxx_get_vpd_field(vha, "MN", eiter->a.hw_version, in qla2x00_fdmiv2_rhba()
2066 } else if (qla2xxx_get_vpd_field(vha, "EC", eiter->a.hw_version, in qla2x00_fdmiv2_rhba()
2078 ql_dbg(ql_dbg_disc, vha, 0x20a9, in qla2x00_fdmiv2_rhba()
2091 ql_dbg(ql_dbg_disc, vha, 0x20aa, in qla2x00_fdmiv2_rhba()
2104 ql_dbg(ql_dbg_disc, vha , 0x20ab, in qla2x00_fdmiv2_rhba()
2111 ha->isp_ops->fw_version_str(vha, eiter->a.fw_version, in qla2x00_fdmiv2_rhba()
2118 ql_dbg(ql_dbg_disc, vha, 0x20ac, in qla2x00_fdmiv2_rhba()
2131 "%s %s", "Linux", fc_host_system_hostname(vha->host)); in qla2x00_fdmiv2_rhba()
2138 ql_dbg(ql_dbg_disc, vha, 0x20ae, in qla2x00_fdmiv2_rhba()
2149 ql_dbg(ql_dbg_disc, vha, 0x20af, in qla2x00_fdmiv2_rhba()
2155 qla2x00_get_sym_node_name(vha, eiter->a.sym_name, in qla2x00_fdmiv2_rhba()
2162 ql_dbg(ql_dbg_disc, vha, 0x20b0, in qla2x00_fdmiv2_rhba()
2172 ql_dbg(ql_dbg_disc, vha, 0x20b1, in qla2x00_fdmiv2_rhba()
2182 ql_dbg(ql_dbg_disc, vha, 0x20b2, in qla2x00_fdmiv2_rhba()
2188 memcpy(eiter->a.fabric_name, vha->fabric_node_name, WWN_SIZE); in qla2x00_fdmiv2_rhba()
2192 ql_dbg(ql_dbg_disc, vha, 0x20b3, in qla2x00_fdmiv2_rhba()
2205 ql_dbg(ql_dbg_disc, vha, 0x20b4, in qla2x00_fdmiv2_rhba()
2218 ql_dbg(ql_dbg_disc, vha, 0x201b, in qla2x00_fdmiv2_rhba()
2222 qla2x00_update_ms_fdmi_iocb(vha, size + 16); in qla2x00_fdmiv2_rhba()
2224 ql_dbg(ql_dbg_disc, vha, 0x20b5, in qla2x00_fdmiv2_rhba()
2227 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x20b6, in qla2x00_fdmiv2_rhba()
2231 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_fdmiv2_rhba()
2235 ql_dbg(ql_dbg_disc, vha, 0x20b7, in qla2x00_fdmiv2_rhba()
2237 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RHBA") != in qla2x00_fdmiv2_rhba()
2244 ql_dbg(ql_dbg_disc, vha, 0x20b8, in qla2x00_fdmiv2_rhba()
2248 ql_dbg(ql_dbg_disc, vha, 0x2016, in qla2x00_fdmiv2_rhba()
2254 ql_dbg(ql_dbg_disc, vha, 0x20b9, in qla2x00_fdmiv2_rhba()
2268 qla2x00_fdmi_dhba(scsi_qla_host_t *vha) in qla2x00_fdmi_dhba() argument
2271 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmi_dhba()
2278 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, DHBA_REQ_SIZE, in qla2x00_fdmi_dhba()
2286 memcpy(ct_req->req.dhba.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmi_dhba()
2288 ql_dbg(ql_dbg_disc, vha, 0x2036, in qla2x00_fdmi_dhba()
2292 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_fdmi_dhba()
2296 ql_dbg(ql_dbg_disc, vha, 0x2037, in qla2x00_fdmi_dhba()
2298 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "DHBA") != in qla2x00_fdmi_dhba()
2302 ql_dbg(ql_dbg_disc, vha, 0x2038, in qla2x00_fdmi_dhba()
2316 qla2x00_fdmiv2_rpa(scsi_qla_host_t *vha) in qla2x00_fdmiv2_rpa() argument
2320 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmiv2_rpa()
2332 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, RPA_RSP_SIZE); in qla2x00_fdmiv2_rpa()
2339 memcpy(ct_req->req.rpa2.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmiv2_rpa()
2353 ql_dbg(ql_dbg_disc, vha, 0x20ba, in qla2x00_fdmiv2_rpa()
2358 if (vha->flags.nvme_enabled) { in qla2x00_fdmiv2_rpa()
2360 ql_dbg(ql_dbg_disc, vha, 0x211f, in qla2x00_fdmiv2_rpa()
2402 ql_dbg(ql_dbg_disc, vha, 0x20bb, in qla2x00_fdmiv2_rpa()
2437 ql_dbg(ql_dbg_disc, vha, 0x2017, in qla2x00_fdmiv2_rpa()
2450 ql_dbg(ql_dbg_disc, vha, 0x20bc, in qla2x00_fdmiv2_rpa()
2458 "%s:host%lu", QLA2XXX_DRIVER_NAME, vha->host_no); in qla2x00_fdmiv2_rpa()
2463 ql_dbg(ql_dbg_disc, vha, 0x20be, in qla2x00_fdmiv2_rpa()
2475 "%s", fc_host_system_hostname(vha->host)); in qla2x00_fdmiv2_rpa()
2482 ql_dbg(ql_dbg_disc, vha, 0x201a, in qla2x00_fdmiv2_rpa()
2488 memcpy(eiter->a.node_name, vha->node_name, WWN_SIZE); in qla2x00_fdmiv2_rpa()
2492 ql_dbg(ql_dbg_disc, vha, 0x20c0, in qla2x00_fdmiv2_rpa()
2498 memcpy(eiter->a.port_name, vha->port_name, WWN_SIZE); in qla2x00_fdmiv2_rpa()
2502 ql_dbg(ql_dbg_disc, vha, 0x20c1, in qla2x00_fdmiv2_rpa()
2508 qla2x00_get_sym_node_name(vha, eiter->a.port_sym_name, in qla2x00_fdmiv2_rpa()
2515 ql_dbg(ql_dbg_disc, vha, 0x20c2, in qla2x00_fdmiv2_rpa()
2525 ql_dbg(ql_dbg_disc, vha, 0x20c3, in qla2x00_fdmiv2_rpa()
2535 ql_dbg(ql_dbg_disc, vha, 0x20c4, in qla2x00_fdmiv2_rpa()
2541 memcpy(eiter->a.fabric_name, vha->fabric_node_name, WWN_SIZE); in qla2x00_fdmiv2_rpa()
2545 ql_dbg(ql_dbg_disc, vha, 0x20c5, in qla2x00_fdmiv2_rpa()
2558 ql_dbg(ql_dbg_disc, vha, 0x20c6, in qla2x00_fdmiv2_rpa()
2562 if (vha->flags.nvme_enabled) { in qla2x00_fdmiv2_rpa()
2566 ql_dbg(ql_dbg_disc, vha, 0x2120, in qla2x00_fdmiv2_rpa()
2578 ql_dbg(ql_dbg_disc, vha, 0x20c7, in qla2x00_fdmiv2_rpa()
2588 ql_dbg(ql_dbg_disc, vha, 0x20c8, in qla2x00_fdmiv2_rpa()
2594 eiter->a.port_id = cpu_to_be32(vha->d_id.b24); in qla2x00_fdmiv2_rpa()
2598 ql_dbg(ql_dbg_disc, vha, 0x201c, in qla2x00_fdmiv2_rpa()
2602 qla2x00_update_ms_fdmi_iocb(vha, size + 16); in qla2x00_fdmiv2_rpa()
2604 ql_dbg(ql_dbg_disc, vha, 0x2018, in qla2x00_fdmiv2_rpa()
2606 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x20ca, in qla2x00_fdmiv2_rpa()
2610 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_fdmiv2_rpa()
2614 ql_dbg(ql_dbg_disc, vha, 0x20cb, in qla2x00_fdmiv2_rpa()
2616 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RPA") != in qla2x00_fdmiv2_rpa()
2622 ql_dbg(ql_dbg_disc, vha, 0x20ce, in qla2x00_fdmiv2_rpa()
2626 ql_dbg(ql_dbg_disc, vha, 0x2020, in qla2x00_fdmiv2_rpa()
2632 ql_dbg(ql_dbg_disc, vha, 0x20cc, in qla2x00_fdmiv2_rpa()
2646 qla2x00_fdmi_register(scsi_qla_host_t *vha) in qla2x00_fdmi_register() argument
2649 struct qla_hw_data *ha = vha->hw; in qla2x00_fdmi_register()
2655 rval = qla2x00_mgmt_svr_login(vha); in qla2x00_fdmi_register()
2659 rval = qla2x00_fdmiv2_rhba(vha); in qla2x00_fdmi_register()
2664 rval = qla2x00_fdmi_dhba(vha); in qla2x00_fdmi_register()
2668 rval = qla2x00_fdmiv2_rhba(vha); in qla2x00_fdmi_register()
2672 rval = qla2x00_fdmiv2_rpa(vha); in qla2x00_fdmi_register()
2679 rval = qla2x00_fdmi_rhba(vha); in qla2x00_fdmi_register()
2684 rval = qla2x00_fdmi_dhba(vha); in qla2x00_fdmi_register()
2688 rval = qla2x00_fdmi_rhba(vha); in qla2x00_fdmi_register()
2692 rval = qla2x00_fdmi_rpa(vha); in qla2x00_fdmi_register()
2705 qla2x00_gfpn_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gfpn_id() argument
2709 struct qla_hw_data *ha = vha->hw; in qla2x00_gfpn_id()
2728 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_gfpn_id()
2741 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gfpn_id()
2745 ql_dbg(ql_dbg_disc, vha, 0x2023, in qla2x00_gfpn_id()
2748 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, in qla2x00_gfpn_id()
2790 qla2x00_gpsc(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gpsc() argument
2794 struct qla_hw_data *ha = vha->hw; in qla2x00_gpsc()
2805 rval = qla2x00_mgmt_svr_login(vha); in qla2x00_gpsc()
2814 arg.nport_handle = vha->mgmt_svr_loop_id; in qla2x00_gpsc()
2819 ms_pkt = qla24xx_prep_ms_iocb(vha, &arg); in qla2x00_gpsc()
2831 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gpsc()
2835 ql_dbg(ql_dbg_disc, vha, 0x2059, in qla2x00_gpsc()
2837 } else if ((rval = qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, in qla2x00_gpsc()
2845 ql_dbg(ql_dbg_disc, vha, 0x205a, in qla2x00_gpsc()
2879 ql_dbg(ql_dbg_disc, vha, 0x205b, in qla2x00_gpsc()
2903 qla2x00_gff_id(scsi_qla_host_t *vha, sw_info_t *list) in qla2x00_gff_id() argument
2911 struct qla_hw_data *ha = vha->hw; in qla2x00_gff_id()
2932 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg); in qla2x00_gff_id()
2945 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma, in qla2x00_gff_id()
2949 ql_dbg(ql_dbg_disc, vha, 0x205c, in qla2x00_gff_id()
2951 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, in qla2x00_gff_id()
2953 ql_dbg(ql_dbg_disc, vha, 0x205d, in qla2x00_gff_id()
2977 void qla24xx_handle_gidpn_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gidpn_event() argument
2981 ql_dbg(ql_dbg_disc, vha, 0x201d, in qla24xx_handle_gidpn_event()
2992 ql_dbg(ql_dbg_disc, vha, 0x201e, in qla24xx_handle_gidpn_event()
3006 switch (vha->host->active_mode) { in qla24xx_handle_gidpn_event()
3015 ql_dbg(ql_dbg_disc, vha, 0x201f, in qla24xx_handle_gidpn_event()
3021 vha, fcport, data); in qla24xx_handle_gidpn_event()
3027 ql_dbg(ql_dbg_disc, vha, 0x201f, in qla24xx_handle_gidpn_event()
3039 vha, fcport, data); in qla24xx_handle_gidpn_event()
3041 qla24xx_post_gnl_work(vha, in qla24xx_handle_gidpn_event()
3050 ql_dbg(ql_dbg_disc, vha, 0x2021, in qla24xx_handle_gidpn_event()
3057 ql_dbg(ql_dbg_disc, vha, 0x2022, in qla24xx_handle_gidpn_event()
3061 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_gidpn_event()
3067 ql_dbg(ql_dbg_disc, vha, 0x2042, in qla24xx_handle_gidpn_event()
3072 ql_dbg(ql_dbg_disc, vha, 0x2045, in qla24xx_handle_gidpn_event()
3075 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_handle_gidpn_event()
3078 ql_dbg(ql_dbg_disc, vha, 0x2049, in qla24xx_handle_gidpn_event()
3081 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_gidpn_event()
3089 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_gidpn_sp_done() local
3106 ql_dbg(ql_dbg_disc, sp->vha, 0xffff, in qla2x00_async_gidpn_sp_done()
3109 qla24xx_post_gidpn_work(sp->vha, fcport); in qla2x00_async_gidpn_sp_done()
3113 ql_dbg(ql_dbg_disc, sp->vha, 0xffff, in qla2x00_async_gidpn_sp_done()
3117 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_gidpn_sp_done()
3122 qla2x00_fcport_event_handler(vha, &ea); in qla2x00_async_gidpn_sp_done()
3127 int qla24xx_async_gidpn(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_async_gidpn() argument
3133 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gidpn()
3138 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC); in qla24xx_async_gidpn()
3148 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gidpn()
3174 ql_dbg(ql_dbg_disc, vha, 0x20a4, in qla24xx_async_gidpn()
3188 int qla24xx_post_gidpn_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_gidpn_work() argument
3193 ls = atomic_read(&vha->loop_state); in qla24xx_post_gidpn_work()
3195 test_bit(UNLOADING, &vha->dpc_flags)) in qla24xx_post_gidpn_work()
3198 e = qla2x00_alloc_work(vha, QLA_EVT_GIDPN); in qla24xx_post_gidpn_work()
3204 return qla2x00_post_work(vha, e); in qla24xx_post_gidpn_work()
3207 int qla24xx_post_gpsc_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_gpsc_work() argument
3211 e = qla2x00_alloc_work(vha, QLA_EVT_GPSC); in qla24xx_post_gpsc_work()
3217 return qla2x00_post_work(vha, e); in qla24xx_post_gpsc_work()
3220 void qla24xx_handle_gpsc_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gpsc_event() argument
3224 ql_dbg(ql_dbg_disc, vha, 0x20d8, in qla24xx_handle_gpsc_event()
3235 ql_dbg(ql_dbg_disc, vha, 0x20d3, in qla24xx_handle_gpsc_event()
3240 ql_dbg(ql_dbg_disc, vha, 0x20d4, "%s %d %8phC post gidpn\n", in qla24xx_handle_gpsc_event()
3242 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_gpsc_event()
3246 qla_post_iidma_work(vha, fcport); in qla24xx_handle_gpsc_event()
3252 struct scsi_qla_host *vha = sp->vha; in qla24xx_async_gpsc_sp_done() local
3253 struct qla_hw_data *ha = vha->hw; in qla24xx_async_gpsc_sp_done()
3260 ql_dbg(ql_dbg_disc, vha, 0x2053, in qla24xx_async_gpsc_sp_done()
3272 ql_dbg(ql_dbg_disc, vha, 0x2019, in qla24xx_async_gpsc_sp_done()
3302 ql_dbg(ql_dbg_disc, vha, 0x2054, in qla24xx_async_gpsc_sp_done()
3314 qla2x00_fcport_event_handler(vha, &ea); in qla24xx_async_gpsc_sp_done()
3319 int qla24xx_async_gpsc(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_async_gpsc() argument
3325 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gpsc()
3328 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_gpsc()
3337 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gpsc()
3353 sp->u.iocb_cmd.u.ctarg.nport_handle = vha->mgmt_svr_loop_id; in qla24xx_async_gpsc()
3362 ql_dbg(ql_dbg_disc, vha, 0x205e, in qla24xx_async_gpsc()
3377 int qla24xx_post_gpnid_work(struct scsi_qla_host *vha, port_id_t *id) in qla24xx_post_gpnid_work() argument
3381 if (test_bit(UNLOADING, &vha->dpc_flags)) in qla24xx_post_gpnid_work()
3384 e = qla2x00_alloc_work(vha, QLA_EVT_GPNID); in qla24xx_post_gpnid_work()
3389 return qla2x00_post_work(vha, e); in qla24xx_post_gpnid_work()
3392 void qla24xx_sp_unmap(scsi_qla_host_t *vha, srb_t *sp) in qla24xx_sp_unmap() argument
3399 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_sp_unmap()
3405 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_sp_unmap()
3413 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_sp_unmap()
3421 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_sp_unmap()
3433 void qla24xx_handle_gpnid_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gpnid_event() argument
3438 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3444 list_for_each_entry_safe(fcport, t, &vha->vp_fcports, list) { in qla24xx_handle_gpnid_event()
3446 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3457 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3468 fcport = qla2x00_find_fcport_by_wwpn(vha, ea->port_name, 1); in qla24xx_handle_gpnid_event()
3470 list_for_each_entry_safe(conflict, t, &vha->vp_fcports, in qla24xx_handle_gpnid_event()
3479 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3490 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3506 vha->hw->login_retry_count; in qla24xx_handle_gpnid_event()
3507 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3515 ql_dbg(ql_dbg_disc, vha, 0x210d, in qla24xx_handle_gpnid_event()
3519 qla2x00_post_async_adisc_work(vha, fcport, in qla24xx_handle_gpnid_event()
3523 ql_dbg(ql_dbg_disc, vha, 0x210d, in qla24xx_handle_gpnid_event()
3527 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_handle_gpnid_event()
3537 list_for_each_entry_safe(conflict, t, &vha->vp_fcports, in qla24xx_handle_gpnid_event()
3544 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3556 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gpnid_event()
3568 ql_dbg(ql_dbg_disc, vha, 0x2065, in qla24xx_handle_gpnid_event()
3571 qla24xx_post_newsess_work(vha, &ea->id, in qla24xx_handle_gpnid_event()
3580 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_gpnid_sp_done() local
3590 ql_dbg(ql_dbg_disc, vha, 0x2066, in qla2x00_async_gpnid_sp_done()
3595 ql_dbg(ql_dbg_disc, vha, 0x2066, in qla2x00_async_gpnid_sp_done()
3609 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_gpnid_sp_done()
3611 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qla2x00_async_gpnid_sp_done()
3615 qla24xx_post_gpnid_work(sp->vha, &ea.id); in qla2x00_async_gpnid_sp_done()
3621 qla24xx_post_gpnid_work(sp->vha, &ea.id); in qla2x00_async_gpnid_sp_done()
3626 qla2x00_fcport_event_handler(vha, &ea); in qla2x00_async_gpnid_sp_done()
3628 e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP); in qla2x00_async_gpnid_sp_done()
3632 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnid_sp_done()
3639 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnid_sp_done()
3651 qla2x00_post_work(vha, e); in qla2x00_async_gpnid_sp_done()
3655 int qla24xx_async_gpnid(scsi_qla_host_t *vha, port_id_t *id) in qla24xx_async_gpnid() argument
3663 if (!vha->flags.online) in qla24xx_async_gpnid()
3666 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla24xx_async_gpnid()
3674 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gpnid()
3676 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags); in qla24xx_async_gpnid()
3677 list_for_each_entry(tsp, &vha->gpnid_list, elem) { in qla24xx_async_gpnid()
3680 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qla24xx_async_gpnid()
3685 list_add_tail(&sp->elem, &vha->gpnid_list); in qla24xx_async_gpnid()
3686 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); in qla24xx_async_gpnid()
3688 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnid()
3693 ql_log(ql_log_warn, vha, 0xd041, in qla24xx_async_gpnid()
3698 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnid()
3703 ql_log(ql_log_warn, vha, 0xd042, in qla24xx_async_gpnid()
3731 ql_dbg(ql_dbg_disc, vha, 0x2067, in qla24xx_async_gpnid()
3737 spin_lock_irqsave(&vha->hw->vport_slock, flags); in qla24xx_async_gpnid()
3739 spin_unlock_irqrestore(&vha->hw->vport_slock, flags); in qla24xx_async_gpnid()
3742 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnid()
3749 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnid()
3761 void qla24xx_handle_gffid_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gffid_event() argument
3765 qla24xx_post_gnl_work(vha, fcport); in qla24xx_handle_gffid_event()
3771 struct scsi_qla_host *vha = sp->vha; in qla24xx_async_gffid_sp_done() local
3776 ql_dbg(ql_dbg_disc, vha, 0x2133, in qla24xx_async_gffid_sp_done()
3809 qla2x00_fcport_event_handler(vha, &ea); in qla24xx_async_gffid_sp_done()
3814 int qla24xx_async_gffid(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_async_gffid() argument
3820 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gffid()
3823 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_gffid()
3834 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gffid()
3858 ql_dbg(ql_dbg_disc, vha, 0x2132, in qla24xx_async_gffid()
3870 static int qla2x00_is_a_vp(scsi_qla_host_t *vha, u64 wwn) in qla2x00_is_a_vp() argument
3872 struct qla_hw_data *ha = vha->hw; in qla2x00_is_a_vp()
3894 void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp) in qla24xx_async_gnnft_done() argument
3903 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnft_done()
3906 if (sp->gen1 != vha->hw->base_qpair->chip_reset) { in qla24xx_async_gnnft_done()
3907 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnft_done()
3909 sp->name, sp->gen1, vha->hw->base_qpair->chip_reset); in qla24xx_async_gnnft_done()
3915 vha->scan.scan_retry++; in qla24xx_async_gnnft_done()
3916 if (vha->scan.scan_retry < MAX_SCAN_RETRIES) { in qla24xx_async_gnnft_done()
3917 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla24xx_async_gnnft_done()
3918 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla24xx_async_gnnft_done()
3920 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnft_done()
3925 vha->scan.scan_retry = 0; in qla24xx_async_gnnft_done()
3927 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla24xx_async_gnnft_done()
3930 for (i = 0; i < vha->hw->max_fibre_devices; i++) { in qla24xx_async_gnnft_done()
3933 rp = &vha->scan.l[i]; in qla24xx_async_gnnft_done()
3940 if (!memcmp(rp->port_name, vha->port_name, WWN_SIZE)) in qla24xx_async_gnnft_done()
3948 if (qla2x00_is_a_vp(vha, wwn)) in qla24xx_async_gnnft_done()
3951 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla24xx_async_gnnft_done()
3971 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnft_done()
3974 qla24xx_post_newsess_work(vha, &rp->id, rp->port_name, in qla24xx_async_gnnft_done()
3982 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla24xx_async_gnnft_done()
3990 if ((qla_dual_mode_enabled(vha) || in qla24xx_async_gnnft_done()
3991 qla_ini_mode_enabled(vha)) && in qla24xx_async_gnnft_done()
3993 qla2x00_mark_device_lost(vha, fcport, in qla24xx_async_gnnft_done()
3998 ql_dbg(ql_dbg_disc, vha, 0x20f0, in qla24xx_async_gnnft_done()
4012 vha->hw->login_retry_count; in qla24xx_async_gnnft_done()
4013 ql_dbg(ql_dbg_disc, vha, 0x20a3, in qla24xx_async_gnnft_done()
4019 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_async_gnnft_done()
4026 qla24xx_sp_unmap(vha, sp); in qla24xx_async_gnnft_done()
4027 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gnnft_done()
4028 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gnnft_done()
4029 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gnnft_done()
4032 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla24xx_async_gnnft_done()
4034 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla24xx_async_gnnft_done()
4035 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla24xx_async_gnnft_done()
4042 static void qla2x00_find_free_fcp_nvme_slot(struct scsi_qla_host *vha, in qla2x00_find_free_fcp_nvme_slot() argument
4045 struct qla_hw_data *ha = vha->hw; in qla2x00_find_free_fcp_nvme_slot()
4075 rp = &vha->scan.l[j]; in qla2x00_find_free_fcp_nvme_slot()
4082 rp = &vha->scan.l[k]; in qla2x00_find_free_fcp_nvme_slot()
4096 rp = &vha->scan.l[k]; in qla2x00_find_free_fcp_nvme_slot()
4111 rp = &vha->scan.l[k]; in qla2x00_find_free_fcp_nvme_slot()
4126 rp = &vha->scan.l[k]; in qla2x00_find_free_fcp_nvme_slot()
4141 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_gpnft_gnnft_sp_done() local
4150 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla2x00_async_gpnft_gnnft_sp_done()
4158 spin_lock_irqsave(&vha->work_lock, flags); in qla2x00_async_gpnft_gnnft_sp_done()
4159 vha->scan.scan_flags &= ~SF_SCANNING; in qla2x00_async_gpnft_gnnft_sp_done()
4160 vha->scan.scan_retry++; in qla2x00_async_gpnft_gnnft_sp_done()
4161 spin_unlock_irqrestore(&vha->work_lock, flags); in qla2x00_async_gpnft_gnnft_sp_done()
4163 if (vha->scan.scan_retry < MAX_SCAN_RETRIES) { in qla2x00_async_gpnft_gnnft_sp_done()
4164 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4165 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4166 qla2xxx_wake_dpc(vha); in qla2x00_async_gpnft_gnnft_sp_done()
4168 ql_dbg(ql_dbg_disc, sp->vha, 0xffff, in qla2x00_async_gpnft_gnnft_sp_done()
4176 qla2x00_find_free_fcp_nvme_slot(vha, sp); in qla2x00_async_gpnft_gnnft_sp_done()
4178 if ((fc4_type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled && in qla2x00_async_gpnft_gnnft_sp_done()
4181 spin_lock_irqsave(&vha->work_lock, flags); in qla2x00_async_gpnft_gnnft_sp_done()
4182 vha->scan.scan_flags &= ~SF_SCANNING; in qla2x00_async_gpnft_gnnft_sp_done()
4183 spin_unlock_irqrestore(&vha->work_lock, flags); in qla2x00_async_gpnft_gnnft_sp_done()
4185 e = qla2x00_alloc_work(vha, QLA_EVT_GPNFT); in qla2x00_async_gpnft_gnnft_sp_done()
4192 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnft_gnnft_sp_done()
4199 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnft_gnnft_sp_done()
4206 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla2x00_async_gpnft_gnnft_sp_done()
4210 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4211 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4218 qla2x00_post_work(vha, e); in qla2x00_async_gpnft_gnnft_sp_done()
4223 e = qla2x00_alloc_work(vha, QLA_EVT_GPNFT_DONE); in qla2x00_async_gpnft_gnnft_sp_done()
4225 e = qla2x00_alloc_work(vha, QLA_EVT_GNNFT_DONE); in qla2x00_async_gpnft_gnnft_sp_done()
4229 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnft_gnnft_sp_done()
4236 dma_free_coherent(&vha->hw->pdev->dev, in qla2x00_async_gpnft_gnnft_sp_done()
4243 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla2x00_async_gpnft_gnnft_sp_done()
4247 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4248 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla2x00_async_gpnft_gnnft_sp_done()
4255 qla2x00_post_work(vha, e); in qla2x00_async_gpnft_gnnft_sp_done()
4264 static int qla24xx_async_gnnft(scsi_qla_host_t *vha, struct srb *sp, in qla24xx_async_gnnft() argument
4272 if (!vha->flags.online) { in qla24xx_async_gnnft()
4273 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gnnft()
4274 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gnnft()
4275 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gnnft()
4280 ql_log(ql_log_warn, vha, 0xffff, in qla24xx_async_gnnft()
4284 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gnnft()
4285 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gnnft()
4286 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gnnft()
4291 ql_dbg(ql_dbg_disc, vha, 0xfffff, in qla24xx_async_gnnft()
4298 sp->gen1 = vha->hw->base_qpair->chip_reset; in qla24xx_async_gnnft()
4302 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gnnft()
4324 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnft()
4331 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gnnft()
4338 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gnnft()
4350 void qla24xx_async_gpnft_done(scsi_qla_host_t *vha, srb_t *sp) in qla24xx_async_gpnft_done() argument
4352 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft_done()
4355 qla24xx_async_gnnft(vha, sp, sp->gen2); in qla24xx_async_gpnft_done()
4359 int qla24xx_async_gpnft(scsi_qla_host_t *vha, u8 fc4_type, srb_t *sp) in qla24xx_async_gpnft() argument
4367 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft()
4370 if (!vha->flags.online) in qla24xx_async_gpnft()
4373 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gpnft()
4374 if (vha->scan.scan_flags & SF_SCANNING) { in qla24xx_async_gpnft()
4375 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4376 ql_dbg(ql_dbg_disc, vha, 0xffff, "scan active\n"); in qla24xx_async_gpnft()
4379 vha->scan.scan_flags |= SF_SCANNING; in qla24xx_async_gpnft()
4380 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4383 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft()
4389 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL); in qla24xx_async_gpnft()
4391 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gpnft()
4392 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gpnft()
4393 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4398 &vha->hw->pdev->dev, sizeof(struct ct_sns_pkt), in qla24xx_async_gpnft()
4402 ql_log(ql_log_warn, vha, 0xffff, in qla24xx_async_gpnft()
4404 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gpnft()
4405 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gpnft()
4406 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4412 ((vha->hw->max_fibre_devices - 1) * in qla24xx_async_gpnft()
4416 &vha->hw->pdev->dev, rspsz, in qla24xx_async_gpnft()
4420 ql_log(ql_log_warn, vha, 0xffff, in qla24xx_async_gpnft()
4422 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gpnft()
4423 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gpnft()
4424 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4429 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft()
4430 "%s scan list size %d\n", __func__, vha->scan.size); in qla24xx_async_gpnft()
4432 memset(vha->scan.l, 0, vha->scan.size); in qla24xx_async_gpnft()
4434 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft()
4441 sp->gen1 = vha->hw->base_qpair->chip_reset; in qla24xx_async_gpnft()
4445 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gpnft()
4448 ((vha->hw->max_fibre_devices - 1) * in qla24xx_async_gpnft()
4464 spin_lock_irqsave(&vha->work_lock, flags); in qla24xx_async_gpnft()
4465 vha->scan.scan_flags &= ~SF_SCANNING; in qla24xx_async_gpnft()
4466 spin_unlock_irqrestore(&vha->work_lock, flags); in qla24xx_async_gpnft()
4470 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gpnft()
4477 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnft()
4484 dma_free_coherent(&vha->hw->pdev->dev, in qla24xx_async_gpnft()
4500 struct scsi_qla_host *vha = container_of(s, struct scsi_qla_host, in qla_scan_work_fn() local
4504 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla_scan_work_fn()
4506 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags); in qla_scan_work_fn()
4507 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags); in qla_scan_work_fn()
4508 qla2xxx_wake_dpc(vha); in qla_scan_work_fn()
4509 spin_lock_irqsave(&vha->work_lock, flags); in qla_scan_work_fn()
4510 vha->scan.scan_flags &= ~SF_QUEUED; in qla_scan_work_fn()
4511 spin_unlock_irqrestore(&vha->work_lock, flags); in qla_scan_work_fn()
4515 void qla24xx_handle_gnnid_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gnnid_event() argument
4517 qla24xx_post_gnl_work(vha, ea->fcport); in qla24xx_handle_gnnid_event()
4523 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_gnnid_sp_done() local
4540 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_gnnid_sp_done()
4544 qla2x00_fcport_event_handler(vha, &ea); in qla2x00_async_gnnid_sp_done()
4549 int qla24xx_async_gnnid(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_async_gnnid() argument
4555 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gnnid()
4559 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC); in qla24xx_async_gnnid()
4570 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gnnid()
4596 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gnnid()
4608 int qla24xx_post_gnnid_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_gnnid_work() argument
4613 ls = atomic_read(&vha->loop_state); in qla24xx_post_gnnid_work()
4615 test_bit(UNLOADING, &vha->dpc_flags)) in qla24xx_post_gnnid_work()
4618 e = qla2x00_alloc_work(vha, QLA_EVT_GNNID); in qla24xx_post_gnnid_work()
4623 return qla2x00_post_work(vha, e); in qla24xx_post_gnnid_work()
4627 void qla24xx_handle_gfpnid_event(scsi_qla_host_t *vha, struct event_arg *ea) in qla24xx_handle_gfpnid_event() argument
4631 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_handle_gfpnid_event()
4635 fcport->rscn_gen, ea->sp->gen1, vha->fcport_count); in qla24xx_handle_gfpnid_event()
4642 ql_dbg(ql_dbg_disc, vha, 0x20d3, in qla24xx_handle_gfpnid_event()
4647 ql_dbg(ql_dbg_disc, vha, 0x20d4, "%s %d %8phC post gidpn\n", in qla24xx_handle_gfpnid_event()
4649 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_gfpnid_event()
4653 qla24xx_post_gpsc_work(vha, fcport); in qla24xx_handle_gfpnid_event()
4659 struct scsi_qla_host *vha = sp->vha; in qla2x00_async_gfpnid_sp_done() local
4675 ql_dbg(ql_dbg_disc, vha, 0x204f, in qla2x00_async_gfpnid_sp_done()
4679 qla2x00_fcport_event_handler(vha, &ea); in qla2x00_async_gfpnid_sp_done()
4684 int qla24xx_async_gfpnid(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_async_gfpnid() argument
4690 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gfpnid()
4693 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC); in qla24xx_async_gfpnid()
4703 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2); in qla24xx_async_gfpnid()
4730 ql_dbg(ql_dbg_disc, vha, 0xffff, in qla24xx_async_gfpnid()
4743 int qla24xx_post_gfpnid_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_gfpnid_work() argument
4748 ls = atomic_read(&vha->loop_state); in qla24xx_post_gfpnid_work()
4750 test_bit(UNLOADING, &vha->dpc_flags)) in qla24xx_post_gfpnid_work()
4753 e = qla2x00_alloc_work(vha, QLA_EVT_GFPNID); in qla24xx_post_gfpnid_work()
4758 return qla2x00_post_work(vha, e); in qla24xx_post_gfpnid_work()