Lines Matching defs:vha

25  * @vha: HA context
28 * Returns a pointer to the @vha's ms_iocb.
31 qla2x00_prep_ms_iocb(scsi_qla_host_t *vha, struct ct_arg *arg)
33 struct qla_hw_data *ha = vha->hw;
55 vha->qla_stats.control_requests++;
62 * @vha: HA context
68 qla24xx_prep_ms_iocb(scsi_qla_host_t *vha, struct ct_arg *arg)
70 struct qla_hw_data *ha = vha->hw;
90 ct_pkt->vp_index = vha->vp_idx;
92 vha->qla_stats.control_requests++;
120 qla2x00_chk_ms_status(scsi_qla_host_t *vha, ms_iocb_entry_t *ms_pkt,
125 struct qla_hw_data *ha = vha->hw;
130 ql_dbg(ql_dbg_disc, vha, 0x2031,
132 routine, ms_pkt->entry_status, vha->d_id.b.domain,
133 vha->d_id.b.area, vha->d_id.b.al_pa);
146 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2077,
148 routine, vha->d_id.b.domain,
149 vha->d_id.b.area, vha->d_id.b.al_pa,
151 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha,
169 ql_dbg(ql_dbg_async, vha, 0x502b,
173 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
174 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
181 ql_dbg(ql_dbg_disc, vha, 0x2033,
184 vha->d_id.b.domain, vha->d_id.b.area,
185 vha->d_id.b.al_pa);
194 * @vha: HA context
200 qla2x00_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport)
207 struct qla_hw_data *ha = vha->hw;
211 return qla2x00_sns_ga_nxt(vha, fcport);
222 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
233 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
237 ql_dbg(ql_dbg_disc, vha, 0x2062,
239 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "GA_NXT") !=
258 ql_dbg(ql_dbg_disc, vha, 0x2063,
270 qla2x00_gid_pt_rsp_size(scsi_qla_host_t *vha)
272 return vha->hw->max_fibre_devices * 4 + 16;
277 * @vha: HA context
285 qla2x00_gid_pt(scsi_qla_host_t *vha, sw_info_t *list)
295 struct qla_hw_data *ha = vha->hw;
300 return qla2x00_sns_gid_pt(vha, list);
303 gid_pt_rsp_size = qla2x00_gid_pt_rsp_size(vha);
314 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
324 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
328 ql_dbg(ql_dbg_disc, vha, 0x2055,
330 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "GID_PT") !=
363 * @vha: HA context
369 qla2x00_gpn_id(scsi_qla_host_t *vha, sw_info_t *list)
377 struct qla_hw_data *ha = vha->hw;
381 return qla2x00_sns_gpn_id(vha, list);
393 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
404 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
408 ql_dbg(ql_dbg_disc, vha, 0x2056,
411 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp,
431 * @vha: HA context
437 qla2x00_gnn_id(scsi_qla_host_t *vha, sw_info_t *list)
441 struct qla_hw_data *ha = vha->hw;
448 return qla2x00_sns_gnn_id(vha, list);
460 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
471 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
475 ql_dbg(ql_dbg_disc, vha, 0x2057,
478 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp,
487 ql_dbg(ql_dbg_disc, vha, 0x2058,
505 struct scsi_qla_host *vha = sp->vha;
511 ql_dbg(ql_dbg_disc, vha, 0x204f,
515 ql_dbg(ql_dbg_disc, vha, 0x204f,
524 ql_dbg(ql_dbg_disc, vha, 0x204f,
528 e = qla2x00_alloc_work(vha, QLA_EVT_SP_RETRY);
534 qla2x00_post_work(vha, e);
539 e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP);
544 dma_free_coherent(&vha->hw->pdev->dev,
552 dma_free_coherent(&vha->hw->pdev->dev,
565 qla2x00_post_work(vha, e);
570 * @vha: HA context
575 qla2x00_rft_id(scsi_qla_host_t *vha)
577 struct qla_hw_data *ha = vha->hw;
580 return qla2x00_sns_rft_id(vha);
582 return qla_async_rftid(vha, &vha->d_id);
585 static int qla_async_rftid(scsi_qla_host_t *vha, port_id_t *d_id)
592 if (!vha->flags.online)
595 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
601 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
603 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
608 ql_log(ql_log_warn, vha, 0xd041,
614 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
619 ql_log(ql_log_warn, vha, 0xd042,
632 ct_req->req.rft_id.port_id = port_id_to_be_id(vha->d_id);
635 if (vha->flags.nvme_enabled)
644 ql_dbg(ql_dbg_disc, vha, 0xffff,
650 ql_dbg(ql_dbg_disc, vha, 0x2043,
663 * @vha: HA context
669 qla2x00_rff_id(scsi_qla_host_t *vha, u8 type)
671 struct qla_hw_data *ha = vha->hw;
674 ql_dbg(ql_dbg_disc, vha, 0x2046,
679 return qla_async_rffid(vha, &vha->d_id, qlt_rff_id(vha), type);
682 static int qla_async_rffid(scsi_qla_host_t *vha, port_id_t *d_id,
690 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
696 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
698 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
703 ql_log(ql_log_warn, vha, 0xd041,
709 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
714 ql_log(ql_log_warn, vha, 0xd042,
737 ql_dbg(ql_dbg_disc, vha, 0xffff,
743 ql_dbg(ql_dbg_disc, vha, 0x2047,
758 * @vha: HA context
763 qla2x00_rnn_id(scsi_qla_host_t *vha)
765 struct qla_hw_data *ha = vha->hw;
768 return qla2x00_sns_rnn_id(vha);
770 return qla_async_rnnid(vha, &vha->d_id, vha->node_name);
773 static int qla_async_rnnid(scsi_qla_host_t *vha, port_id_t *d_id,
781 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
787 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
789 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
794 ql_log(ql_log_warn, vha, 0xd041,
800 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
805 ql_log(ql_log_warn, vha, 0xd042,
818 ct_req->req.rnn_id.port_id = port_id_to_be_id(vha->d_id);
819 memcpy(ct_req->req.rnn_id.node_name, vha->node_name, WWN_SIZE);
828 ql_dbg(ql_dbg_disc, vha, 0xffff,
834 ql_dbg(ql_dbg_disc, vha, 0x204d,
848 qla2x00_get_sym_node_name(scsi_qla_host_t *vha, uint8_t *snn, size_t size)
850 struct qla_hw_data *ha = vha->hw;
863 * @vha: HA context
868 qla2x00_rsnn_nn(scsi_qla_host_t *vha)
870 struct qla_hw_data *ha = vha->hw;
873 ql_dbg(ql_dbg_disc, vha, 0x2050,
878 return qla_async_rsnn_nn(vha);
881 static int qla_async_rsnn_nn(scsi_qla_host_t *vha)
888 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
894 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
896 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
901 ql_log(ql_log_warn, vha, 0xd041,
907 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
912 ql_log(ql_log_warn, vha, 0xd042,
925 memcpy(ct_req->req.rsnn_nn.node_name, vha->node_name, WWN_SIZE);
928 qla2x00_get_sym_node_name(vha, ct_req->req.rsnn_nn.sym_node_name,
941 ql_dbg(ql_dbg_disc, vha, 0xffff,
947 ql_dbg(ql_dbg_disc, vha, 0x2043,
962 * @vha: HA context
970 qla2x00_prep_sns_cmd(scsi_qla_host_t *vha, uint16_t cmd, uint16_t scmd_len,
975 struct qla_hw_data *ha = vha->hw;
987 vha->qla_stats.control_requests++;
994 * @vha: HA context
1002 qla2x00_sns_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport)
1005 struct qla_hw_data *ha = vha->hw;
1010 sns_cmd = qla2x00_prep_sns_cmd(vha, GA_NXT_CMD, GA_NXT_SNS_SCMD_LEN,
1019 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, GA_NXT_SNS_CMD_SIZE / 2,
1023 ql_dbg(ql_dbg_disc, vha, 0x205f,
1027 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2084,
1029 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2074,
1045 ql_dbg(ql_dbg_disc, vha, 0x2061,
1058 * @vha: HA context
1068 qla2x00_sns_gid_pt(scsi_qla_host_t *vha, sw_info_t *list)
1071 struct qla_hw_data *ha = vha->hw;
1077 gid_pt_sns_data_size = qla2x00_gid_pt_rsp_size(vha);
1081 sns_cmd = qla2x00_prep_sns_cmd(vha, GID_PT_CMD, GID_PT_SNS_SCMD_LEN,
1088 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, GID_PT_SNS_CMD_SIZE / 2,
1092 ql_dbg(ql_dbg_disc, vha, 0x206d,
1096 ql_dbg(ql_dbg_disc, vha, 0x202f,
1098 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2081,
1131 * @vha: HA context
1139 qla2x00_sns_gpn_id(scsi_qla_host_t *vha, sw_info_t *list)
1142 struct qla_hw_data *ha = vha->hw;
1149 sns_cmd = qla2x00_prep_sns_cmd(vha, GPN_ID_CMD,
1158 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma,
1162 ql_dbg(ql_dbg_disc, vha, 0x2032,
1166 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x207e,
1168 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207f,
1187 * @vha: HA context
1195 qla2x00_sns_gnn_id(scsi_qla_host_t *vha, sw_info_t *list)
1198 struct qla_hw_data *ha = vha->hw;
1205 sns_cmd = qla2x00_prep_sns_cmd(vha, GNN_ID_CMD,
1214 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma,
1218 ql_dbg(ql_dbg_disc, vha, 0x203f,
1222 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2082,
1224 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207a,
1232 ql_dbg(ql_dbg_disc, vha, 0x206e,
1250 * @vha: HA context
1257 qla2x00_sns_rft_id(scsi_qla_host_t *vha)
1260 struct qla_hw_data *ha = vha->hw;
1265 sns_cmd = qla2x00_prep_sns_cmd(vha, RFT_ID_CMD, RFT_ID_SNS_SCMD_LEN,
1269 sns_cmd->p.cmd.param[0] = vha->d_id.b.al_pa;
1270 sns_cmd->p.cmd.param[1] = vha->d_id.b.area;
1271 sns_cmd->p.cmd.param[2] = vha->d_id.b.domain;
1276 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, RFT_ID_SNS_CMD_SIZE / 2,
1280 ql_dbg(ql_dbg_disc, vha, 0x2060,
1284 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x2083,
1286 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x2080,
1290 ql_dbg(ql_dbg_disc, vha, 0x2073,
1299 * @vha: HA context
1306 qla2x00_sns_rnn_id(scsi_qla_host_t *vha)
1309 struct qla_hw_data *ha = vha->hw;
1314 sns_cmd = qla2x00_prep_sns_cmd(vha, RNN_ID_CMD, RNN_ID_SNS_SCMD_LEN,
1318 sns_cmd->p.cmd.param[0] = vha->d_id.b.al_pa;
1319 sns_cmd->p.cmd.param[1] = vha->d_id.b.area;
1320 sns_cmd->p.cmd.param[2] = vha->d_id.b.domain;
1322 sns_cmd->p.cmd.param[4] = vha->node_name[7];
1323 sns_cmd->p.cmd.param[5] = vha->node_name[6];
1324 sns_cmd->p.cmd.param[6] = vha->node_name[5];
1325 sns_cmd->p.cmd.param[7] = vha->node_name[4];
1326 sns_cmd->p.cmd.param[8] = vha->node_name[3];
1327 sns_cmd->p.cmd.param[9] = vha->node_name[2];
1328 sns_cmd->p.cmd.param[10] = vha->node_name[1];
1329 sns_cmd->p.cmd.param[11] = vha->node_name[0];
1332 rval = qla2x00_send_sns(vha, ha->sns_cmd_dma, RNN_ID_SNS_CMD_SIZE / 2,
1336 ql_dbg(ql_dbg_disc, vha, 0x204a,
1340 ql_dbg(ql_dbg_disc + ql_dbg_buffer, vha, 0x207b,
1342 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x207c,
1346 ql_dbg(ql_dbg_disc, vha, 0x204c,
1355 * @vha: HA context
1360 qla2x00_mgmt_svr_login(scsi_qla_host_t *vha)
1364 struct qla_hw_data *ha = vha->hw;
1367 if (vha->flags.management_server_logged_in)
1370 rval = ha->isp_ops->fabric_login(vha, vha->mgmt_svr_loop_id, 0xff, 0xff,
1374 ql_dbg(ql_dbg_disc, vha, 0x2085,
1376 "rval=%d\n", vha->mgmt_svr_loop_id, rval);
1378 ql_dbg(ql_dbg_disc, vha, 0x2024,
1381 vha->mgmt_svr_loop_id, mb[0], mb[1], mb[2], mb[6],
1385 vha->flags.management_server_logged_in = 1;
1392 * @vha: HA context
1399 qla2x00_prep_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size,
1403 struct qla_hw_data *ha = vha->hw;
1410 SET_TARGET_ID(ha, ms_pkt->loop_id, vha->mgmt_svr_loop_id);
1429 * @vha: HA context
1436 qla24xx_prep_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size,
1440 struct qla_hw_data *ha = vha->hw;
1447 ct_pkt->nport_handle = cpu_to_le16(vha->mgmt_svr_loop_id);
1459 ct_pkt->vp_index = vha->vp_idx;
1465 qla2x00_update_ms_fdmi_iocb(scsi_qla_host_t *vha, uint32_t req_size)
1467 struct qla_hw_data *ha = vha->hw;
1585 * @vha: HA context
1593 qla2x00_hba_attributes(scsi_qla_host_t *vha, void *entries,
1596 struct qla_hw_data *ha = vha->hw;
1605 memcpy(eiter->a.node_name, vha->node_name, sizeof(eiter->a.node_name));
1610 ql_dbg(ql_dbg_disc, vha, 0x20a0,
1622 ql_dbg(ql_dbg_disc, vha, 0x20a1,
1629 alen = qla2xxx_get_vpd_field(vha, "SN",
1643 ql_dbg(ql_dbg_disc, vha, 0x20a2,
1655 ql_dbg(ql_dbg_disc, vha, 0x20a3,
1667 ql_dbg(ql_dbg_disc, vha, 0x20a4,
1675 alen = qla2xxx_get_vpd_field(vha, "MN",
1679 alen = qla2xxx_get_vpd_field(vha, "EC",
1692 ql_dbg(ql_dbg_disc, vha, 0x20a5,
1704 ql_dbg(ql_dbg_disc, vha, 0x20a6,
1717 ql_dbg(ql_dbg_disc, vha, 0x20a7,
1723 ha->isp_ops->fw_version_str(vha, eiter->a.fw_version,
1729 ql_dbg(ql_dbg_disc, vha, 0x20a8,
1747 "Linux", fc_host_system_hostname(vha->host));
1753 ql_dbg(ql_dbg_disc, vha, 0x20a9,
1764 ql_dbg(ql_dbg_disc, vha, 0x20aa,
1769 alen = qla2x00_get_sym_node_name(vha, eiter->a.sym_name,
1775 ql_dbg(ql_dbg_disc, vha, 0x20ab,
1785 ql_dbg(ql_dbg_disc, vha, 0x20ac,
1796 ql_dbg(ql_dbg_disc, vha, 0x20ad,
1801 memcpy(eiter->a.fabric_name, vha->fabric_node_name,
1807 ql_dbg(ql_dbg_disc, vha, 0x20ae,
1819 ql_dbg(ql_dbg_disc, vha, 0x20af,
1831 ql_dbg(ql_dbg_disc, vha, 0x20b0,
1839 * @vha: HA context
1847 qla2x00_port_attributes(scsi_qla_host_t *vha, void *entries,
1850 struct qla_hw_data *ha = vha->hw;
1853 p_sysid->nodename : fc_host_system_hostname(vha->host);
1869 ql_dbg(ql_dbg_disc, vha, 0x20c0,
1871 if (vha->flags.nvme_enabled) {
1873 ql_dbg(ql_dbg_disc, vha, 0x211f,
1886 ql_dbg(ql_dbg_disc, vha, 0x20c1,
1897 ql_dbg(ql_dbg_disc, vha, 0x20c2,
1907 ql_dbg(ql_dbg_disc, vha, 0x20c3,
1914 "%s:host%lu", QLA2XXX_DRIVER_NAME, vha->host_no);
1919 ql_dbg(ql_dbg_disc, vha, 0x20c4,
1933 ql_dbg(ql_dbg_disc, vha, 0x20c5,
1942 memcpy(eiter->a.node_name, vha->node_name, sizeof(eiter->a.node_name));
1947 ql_dbg(ql_dbg_disc, vha, 0x20c6,
1953 memcpy(eiter->a.port_name, vha->port_name, sizeof(eiter->a.port_name));
1958 ql_dbg(ql_dbg_disc, vha, 0x20c7,
1964 alen = qla2x00_get_sym_node_name(vha, eiter->a.port_sym_name,
1970 ql_dbg(ql_dbg_disc, vha, 0x20c8,
1981 ql_dbg(ql_dbg_disc, vha, 0x20c9,
1992 ql_dbg(ql_dbg_disc, vha, 0x20ca,
1998 memcpy(eiter->a.fabric_name, vha->fabric_node_name,
2004 ql_dbg(ql_dbg_disc, vha, 0x20cb,
2018 ql_dbg(ql_dbg_disc, vha, 0x20cc,
2030 ql_dbg(ql_dbg_disc, vha, 0x20cd,
2041 ql_dbg(ql_dbg_disc, vha, 0x20ce,
2047 eiter->a.port_id = cpu_to_be32(vha->d_id.b24);
2052 ql_dbg(ql_dbg_disc, vha, 0x20cf,
2068 ql_dbg(ql_dbg_disc, vha, 0x20d0,
2074 memcpy(eiter->a.smartsan_guid, vha->node_name, WWN_SIZE);
2075 memcpy(eiter->a.smartsan_guid + WWN_SIZE, vha->port_name, WWN_SIZE);
2080 ql_dbg(ql_dbg_disc, vha, 0x20d1,
2095 ql_dbg(ql_dbg_disc, vha, 0x20d2,
2108 ql_dbg(ql_dbg_disc, vha, 0x20d3,
2114 eiter->a.smartsan_port_info = cpu_to_be32(vha->vp_idx ? 2 : 1);
2119 ql_dbg(ql_dbg_disc, vha, 0x20d4,
2130 ql_dbg(ql_dbg_disc, vha, 0x20d6,
2140 * @vha: HA context
2146 qla2x00_fdmi_rhba(scsi_qla_host_t *vha, unsigned int callopt)
2148 struct qla_hw_data *ha = vha->hw;
2161 ql_dbg(ql_dbg_disc, vha, 0x20e0,
2165 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, size);
2172 memcpy(ct_req->req.rhba.hba_identifier, vha->port_name,
2179 memcpy(ct_req->req.rhba.port_name, vha->port_name,
2190 size += qla2x00_hba_attributes(vha, entries, callopt);
2193 qla2x00_update_ms_fdmi_iocb(vha, size + 16);
2195 ql_dbg(ql_dbg_disc, vha, 0x20e1,
2200 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x20e2,
2204 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2207 ql_dbg(ql_dbg_disc, vha, 0x20e3,
2212 rval = qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RHBA");
2217 ql_dbg(ql_dbg_disc, vha, 0x20e4,
2222 ql_dbg(ql_dbg_disc, vha, 0x20e5,
2229 ql_dbg(ql_dbg_disc, vha, 0x20e6, "RHBA exiting normally.\n");
2235 qla2x00_fdmi_dhba(scsi_qla_host_t *vha)
2238 struct qla_hw_data *ha = vha->hw;
2244 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, DHBA_REQ_SIZE,
2250 memcpy(ct_req->req.dhba.port_name, vha->port_name, WWN_SIZE);
2251 ql_dbg(ql_dbg_disc, vha, 0x2036,
2254 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2258 ql_dbg(ql_dbg_disc, vha, 0x2037,
2260 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "DHBA") !=
2264 ql_dbg(ql_dbg_disc, vha, 0x2038,
2272 * @vha: HA context
2279 qla2x00_fdmi_rprt(scsi_qla_host_t *vha, int callopt)
2281 struct scsi_qla_host *base_vha = pci_get_drvdata(vha->hw->pdev);
2282 struct qla_hw_data *ha = vha->hw;
2295 ql_dbg(ql_dbg_disc, vha, 0x20e8,
2298 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, size);
2306 memcpy(ct_req->req.rprt.port_name, vha->port_name,
2314 size += qla2x00_port_attributes(vha, entries, callopt);
2316 qla2x00_update_ms_fdmi_iocb(vha, size + 16);
2317 ql_dbg(ql_dbg_disc, vha, 0x20e9,
2321 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x20ea,
2324 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2327 ql_dbg(ql_dbg_disc, vha, 0x20eb,
2331 rval = qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RPRT");
2336 ql_dbg(ql_dbg_disc, vha, 0x20ec,
2341 ql_dbg(ql_dbg_disc, vha, 0x20ed,
2347 ql_dbg(ql_dbg_disc, vha, 0x20ee, "RPRT exiting normally.\n");
2353 * @vha: HA context
2359 qla2x00_fdmi_rpa(scsi_qla_host_t *vha, uint callopt)
2361 struct qla_hw_data *ha = vha->hw;
2379 ql_dbg(ql_dbg_disc, vha, 0x20f0,
2383 ms_pkt = ha->isp_ops->prep_ms_fdmi_iocb(vha, 0, size);
2390 memcpy(ct_req->req.rpa.port_name, vha->port_name,
2401 size += qla2x00_port_attributes(vha, entries, callopt);
2404 qla2x00_update_ms_fdmi_iocb(vha, size + 16);
2406 ql_dbg(ql_dbg_disc, vha, 0x20f1,
2409 ql_dump_buffer(ql_dbg_disc + ql_dbg_buffer, vha, 0x20f2,
2413 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2416 ql_dbg(ql_dbg_disc, vha, 0x20f3,
2421 rval = qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp, "RPA");
2426 ql_dbg(ql_dbg_disc, vha, 0x20f4,
2431 ql_dbg(ql_dbg_disc, vha, 0x20f5,
2438 ql_dbg(ql_dbg_disc, vha, 0x20f6, "RPA exiting normally.\n");
2444 * @vha: HA context
2449 qla2x00_fdmi_register(scsi_qla_host_t *vha)
2452 struct qla_hw_data *ha = vha->hw;
2458 rval = qla2x00_mgmt_svr_login(vha);
2463 if (vha->vp_idx) {
2465 rval = qla2x00_fdmi_rprt(vha, CALLOPT_FDMI2_SMARTSAN);
2467 rval = qla2x00_fdmi_rprt(vha, CALLOPT_FDMI2);
2469 rval = qla2x00_fdmi_rprt(vha, CALLOPT_FDMI1);
2475 rval = qla2x00_fdmi_rhba(vha, CALLOPT_FDMI2);
2480 rval = qla2x00_fdmi_dhba(vha);
2484 rval = qla2x00_fdmi_rhba(vha, CALLOPT_FDMI2);
2490 rval = qla2x00_fdmi_rpa(vha, CALLOPT_FDMI2_SMARTSAN);
2492 rval = qla2x00_fdmi_rpa(vha, CALLOPT_FDMI2);
2499 rval = qla2x00_fdmi_rhba(vha, CALLOPT_FDMI1);
2504 rval = qla2x00_fdmi_dhba(vha);
2508 rval = qla2x00_fdmi_rhba(vha, CALLOPT_FDMI1);
2513 rval = qla2x00_fdmi_rpa(vha, CALLOPT_FDMI1);
2520 * @vha: HA context
2526 qla2x00_gfpn_id(scsi_qla_host_t *vha, sw_info_t *list)
2530 struct qla_hw_data *ha = vha->hw;
2549 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
2560 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2564 ql_dbg(ql_dbg_disc, vha, 0x2023,
2567 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp,
2628 * @vha: HA context
2634 qla2x00_gpsc(scsi_qla_host_t *vha, sw_info_t *list)
2638 struct qla_hw_data *ha = vha->hw;
2649 rval = qla2x00_mgmt_svr_login(vha);
2658 arg.nport_handle = vha->mgmt_svr_loop_id;
2663 ms_pkt = qla24xx_prep_ms_iocb(vha, &arg);
2675 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2679 ql_dbg(ql_dbg_disc, vha, 0x2059,
2681 } else if ((rval = qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp,
2689 ql_dbg(ql_dbg_disc, vha, 0x205a,
2700 ql_dbg(ql_dbg_disc, vha, 0x205b,
2719 * @vha: HA context
2724 qla2x00_gff_id(scsi_qla_host_t *vha, sw_info_t *list)
2732 struct qla_hw_data *ha = vha->hw;
2753 ms_pkt = ha->isp_ops->prep_ms_iocb(vha, &arg);
2764 rval = qla2x00_issue_iocb(vha, ha->ms_iocb, ha->ms_iocb_dma,
2768 ql_dbg(ql_dbg_disc, vha, 0x205c,
2770 } else if (qla2x00_chk_ms_status(vha, ms_pkt, ct_rsp,
2772 ql_dbg(ql_dbg_disc, vha, 0x205d,
2800 int qla24xx_post_gpsc_work(struct scsi_qla_host *vha, fc_port_t *fcport)
2804 e = qla2x00_alloc_work(vha, QLA_EVT_GPSC);
2809 return qla2x00_post_work(vha, e);
2812 void qla24xx_handle_gpsc_event(scsi_qla_host_t *vha, struct event_arg *ea)
2816 ql_dbg(ql_dbg_disc, vha, 0x20d8,
2827 ql_dbg(ql_dbg_disc, vha, 0x20d3,
2835 qla_post_iidma_work(vha, fcport);
2840 struct scsi_qla_host *vha = sp->vha;
2841 struct qla_hw_data *ha = vha->hw;
2848 ql_dbg(ql_dbg_disc, vha, 0x2053,
2865 ql_dbg(ql_dbg_disc, vha, 0x2019,
2874 ql_dbg(ql_dbg_disc, vha, 0x2054,
2884 qla24xx_handle_gpsc_event(vha, &ea);
2890 int qla24xx_async_gpsc(scsi_qla_host_t *vha, fc_port_t *fcport)
2896 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
2899 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
2908 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
2924 sp->u.iocb_cmd.u.ctarg.nport_handle = vha->mgmt_svr_loop_id;
2929 ql_dbg(ql_dbg_disc, vha, 0x205e,
2946 int qla24xx_post_gpnid_work(struct scsi_qla_host *vha, port_id_t *id)
2950 if (test_bit(UNLOADING, &vha->dpc_flags) ||
2951 (vha->vp_idx && test_bit(VPORT_DELETE, &vha->dpc_flags)))
2954 e = qla2x00_alloc_work(vha, QLA_EVT_GPNID);
2959 return qla2x00_post_work(vha, e);
2962 void qla24xx_sp_unmap(scsi_qla_host_t *vha, srb_t *sp)
2968 qla2x00_els_dcmd2_free(vha, &c->u.els_plogi);
2973 dma_free_coherent(&vha->hw->pdev->dev,
2981 dma_free_coherent(&vha->hw->pdev->dev,
2993 void qla24xx_handle_gpnid_event(scsi_qla_host_t *vha, struct event_arg *ea)
2998 ql_dbg(ql_dbg_disc, vha, 0xffff,
3004 list_for_each_entry_safe(fcport, t, &vha->vp_fcports, list) {
3012 fcport = qla2x00_find_fcport_by_wwpn(vha, ea->port_name, 1);
3014 list_for_each_entry_safe(conflict, t, &vha->vp_fcports,
3035 vha->hw->login_retry_count;
3036 ql_dbg(ql_dbg_disc, vha, 0xffff,
3044 ql_dbg(ql_dbg_disc, vha, 0x210d,
3048 qla2x00_post_async_adisc_work(vha, fcport,
3052 ql_dbg(ql_dbg_disc, vha, 0x210d,
3056 qla24xx_fcport_handle_login(vha, fcport);
3066 list_for_each_entry_safe(conflict, t, &vha->vp_fcports,
3073 ql_dbg(ql_dbg_disc, vha, 0xffff,
3085 ql_dbg(ql_dbg_disc, vha, 0x2065,
3088 qla24xx_post_newsess_work(vha, &ea->id,
3096 struct scsi_qla_host *vha = sp->vha;
3106 ql_dbg(ql_dbg_disc, vha, 0x2066,
3111 ql_dbg(ql_dbg_disc, vha, 0x2066,
3122 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags);
3124 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
3128 qla24xx_post_gpnid_work(sp->vha, &ea.id);
3134 qla24xx_post_gpnid_work(sp->vha, &ea.id);
3139 qla24xx_handle_gpnid_event(vha, &ea);
3141 e = qla2x00_alloc_work(vha, QLA_EVT_UNMAP);
3144 dma_free_coherent(&vha->hw->pdev->dev,
3150 dma_free_coherent(&vha->hw->pdev->dev,
3161 qla2x00_post_work(vha, e);
3165 int qla24xx_async_gpnid(scsi_qla_host_t *vha, port_id_t *id)
3173 if (!vha->flags.online)
3176 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
3184 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
3186 spin_lock_irqsave(&vha->hw->tgt.sess_lock, flags);
3187 list_for_each_entry(tsp, &vha->gpnid_list, elem) {
3190 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
3195 list_add_tail(&sp->elem, &vha->gpnid_list);
3196 spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags);
3198 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
3203 ql_log(ql_log_warn, vha, 0xd041,
3208 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
3213 ql_log(ql_log_warn, vha, 0xd042,
3235 ql_dbg(ql_dbg_disc, vha, 0x2067,
3246 spin_lock_irqsave(&vha->hw->vport_slock, flags);
3248 spin_unlock_irqrestore(&vha->hw->vport_slock, flags);
3251 dma_free_coherent(&vha->hw->pdev->dev,
3258 dma_free_coherent(&vha->hw->pdev->dev,
3270 void qla24xx_handle_gffid_event(scsi_qla_host_t *vha, struct event_arg *ea)
3274 qla24xx_post_gnl_work(vha, fcport);
3279 struct scsi_qla_host *vha = sp->vha;
3286 ql_dbg(ql_dbg_disc, vha, 0x2133,
3319 qla24xx_handle_gffid_event(vha, &ea);
3324 int qla24xx_async_gffid(scsi_qla_host_t *vha, fc_port_t *fcport)
3330 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
3333 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL);
3344 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
3364 ql_dbg(ql_dbg_disc, vha, 0x2132,
3380 static int qla2x00_is_a_vp(scsi_qla_host_t *vha, u64 wwn)
3382 struct qla_hw_data *ha = vha->hw;
3404 void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
3414 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
3417 if (sp->gen1 != vha->hw->base_qpair->chip_reset) {
3418 ql_dbg(ql_dbg_disc, vha, 0xffff,
3420 sp->name, sp->gen1, vha->hw->base_qpair->chip_reset);
3426 vha->scan.scan_retry++;
3427 if (vha->scan.scan_retry < MAX_SCAN_RETRIES) {
3428 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3429 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3432 ql_dbg(ql_dbg_disc, vha, 0xffff,
3434 __func__, vha->scan.scan_retry);
3439 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3447 vha->scan.scan_retry = 0;
3449 list_for_each_entry(fcport, &vha->vp_fcports, list)
3452 for (i = 0; i < vha->hw->max_fibre_devices; i++) {
3456 rp = &vha->scan.l[i];
3464 for (k = i + 1; k < vha->hw->max_fibre_devices; k++) {
3465 trp = &vha->scan.l[k];
3470 vha, 0xffff,
3477 if (!memcmp(rp->port_name, vha->port_name, WWN_SIZE))
3485 if (qla2x00_is_a_vp(vha, wwn))
3488 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3512 ql_dbg(ql_dbg_disc, vha, 0xffff,
3515 qla24xx_post_newsess_work(vha, &rp->id, rp->port_name,
3521 ql_log(ql_log_warn, vha, 0xffff,
3530 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3549 if (((qla_dual_mode_enabled(vha) ||
3550 qla_ini_mode_enabled(vha)) &&
3557 ql_dbg(ql_dbg_disc, vha, 0x20f0,
3571 vha->hw->login_retry_count;
3572 ql_dbg(ql_dbg_disc, vha, 0x20a3,
3578 qla24xx_fcport_handle_login(vha, fcport);
3585 qla24xx_sp_unmap(vha, sp);
3586 spin_lock_irqsave(&vha->work_lock, flags);
3587 vha->scan.scan_flags &= ~SF_SCANNING;
3588 spin_unlock_irqrestore(&vha->work_lock, flags);
3591 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3593 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3594 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3601 static int qla2x00_post_gnnft_gpnft_done_work(struct scsi_qla_host *vha,
3609 e = qla2x00_alloc_work(vha, cmd);
3615 return qla2x00_post_work(vha, e);
3618 static int qla2x00_post_nvme_gpnft_work(struct scsi_qla_host *vha,
3626 e = qla2x00_alloc_work(vha, cmd);
3633 return qla2x00_post_work(vha, e);
3636 static void qla2x00_find_free_fcp_nvme_slot(struct scsi_qla_host *vha,
3639 struct qla_hw_data *ha = vha->hw;
3669 rp = &vha->scan.l[j];
3676 rp = &vha->scan.l[k];
3690 rp = &vha->scan.l[k];
3705 rp = &vha->scan.l[k];
3720 rp = &vha->scan.l[k];
3734 struct scsi_qla_host *vha = sp->vha;
3743 ql_dbg(ql_dbg_disc, vha, 0xffff,
3759 ql_dbg(ql_dbg_disc, vha, 0xffff,
3762 qla2x00_mark_all_devices_lost(vha);
3770 rc = qla2x00_post_gnnft_gpnft_done_work(vha, sp,
3774 qla24xx_sp_unmap(vha, sp);
3776 spin_lock_irqsave(&vha->work_lock, flags);
3777 vha->scan.scan_flags &= ~SF_SCANNING;
3778 vha->scan.scan_retry++;
3779 spin_unlock_irqrestore(&vha->work_lock, flags);
3781 if (vha->scan.scan_retry < MAX_SCAN_RETRIES) {
3782 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3783 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3784 qla2xxx_wake_dpc(vha);
3786 ql_dbg(ql_dbg_disc, vha, 0xffff,
3794 qla2x00_find_free_fcp_nvme_slot(vha, sp);
3796 if ((fc4_type == FC4_TYPE_FCP_SCSI) && vha->flags.nvme_enabled &&
3798 spin_lock_irqsave(&vha->work_lock, flags);
3799 vha->scan.scan_flags &= ~SF_SCANNING;
3800 spin_unlock_irqrestore(&vha->work_lock, flags);
3803 rc = qla2x00_post_nvme_gpnft_work(vha, sp, QLA_EVT_GPNFT);
3805 qla24xx_sp_unmap(vha, sp);
3806 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3807 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3813 rc = qla2x00_post_gnnft_gpnft_done_work(vha, sp,
3816 rc = qla2x00_post_gnnft_gpnft_done_work(vha, sp,
3821 qla24xx_sp_unmap(vha, sp);
3822 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3823 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3834 static int qla24xx_async_gnnft(scsi_qla_host_t *vha, struct srb *sp,
3842 if (!vha->flags.online) {
3843 spin_lock_irqsave(&vha->work_lock, flags);
3844 vha->scan.scan_flags &= ~SF_SCANNING;
3845 spin_unlock_irqrestore(&vha->work_lock, flags);
3850 ql_log(ql_log_warn, vha, 0xffff,
3854 spin_lock_irqsave(&vha->work_lock, flags);
3855 vha->scan.scan_flags &= ~SF_SCANNING;
3856 spin_unlock_irqrestore(&vha->work_lock, flags);
3858 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
3859 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
3863 ql_dbg(ql_dbg_disc, vha, 0xfffff,
3870 sp->gen1 = vha->hw->base_qpair->chip_reset;
3874 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
3892 ql_dbg(ql_dbg_disc, vha, 0xffff,
3905 dma_free_coherent(&vha->hw->pdev->dev,
3912 dma_free_coherent(&vha->hw->pdev->dev,
3921 spin_lock_irqsave(&vha->work_lock, flags);
3922 vha->scan.scan_flags &= ~SF_SCANNING;
3923 if (vha->scan.scan_flags == 0) {
3924 ql_dbg(ql_dbg_disc, vha, 0xffff,
3926 vha->scan.scan_flags |= SF_QUEUED;
3927 schedule_delayed_work(&vha->scan.scan_work, 5);
3929 spin_unlock_irqrestore(&vha->work_lock, flags);
3935 void qla24xx_async_gpnft_done(scsi_qla_host_t *vha, srb_t *sp)
3937 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
3939 qla24xx_async_gnnft(vha, sp, sp->gen2);
3943 int qla24xx_async_gpnft(scsi_qla_host_t *vha, u8 fc4_type, srb_t *sp)
3951 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
3954 if (!vha->flags.online)
3957 spin_lock_irqsave(&vha->work_lock, flags);
3958 if (vha->scan.scan_flags & SF_SCANNING) {
3959 spin_unlock_irqrestore(&vha->work_lock, flags);
3960 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
3964 vha->scan.scan_flags |= SF_SCANNING;
3965 spin_unlock_irqrestore(&vha->work_lock, flags);
3968 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
3974 sp = qla2x00_get_sp(vha, NULL, GFP_KERNEL);
3976 spin_lock_irqsave(&vha->work_lock, flags);
3977 vha->scan.scan_flags &= ~SF_SCANNING;
3978 spin_unlock_irqrestore(&vha->work_lock, flags);
3982 sp->u.iocb_cmd.u.ctarg.req = dma_alloc_coherent(&vha->hw->pdev->dev,
3988 ql_log(ql_log_warn, vha, 0xffff,
3990 spin_lock_irqsave(&vha->work_lock, flags);
3991 vha->scan.scan_flags &= ~SF_SCANNING;
3992 spin_unlock_irqrestore(&vha->work_lock, flags);
3999 ((vha->hw->max_fibre_devices - 1) *
4002 sp->u.iocb_cmd.u.ctarg.rsp = dma_alloc_coherent(&vha->hw->pdev->dev,
4008 ql_log(ql_log_warn, vha, 0xffff,
4010 spin_lock_irqsave(&vha->work_lock, flags);
4011 vha->scan.scan_flags &= ~SF_SCANNING;
4012 spin_unlock_irqrestore(&vha->work_lock, flags);
4013 dma_free_coherent(&vha->hw->pdev->dev,
4023 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
4024 "%s scan list size %d\n", __func__, vha->scan.size);
4026 memset(vha->scan.l, 0, vha->scan.size);
4028 ql_dbg(ql_dbg_disc, vha, 0xffff,
4035 sp->gen1 = vha->hw->base_qpair->chip_reset;
4039 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
4056 ql_dbg(ql_dbg_disc, vha, 0xffff,
4069 dma_free_coherent(&vha->hw->pdev->dev,
4076 dma_free_coherent(&vha->hw->pdev->dev,
4085 spin_lock_irqsave(&vha->work_lock, flags);
4086 vha->scan.scan_flags &= ~SF_SCANNING;
4087 if (vha->scan.scan_flags == 0) {
4088 ql_dbg(ql_dbg_disc + ql_dbg_verbose, vha, 0xffff,
4090 vha->scan.scan_flags |= SF_QUEUED;
4091 schedule_delayed_work(&vha->scan.scan_work, 5);
4093 spin_unlock_irqrestore(&vha->work_lock, flags);
4103 struct scsi_qla_host *vha = container_of(s, struct scsi_qla_host,
4107 ql_dbg(ql_dbg_disc, vha, 0xffff,
4109 set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
4110 set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
4111 qla2xxx_wake_dpc(vha);
4112 spin_lock_irqsave(&vha->work_lock, flags);
4113 vha->scan.scan_flags &= ~SF_QUEUED;
4114 spin_unlock_irqrestore(&vha->work_lock, flags);
4118 void qla24xx_handle_gnnid_event(scsi_qla_host_t *vha, struct event_arg *ea)
4120 qla24xx_post_gnl_work(vha, ea->fcport);
4125 struct scsi_qla_host *vha = sp->vha;
4141 ql_dbg(ql_dbg_disc, vha, 0x204f,
4145 qla24xx_handle_gnnid_event(vha, &ea);
4150 int qla24xx_async_gnnid(scsi_qla_host_t *vha, fc_port_t *fcport)
4156 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
4160 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC);
4171 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
4192 ql_dbg(ql_dbg_disc, vha, 0xffff,
4209 int qla24xx_post_gnnid_work(struct scsi_qla_host *vha, fc_port_t *fcport)
4214 ls = atomic_read(&vha->loop_state);
4216 test_bit(UNLOADING, &vha->dpc_flags))
4219 e = qla2x00_alloc_work(vha, QLA_EVT_GNNID);
4224 return qla2x00_post_work(vha, e);
4228 void qla24xx_handle_gfpnid_event(scsi_qla_host_t *vha, struct event_arg *ea)
4232 ql_dbg(ql_dbg_disc, vha, 0xffff,
4236 fcport->rscn_gen, ea->sp->gen1, vha->fcport_count);
4243 ql_dbg(ql_dbg_disc, vha, 0x20d3,
4251 qla24xx_post_gpsc_work(vha, fcport);
4256 struct scsi_qla_host *vha = sp->vha;
4271 ql_dbg(ql_dbg_disc, vha, 0x204f,
4275 qla24xx_handle_gfpnid_event(vha, &ea);
4280 int qla24xx_async_gfpnid(scsi_qla_host_t *vha, fc_port_t *fcport)
4286 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
4289 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC);
4299 qla2x00_init_timer(sp, qla2x00_get_async_timeout(vha) + 2);
4320 ql_dbg(ql_dbg_disc, vha, 0xffff,
4337 int qla24xx_post_gfpnid_work(struct scsi_qla_host *vha, fc_port_t *fcport)
4342 ls = atomic_read(&vha->loop_state);
4344 test_bit(UNLOADING, &vha->dpc_flags))
4347 e = qla2x00_alloc_work(vha, QLA_EVT_GFPNID);
4352 return qla2x00_post_work(vha, e);