Lines Matching refs:fcport
195 * @fcport: fcport entry to updated
200 qla2x00_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport)
211 return qla2x00_sns_ga_nxt(vha, fcport);
230 ct_req->req.port_id.port_id = port_id_to_be_id(fcport->d_id);
244 fcport->d_id = be_to_port_id(ct_rsp->rsp.ga_nxt.port_id);
246 memcpy(fcport->node_name, ct_rsp->rsp.ga_nxt.node_name,
248 memcpy(fcport->port_name, ct_rsp->rsp.ga_nxt.port_name,
251 fcport->fc4_type = (ct_rsp->rsp.ga_nxt.fc4_types[2] & BIT_0) ?
256 fcport->d_id.b.domain = 0xf0;
261 fcport->node_name, fcport->port_name,
262 fcport->d_id.b.domain, fcport->d_id.b.area,
263 fcport->d_id.b.al_pa);
995 * @fcport: fcport entry to updated
1002 qla2x00_sns_ga_nxt(scsi_qla_host_t *vha, fc_port_t *fcport)
1014 sns_cmd->p.cmd.param[0] = fcport->d_id.b.al_pa;
1015 sns_cmd->p.cmd.param[1] = fcport->d_id.b.area;
1016 sns_cmd->p.cmd.param[2] = fcport->d_id.b.domain;
1034 fcport->d_id.b.domain = sns_cmd->p.gan_data[17];
1035 fcport->d_id.b.area = sns_cmd->p.gan_data[18];
1036 fcport->d_id.b.al_pa = sns_cmd->p.gan_data[19];
1038 memcpy(fcport->node_name, &sns_cmd->p.gan_data[284], WWN_SIZE);
1039 memcpy(fcport->port_name, &sns_cmd->p.gan_data[20], WWN_SIZE);
1043 fcport->d_id.b.domain = 0xf0;
1048 fcport->node_name, fcport->port_name,
1049 fcport->d_id.b.domain, fcport->d_id.b.area,
1050 fcport->d_id.b.al_pa);
2800 int qla24xx_post_gpsc_work(struct scsi_qla_host *vha, fc_port_t *fcport)
2808 e->u.fcport.fcport = fcport;
2814 struct fc_port *fcport = ea->fcport;
2818 __func__, fcport->port_name, fcport->disc_state,
2819 fcport->fw_login_state, ea->rc, ea->sp->gen2, fcport->login_gen,
2820 ea->sp->gen2, fcport->rscn_gen|ea->sp->gen1, fcport->loop_id);
2822 if (fcport->disc_state == DSC_DELETE_PEND)
2825 if (ea->sp->gen2 != fcport->login_gen) {
2829 __func__, fcport->port_name);
2831 } else if (ea->sp->gen1 != fcport->rscn_gen) {
2835 qla_post_iidma_work(vha, fcport);
2842 fc_port_t *fcport = sp->fcport;
2846 ct_rsp = &fcport->ct_desc.ct_sns->p.rsp;
2850 sp->name, res, fcport->port_name);
2852 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE);
2871 fcport->fp_speed = qla2x00_port_speed_capability(
2876 sp->name, fcport->fabric_port_name,
2882 ea.fcport = fcport;
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);
2905 sp->gen1 = fcport->rscn_gen;
2906 sp->gen2 = fcport->login_gen;
2911 ct_req = qla24xx_prep_ct_fm_req(fcport->ct_desc.ct_sns, GPSC_CMD,
2915 memcpy(ct_req->req.gpsc.port_name, fcport->fabric_port_name,
2918 sp->u.iocb_cmd.u.ctarg.req = fcport->ct_desc.ct_sns;
2919 sp->u.iocb_cmd.u.ctarg.req_dma = fcport->ct_desc.ct_sns_dma;
2920 sp->u.iocb_cmd.u.ctarg.rsp = fcport->ct_desc.ct_sns;
2921 sp->u.iocb_cmd.u.ctarg.rsp_dma = fcport->ct_desc.ct_sns_dma;
2931 sp->name, fcport->port_name, sp->handle,
2932 fcport->loop_id, fcport->d_id.b.domain,
2933 fcport->d_id.b.area, fcport->d_id.b.al_pa);
2995 fc_port_t *fcport, *conflict, *t;
3004 list_for_each_entry_safe(fcport, t, &vha->vp_fcports, list) {
3005 if (fcport->d_id.b24 == ea->id.b24)
3006 fcport->scan_state = QLA_FCPORT_SCAN;
3008 qlt_schedule_sess_for_deletion(fcport);
3012 fcport = qla2x00_find_fcport_by_wwpn(vha, ea->port_name, 1);
3013 if (fcport) {
3017 (fcport != conflict))
3020 * an existing fcport is having nport ID
3021 * conflict with new fcport.
3029 fcport->scan_needed = 0;
3030 fcport->rscn_gen++;
3031 fcport->scan_state = QLA_FCPORT_FOUND;
3032 fcport->flags |= FCF_FABRIC_DEVICE;
3033 if (fcport->login_retry == 0) {
3034 fcport->login_retry =
3038 fcport->port_name, fcport->loop_id,
3039 fcport->login_retry);
3041 switch (fcport->disc_state) {
3046 __func__, __LINE__, fcport->port_name);
3048 qla2x00_post_async_adisc_work(vha, fcport,
3054 fcport->port_name);
3055 fcport->d_id = ea->id;
3056 qla24xx_fcport_handle_login(vha, fcport);
3059 fcport->d_id = ea->id;
3062 fcport->d_id = ea->id;
3070 * an existing fcport is having nport ID
3071 * conflict with new fcport.
3084 /* create new fcport */
3272 fc_port_t *fcport = ea->fcport;
3274 qla24xx_post_gnl_work(vha, fcport);
3280 fc_port_t *fcport = sp->fcport;
3288 sp->name, res, fcport->d_id.b24, fcport->port_name);
3290 fcport->flags &= ~FCF_ASYNC_SENT;
3291 ct_rsp = &fcport->ct_desc.ct_sns->p.rsp;
3303 fcport->fc4_type = FS_FC4TYPE_FCP;
3304 fcport->fc4_features = fc4_scsi_feat & 0xf;
3309 fcport->fc4_type |= FS_FC4TYPE_NVME;
3310 fcport->fc4_features = fc4_nvme_feat & 0xf;
3316 ea.fcport = sp->fcport;
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);
3337 fcport->flags |= FCF_ASYNC_SENT;
3340 sp->gen1 = fcport->rscn_gen;
3341 sp->gen2 = fcport->login_gen;
3347 ct_req = qla2x00_prep_ct_req(fcport->ct_desc.ct_sns, GFF_ID_CMD,
3350 ct_req->req.gff_id.port_id[0] = fcport->d_id.b.domain;
3351 ct_req->req.gff_id.port_id[1] = fcport->d_id.b.area;
3352 ct_req->req.gff_id.port_id[2] = fcport->d_id.b.al_pa;
3354 sp->u.iocb_cmd.u.ctarg.req = fcport->ct_desc.ct_sns;
3355 sp->u.iocb_cmd.u.ctarg.req_dma = fcport->ct_desc.ct_sns_dma;
3356 sp->u.iocb_cmd.u.ctarg.rsp = fcport->ct_desc.ct_sns;
3357 sp->u.iocb_cmd.u.ctarg.rsp_dma = fcport->ct_desc.ct_sns_dma;
3366 sp->handle, fcport->port_name);
3375 fcport->flags &= ~FCF_ASYNC_SENT;
3406 fc_port_t *fcport;
3439 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3440 if ((fcport->flags & FCF_FABRIC_DEVICE) != 0) {
3441 fcport->scan_state = QLA_FCPORT_SCAN;
3449 list_for_each_entry(fcport, &vha->vp_fcports, list)
3450 fcport->scan_state = QLA_FCPORT_SCAN;
3488 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3489 if (memcmp(rp->port_name, fcport->port_name, WWN_SIZE))
3491 fcport->scan_state = QLA_FCPORT_FOUND;
3492 fcport->last_rscn_gen = fcport->rscn_gen;
3497 if ((fcport->flags & FCF_FABRIC_DEVICE) == 0) {
3498 qla2x00_clear_loop_id(fcport);
3499 fcport->flags |= FCF_FABRIC_DEVICE;
3500 } else if (fcport->d_id.b24 != rp->id.b24 ||
3501 (fcport->scan_needed &&
3502 fcport->port_type != FCT_INITIATOR &&
3503 fcport->port_type != FCT_NVME_INITIATOR)) {
3504 qlt_schedule_sess_for_deletion(fcport);
3506 fcport->d_id.b24 = rp->id.b24;
3507 fcport->scan_needed = 0;
3530 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3531 if ((fcport->flags & FCF_FABRIC_DEVICE) == 0) {
3532 fcport->scan_needed = 0;
3536 if (fcport->scan_state != QLA_FCPORT_FOUND) {
3539 if (fcport->scan_needed &&
3540 fcport->disc_state == DSC_LOGIN_PEND) {
3544 fcport->logout_on_delete = 1;
3548 fcport->scan_needed = 0;
3551 atomic_read(&fcport->state) == FCS_ONLINE) ||
3553 if (fcport->loop_id != FC_NO_LOOP_ID) {
3554 if (fcport->flags & FCF_FCP2_DEVICE)
3560 fcport->port_name);
3562 qlt_schedule_sess_for_deletion(fcport);
3567 if (fcport->scan_needed ||
3568 fcport->disc_state != DSC_LOGIN_COMPLETE) {
3569 if (fcport->login_retry == 0) {
3570 fcport->login_retry =
3574 fcport->port_name, fcport->loop_id,
3575 fcport->login_retry);
3577 fcport->scan_needed = 0;
3578 qla24xx_fcport_handle_login(vha, fcport);
3591 list_for_each_entry(fcport, &vha->vp_fcports, list) {
3592 if (fcport->scan_needed) {
4120 qla24xx_post_gnl_work(vha, ea->fcport);
4126 fc_port_t *fcport = sp->fcport;
4127 u8 *node_name = fcport->ct_desc.ct_sns->p.rsp.rsp.gnn_id.node_name;
4131 fcport->flags &= ~FCF_ASYNC_SENT;
4134 memcpy(fcport->node_name, node_name, WWN_SIZE);
4137 ea.fcport = fcport;
4143 sp->name, res, fcport->port_name, fcport->node_name);
4150 int qla24xx_async_gnnid(scsi_qla_host_t *vha, fc_port_t *fcport)
4156 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT))
4159 qla2x00_set_fcport_disc_state(fcport, DSC_GNN_ID);
4160 sp = qla2x00_get_sp(vha, fcport, GFP_ATOMIC);
4164 fcport->flags |= FCF_ASYNC_SENT;
4167 sp->gen1 = fcport->rscn_gen;
4168 sp->gen2 = fcport->login_gen;
4174 ct_req = qla2x00_prep_ct_req(fcport->ct_desc.ct_sns, GNN_ID_CMD,
4178 ct_req->req.port_id.port_id = port_id_to_be_id(fcport->d_id);
4182 sp->u.iocb_cmd.u.ctarg.req = fcport->ct_desc.ct_sns;
4183 sp->u.iocb_cmd.u.ctarg.req_dma = fcport->ct_desc.ct_sns_dma;
4184 sp->u.iocb_cmd.u.ctarg.rsp = fcport->ct_desc.ct_sns;
4185 sp->u.iocb_cmd.u.ctarg.rsp_dma = fcport->ct_desc.ct_sns_dma;
4194 sp->name, fcport->port_name,
4195 sp->handle, fcport->loop_id, fcport->d_id.b24);
4204 fcport->flags &= ~FCF_ASYNC_SENT;
4209 int qla24xx_post_gnnid_work(struct scsi_qla_host *vha, fc_port_t *fcport)
4223 e->u.fcport.fcport = fcport;
4230 fc_port_t *fcport = ea->fcport;
4234 __func__, fcport->port_name, fcport->disc_state,
4235 fcport->fw_login_state, ea->rc, fcport->login_gen, ea->sp->gen2,
4236 fcport->rscn_gen, ea->sp->gen1, vha->fcport_count);
4238 if (fcport->disc_state == DSC_DELETE_PEND)
4241 if (ea->sp->gen2 != fcport->login_gen) {
4245 __func__, fcport->port_name);
4247 } else if (ea->sp->gen1 != fcport->rscn_gen) {
4251 qla24xx_post_gpsc_work(vha, fcport);
4257 fc_port_t *fcport = sp->fcport;
4258 u8 *fpn = fcport->ct_desc.ct_sns->p.rsp.rsp.gfpn_id.port_name;
4264 memcpy(fcport->fabric_port_name, fpn, WWN_SIZE);
4267 ea.fcport = fcport;
4273 sp->name, res, fcport->port_name, fcport->fabric_port_name);
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);
4295 sp->gen1 = fcport->rscn_gen;
4296 sp->gen2 = fcport->login_gen;
4302 ct_req = qla2x00_prep_ct_req(fcport->ct_desc.ct_sns, GFPN_ID_CMD,
4306 ct_req->req.port_id.port_id = port_id_to_be_id(fcport->d_id);
4310 sp->u.iocb_cmd.u.ctarg.req = fcport->ct_desc.ct_sns;
4311 sp->u.iocb_cmd.u.ctarg.req_dma = fcport->ct_desc.ct_sns_dma;
4312 sp->u.iocb_cmd.u.ctarg.rsp = fcport->ct_desc.ct_sns;
4313 sp->u.iocb_cmd.u.ctarg.rsp_dma = fcport->ct_desc.ct_sns_dma;
4322 sp->name, fcport->port_name,
4323 sp->handle, fcport->loop_id, fcport->d_id.b24);
4337 int qla24xx_post_gfpnid_work(struct scsi_qla_host *vha, fc_port_t *fcport)
4351 e->u.fcport.fcport = fcport;