Lines Matching refs:fcport
100 fc_port_t *fcport = sp->fcport; in qla2x00_async_iocb_timeout() local
105 if (fcport) { in qla2x00_async_iocb_timeout()
106 ql_dbg(ql_dbg_disc, fcport->vha, 0x2071, in qla2x00_async_iocb_timeout()
108 sp->name, sp->handle, fcport->d_id.b24, fcport->port_name); in qla2x00_async_iocb_timeout()
110 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_iocb_timeout()
174 "%s %8phC res %d \n", __func__, sp->fcport->port_name, res); in qla2x00_async_login_sp_done()
176 sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_login_sp_done()
181 ea.fcport = sp->fcport; in qla2x00_async_login_sp_done()
194 fcport_is_smaller(fc_port_t *fcport) in fcport_is_smaller() argument
196 if (wwn_to_u64(fcport->port_name) < in fcport_is_smaller()
197 wwn_to_u64(fcport->vha->port_name)) in fcport_is_smaller()
204 fcport_is_bigger(fc_port_t *fcport) in fcport_is_bigger() argument
206 return !fcport_is_smaller(fcport); in fcport_is_bigger()
210 qla2x00_async_login(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_login() argument
220 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_login()
224 fcport->flags |= FCF_ASYNC_SENT; in qla2x00_async_login()
225 fcport->logout_completed = 0; in qla2x00_async_login()
227 fcport->disc_state = DSC_LOGIN_PEND; in qla2x00_async_login()
230 sp->gen1 = fcport->rscn_gen; in qla2x00_async_login()
231 sp->gen2 = fcport->login_gen; in qla2x00_async_login()
238 if (N2N_TOPO(fcport->vha->hw) && fcport_is_bigger(fcport)) { in qla2x00_async_login()
243 if (fcport->fc4f_nvme) in qla2x00_async_login()
250 fcport->flags |= FCF_LOGIN_NEEDED; in qla2x00_async_login()
257 "retries=%d.\n", fcport->port_name, sp->handle, fcport->loop_id, in qla2x00_async_login()
258 fcport->d_id.b.domain, fcport->d_id.b.area, fcport->d_id.b.al_pa, in qla2x00_async_login()
259 fcport->login_retry); in qla2x00_async_login()
264 fcport->flags &= ~FCF_ASYNC_SENT; in qla2x00_async_login()
266 fcport->flags &= ~FCF_ASYNC_ACTIVE; in qla2x00_async_login()
275 sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_logout_sp_done()
276 sp->fcport->login_gen++; in qla2x00_async_logout_sp_done()
277 qlt_logo_completion_handler(sp->fcport, res); in qla2x00_async_logout_sp_done()
282 qla2x00_async_logout(struct scsi_qla_host *vha, fc_port_t *fcport) in qla2x00_async_logout() argument
288 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla2x00_async_logout()
291 fcport->flags |= FCF_ASYNC_SENT; in qla2x00_async_logout()
292 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_logout()
310 sp->handle, fcport->loop_id, fcport->d_id.b.domain, in qla2x00_async_logout()
311 fcport->d_id.b.area, fcport->d_id.b.al_pa, in qla2x00_async_logout()
312 fcport->port_name); in qla2x00_async_logout()
318 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_logout()
323 qla2x00_async_prlo_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_prlo_done() argument
326 fcport->flags &= ~FCF_ASYNC_ACTIVE; in qla2x00_async_prlo_done()
328 if (!fcport->tgt_session) in qla2x00_async_prlo_done()
329 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_prlo_done()
330 qlt_logo_completion_handler(fcport, data[0]); in qla2x00_async_prlo_done()
340 sp->fcport->flags &= ~FCF_ASYNC_ACTIVE; in qla2x00_async_prlo_sp_done()
342 qla2x00_post_async_prlo_done_work(sp->fcport->vha, sp->fcport, in qla2x00_async_prlo_sp_done()
348 qla2x00_async_prlo(struct scsi_qla_host *vha, fc_port_t *fcport) in qla2x00_async_prlo() argument
355 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_prlo()
373 sp->handle, fcport->loop_id, fcport->d_id.b.domain, in qla2x00_async_prlo()
374 fcport->d_id.b.area, fcport->d_id.b.al_pa); in qla2x00_async_prlo()
380 fcport->flags &= ~FCF_ASYNC_ACTIVE; in qla2x00_async_prlo()
387 struct fc_port *fcport = ea->fcport; in qla24xx_handle_adisc_event() local
391 __func__, fcport->port_name, fcport->disc_state, in qla24xx_handle_adisc_event()
392 fcport->fw_login_state, ea->rc, fcport->login_gen, ea->sp->gen2, in qla24xx_handle_adisc_event()
393 fcport->rscn_gen, ea->sp->gen1, fcport->loop_id); in qla24xx_handle_adisc_event()
398 __func__, ea->fcport->port_name); in qla24xx_handle_adisc_event()
399 qlt_schedule_sess_for_deletion(ea->fcport); in qla24xx_handle_adisc_event()
403 if (ea->fcport->disc_state == DSC_DELETE_PEND) in qla24xx_handle_adisc_event()
406 if (ea->sp->gen2 != ea->fcport->login_gen) { in qla24xx_handle_adisc_event()
410 __func__, ea->fcport->port_name); in qla24xx_handle_adisc_event()
412 } else if (ea->sp->gen1 != ea->fcport->rscn_gen) { in qla24xx_handle_adisc_event()
414 __func__, __LINE__, ea->fcport->port_name); in qla24xx_handle_adisc_event()
415 qla24xx_post_gidpn_work(vha, ea->fcport); in qla24xx_handle_adisc_event()
422 int qla_post_els_plogi_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla_post_els_plogi_work() argument
430 e->u.fcport.fcport = fcport; in qla_post_els_plogi_work()
431 fcport->flags |= FCF_ASYNC_ACTIVE; in qla_post_els_plogi_work()
445 sp->name, res, sp->fcport->port_name); in qla2x00_async_adisc_sp_done()
447 sp->fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_adisc_sp_done()
456 ea.fcport = sp->fcport; in qla2x00_async_adisc_sp_done()
465 qla2x00_async_adisc(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_adisc() argument
473 fcport->flags |= FCF_ASYNC_SENT; in qla2x00_async_adisc()
474 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_adisc()
483 sp->gen1 = fcport->rscn_gen; in qla2x00_async_adisc()
484 sp->gen2 = fcport->login_gen; in qla2x00_async_adisc()
496 sp->handle, fcport->loop_id, fcport->d_id.b24, fcport->port_name); in qla2x00_async_adisc()
502 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_adisc()
503 qla2x00_post_async_adisc_work(vha, fcport, data); in qla2x00_async_adisc()
510 fc_port_t *fcport, *conflict_fcport; in qla24xx_handle_gnl_done_event() local
518 fcport = ea->fcport; in qla24xx_handle_gnl_done_event()
521 __func__, fcport->port_name, fcport->disc_state, in qla24xx_handle_gnl_done_event()
522 fcport->fw_login_state, ea->rc, in qla24xx_handle_gnl_done_event()
523 fcport->login_gen, fcport->last_login_gen, in qla24xx_handle_gnl_done_event()
524 fcport->rscn_gen, fcport->last_rscn_gen, vha->loop_id); in qla24xx_handle_gnl_done_event()
526 if (fcport->disc_state == DSC_DELETE_PEND) in qla24xx_handle_gnl_done_event()
530 if (fcport->login_retry == 0) { in qla24xx_handle_gnl_done_event()
533 fcport->port_name, fcport->login_retry); in qla24xx_handle_gnl_done_event()
538 if (fcport->last_rscn_gen != fcport->rscn_gen) { in qla24xx_handle_gnl_done_event()
541 __func__, fcport->port_name, in qla24xx_handle_gnl_done_event()
542 fcport->last_rscn_gen, fcport->rscn_gen); in qla24xx_handle_gnl_done_event()
543 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_gnl_done_event()
545 } else if (fcport->last_login_gen != fcport->login_gen) { in qla24xx_handle_gnl_done_event()
548 __func__, fcport->port_name); in qla24xx_handle_gnl_done_event()
556 __func__, __LINE__, fcport->port_name, n, in qla24xx_handle_gnl_done_event()
557 fcport->d_id.b.domain, fcport->d_id.b.area, in qla24xx_handle_gnl_done_event()
558 fcport->d_id.b.al_pa, fcport->loop_id); in qla24xx_handle_gnl_done_event()
568 if (memcmp((u8 *)&wwn, fcport->port_name, WWN_SIZE)) in qla24xx_handle_gnl_done_event()
578 if (fcport->fc4f_nvme) in qla24xx_handle_gnl_done_event()
586 __func__, fcport->port_name, in qla24xx_handle_gnl_done_event()
587 e->current_login_state, fcport->fw_login_state, in qla24xx_handle_gnl_done_event()
588 fcport->fc4f_nvme, id.b.domain, id.b.area, id.b.al_pa, in qla24xx_handle_gnl_done_event()
589 fcport->d_id.b.domain, fcport->d_id.b.area, in qla24xx_handle_gnl_done_event()
590 fcport->d_id.b.al_pa, loop_id, fcport->loop_id); in qla24xx_handle_gnl_done_event()
592 switch (fcport->disc_state) { in qla24xx_handle_gnl_done_event()
597 if ((id.b24 != fcport->d_id.b24 && in qla24xx_handle_gnl_done_event()
598 fcport->d_id.b24) || in qla24xx_handle_gnl_done_event()
599 (fcport->loop_id != FC_NO_LOOP_ID && in qla24xx_handle_gnl_done_event()
600 fcport->loop_id != loop_id)) { in qla24xx_handle_gnl_done_event()
603 __func__, __LINE__, fcport->port_name); in qla24xx_handle_gnl_done_event()
604 qlt_schedule_sess_for_deletion(fcport); in qla24xx_handle_gnl_done_event()
610 fcport->loop_id = loop_id; in qla24xx_handle_gnl_done_event()
612 wwn = wwn_to_u64(fcport->port_name); in qla24xx_handle_gnl_done_event()
622 conflict_fcport->conflict = fcport; in qla24xx_handle_gnl_done_event()
623 fcport->login_pause = 1; in qla24xx_handle_gnl_done_event()
632 __func__, __LINE__, fcport->port_name); in qla24xx_handle_gnl_done_event()
635 fcport->port_type = FCT_INITIATOR; in qla24xx_handle_gnl_done_event()
637 fcport->port_type = FCT_TARGET; in qla24xx_handle_gnl_done_event()
639 qla2x00_post_async_adisc_work(vha, fcport, in qla24xx_handle_gnl_done_event()
644 if (fcport->loop_id != FC_NO_LOOP_ID) in qla24xx_handle_gnl_done_event()
645 qla2x00_clear_loop_id(fcport); in qla24xx_handle_gnl_done_event()
647 fcport->loop_id = loop_id; in qla24xx_handle_gnl_done_event()
648 fcport->fw_login_state = DSC_LS_PORT_UNAVAIL; in qla24xx_handle_gnl_done_event()
649 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_handle_gnl_done_event()
654 fcport->fw_login_state = current_login_state; in qla24xx_handle_gnl_done_event()
655 fcport->d_id = id; in qla24xx_handle_gnl_done_event()
659 fcport->port_type = FCT_INITIATOR; in qla24xx_handle_gnl_done_event()
661 fcport->port_type = FCT_TARGET; in qla24xx_handle_gnl_done_event()
664 qla2x00_post_async_adisc_work(vha, fcport, in qla24xx_handle_gnl_done_event()
668 if (fcport_is_bigger(fcport)) { in qla24xx_handle_gnl_done_event()
670 if (fcport->loop_id != FC_NO_LOOP_ID) in qla24xx_handle_gnl_done_event()
671 qla2x00_clear_loop_id(fcport); in qla24xx_handle_gnl_done_event()
673 fcport->loop_id = loop_id; in qla24xx_handle_gnl_done_event()
675 fcport); in qla24xx_handle_gnl_done_event()
680 if (fcport_is_smaller(fcport)) { in qla24xx_handle_gnl_done_event()
682 if (fcport->loop_id != FC_NO_LOOP_ID) in qla24xx_handle_gnl_done_event()
683 qla2x00_clear_loop_id(fcport); in qla24xx_handle_gnl_done_event()
685 fcport->loop_id = loop_id; in qla24xx_handle_gnl_done_event()
687 fcport); in qla24xx_handle_gnl_done_event()
707 if (fcport->d_id.b24 == id.b24) { in qla24xx_handle_gnl_done_event()
725 if (fcport->loop_id == loop_id) in qla24xx_handle_gnl_done_event()
726 fcport->loop_id = FC_NO_LOOP_ID; in qla24xx_handle_gnl_done_event()
728 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_handle_gnl_done_event()
731 fcport->disc_state = DSC_DELETED; in qla24xx_handle_gnl_done_event()
732 if (time_after_eq(jiffies, fcport->dm_login_expire)) { in qla24xx_handle_gnl_done_event()
733 if (fcport->n2n_link_reset_cnt < 2) { in qla24xx_handle_gnl_done_event()
734 fcport->n2n_link_reset_cnt++; in qla24xx_handle_gnl_done_event()
743 if (fcport->n2n_chip_reset < 1) { in qla24xx_handle_gnl_done_event()
748 fcport->n2n_chip_reset++; in qla24xx_handle_gnl_done_event()
752 fcport->port_name); in qla24xx_handle_gnl_done_event()
753 fcport->scan_state = 0; in qla24xx_handle_gnl_done_event()
777 struct fc_port *fcport = NULL, *tf; in qla24xx_async_gnl_sp_done() local
820 fcport = tf = NULL; in qla24xx_async_gnl_sp_done()
824 list_for_each_entry_safe(fcport, tf, &h, gnl_entry) { in qla24xx_async_gnl_sp_done()
825 list_del_init(&fcport->gnl_entry); in qla24xx_async_gnl_sp_done()
827 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla24xx_async_gnl_sp_done()
829 ea.fcport = fcport; in qla24xx_async_gnl_sp_done()
845 list_for_each_entry_safe(fcport, tf, &vha->vp_fcports, list) { in qla24xx_async_gnl_sp_done()
846 if (!memcmp((u8 *)&wwn, fcport->port_name, in qla24xx_async_gnl_sp_done()
873 int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_async_gnl() argument
881 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gnl()
885 "Async-gnlist WWPN %8phC \n", fcport->port_name); in qla24xx_async_gnl()
888 if (!list_empty(&fcport->gnl_entry)) { in qla24xx_async_gnl()
895 fcport->disc_state = DSC_GNL; in qla24xx_async_gnl()
896 fcport->last_rscn_gen = fcport->rscn_gen; in qla24xx_async_gnl()
897 fcport->last_login_gen = fcport->login_gen; in qla24xx_async_gnl()
900 list_add_tail(&fcport->gnl_entry, &vha->gnl.fcports); in qla24xx_async_gnl()
903 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_gnl()
907 fcport->flags |= FCF_ASYNC_SENT; in qla24xx_async_gnl()
910 sp->gen1 = fcport->rscn_gen; in qla24xx_async_gnl()
911 sp->gen2 = fcport->login_gen; in qla24xx_async_gnl()
935 sp->name, fcport->port_name, sp->handle); in qla24xx_async_gnl()
941 fcport->flags &= ~FCF_ASYNC_SENT; in qla24xx_async_gnl()
946 int qla24xx_post_gnl_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_gnl_work() argument
954 e->u.fcport.fcport = fcport; in qla24xx_post_gnl_work()
955 fcport->flags |= FCF_ASYNC_ACTIVE; in qla24xx_post_gnl_work()
965 fc_port_t *fcport = sp->fcport; in qla24xx_async_gpdb_sp_done() local
971 sp->name, res, fcport->port_name, mb[1], mb[2]); in qla24xx_async_gpdb_sp_done()
973 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla24xx_async_gpdb_sp_done()
977 ea.fcport = fcport; in qla24xx_async_gpdb_sp_done()
988 static int qla24xx_post_prli_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_post_prli_work() argument
996 e->u.fcport.fcport = fcport; in qla24xx_post_prli_work()
1011 sp->fcport->port_name, res); in qla2x00_async_prli_sp_done()
1013 sp->fcport->flags &= ~FCF_ASYNC_SENT; in qla2x00_async_prli_sp_done()
1018 ea.fcport = sp->fcport; in qla2x00_async_prli_sp_done()
1032 qla24xx_async_prli(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_async_prli() argument
1041 if (fcport->fw_login_state == DSC_LS_PLOGI_PEND || in qla24xx_async_prli()
1042 fcport->fw_login_state == DSC_LS_PRLI_PEND) in qla24xx_async_prli()
1045 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_prli()
1049 fcport->flags |= FCF_ASYNC_SENT; in qla24xx_async_prli()
1050 fcport->logout_completed = 0; in qla24xx_async_prli()
1062 if (fcport->fc4f_nvme) in qla24xx_async_prli()
1067 fcport->flags |= FCF_LOGIN_NEEDED; in qla24xx_async_prli()
1074 fcport->port_name, sp->handle, fcport->loop_id, fcport->d_id.b24, in qla24xx_async_prli()
1075 fcport->login_retry, fcport->fc4f_nvme ? "nvme" : "fc"); in qla24xx_async_prli()
1081 fcport->flags &= ~FCF_ASYNC_SENT; in qla24xx_async_prli()
1085 int qla24xx_post_gpdb_work(struct scsi_qla_host *vha, fc_port_t *fcport, u8 opt) in qla24xx_post_gpdb_work() argument
1093 e->u.fcport.fcport = fcport; in qla24xx_post_gpdb_work()
1094 e->u.fcport.opt = opt; in qla24xx_post_gpdb_work()
1095 fcport->flags |= FCF_ASYNC_ACTIVE; in qla24xx_post_gpdb_work()
1099 int qla24xx_async_gpdb(struct scsi_qla_host *vha, fc_port_t *fcport, u8 opt) in qla24xx_async_gpdb() argument
1109 if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) in qla24xx_async_gpdb()
1112 fcport->disc_state = DSC_GPDB; in qla24xx_async_gpdb()
1114 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_gpdb()
1118 fcport->flags |= FCF_ASYNC_SENT; in qla24xx_async_gpdb()
1121 sp->gen1 = fcport->rscn_gen; in qla24xx_async_gpdb()
1122 sp->gen2 = fcport->login_gen; in qla24xx_async_gpdb()
1137 mb[1] = fcport->loop_id; in qla24xx_async_gpdb()
1156 sp->name, fcport->port_name, sp->handle, opt); in qla24xx_async_gpdb()
1165 fcport->flags &= ~FCF_ASYNC_SENT; in qla24xx_async_gpdb()
1167 qla24xx_post_gpdb_work(vha, fcport, opt); in qla24xx_async_gpdb()
1177 ea->fcport->login_gen++; in __qla24xx_handle_gpdb_event()
1178 ea->fcport->deleted = 0; in __qla24xx_handle_gpdb_event()
1179 ea->fcport->logout_on_delete = 1; in __qla24xx_handle_gpdb_event()
1181 if (!ea->fcport->login_succ && !IS_SW_RESV_ADDR(ea->fcport->d_id)) { in __qla24xx_handle_gpdb_event()
1183 ea->fcport->login_succ = 1; in __qla24xx_handle_gpdb_event()
1187 __func__, __LINE__, ea->fcport->port_name, in __qla24xx_handle_gpdb_event()
1189 qla24xx_post_upd_fcport_work(vha, ea->fcport); in __qla24xx_handle_gpdb_event()
1190 } else if (ea->fcport->login_succ) { in __qla24xx_handle_gpdb_event()
1198 __func__, __LINE__, ea->fcport->port_name); in __qla24xx_handle_gpdb_event()
1199 ea->fcport->disc_state = DSC_LOGIN_COMPLETE; in __qla24xx_handle_gpdb_event()
1207 fc_port_t *fcport = ea->fcport; in qla24xx_handle_gpdb_event() local
1214 fcport->flags &= ~FCF_ASYNC_SENT; in qla24xx_handle_gpdb_event()
1217 "%s %8phC DS %d LS %d nvme %x rc %d\n", __func__, fcport->port_name, in qla24xx_handle_gpdb_event()
1218 fcport->disc_state, pd->current_login_state, fcport->fc4f_nvme, in qla24xx_handle_gpdb_event()
1221 if (fcport->disc_state == DSC_DELETE_PEND) in qla24xx_handle_gpdb_event()
1224 if (fcport->fc4f_nvme) in qla24xx_handle_gpdb_event()
1231 __qla24xx_parse_gpdb(vha, fcport, pd); in qla24xx_handle_gpdb_event()
1240 fcport->disc_state = DSC_GNL; in qla24xx_handle_gpdb_event()
1248 __func__, __LINE__, fcport->port_name); in qla24xx_handle_gpdb_event()
1249 qlt_schedule_sess_for_deletion(fcport); in qla24xx_handle_gpdb_event()
1255 static void qla_chk_n2n_b4_login(struct scsi_qla_host *vha, fc_port_t *fcport) in qla_chk_n2n_b4_login() argument
1268 wwn = wwn_to_u64(fcport->port_name); in qla_chk_n2n_b4_login()
1271 else if ((fcport->fw_login_state == DSC_LS_PLOGI_COMP) in qla_chk_n2n_b4_login()
1273 fcport->plogi_nack_done_deadline)) in qla_chk_n2n_b4_login()
1284 if (fcport->loop_id == FC_NO_LOOP_ID) { in qla_chk_n2n_b4_login()
1285 fcport->fw_login_state = DSC_LS_PORT_UNAVAIL; in qla_chk_n2n_b4_login()
1286 rc = qla2x00_find_new_loop_id(vha, fcport); in qla_chk_n2n_b4_login()
1290 __func__, __LINE__, fcport->port_name); in qla_chk_n2n_b4_login()
1291 fcport->scan_state = 0; in qla_chk_n2n_b4_login()
1292 qlt_schedule_sess_for_deletion(fcport); in qla_chk_n2n_b4_login()
1298 __func__, __LINE__, fcport->port_name); in qla_chk_n2n_b4_login()
1299 qla2x00_post_async_login_work(vha, fcport, NULL); in qla_chk_n2n_b4_login()
1303 int qla24xx_fcport_handle_login(struct scsi_qla_host *vha, fc_port_t *fcport) in qla24xx_fcport_handle_login() argument
1310 __func__, fcport->port_name, fcport->disc_state, in qla24xx_fcport_handle_login()
1311 fcport->fw_login_state, fcport->login_pause, fcport->flags, in qla24xx_fcport_handle_login()
1312 fcport->conflict, fcport->last_rscn_gen, fcport->rscn_gen, in qla24xx_fcport_handle_login()
1313 fcport->login_gen, fcport->login_retry, in qla24xx_fcport_handle_login()
1314 fcport->loop_id, fcport->scan_state); in qla24xx_fcport_handle_login()
1316 if (fcport->scan_state != QLA_FCPORT_FOUND) in qla24xx_fcport_handle_login()
1319 if ((fcport->loop_id != FC_NO_LOOP_ID) && in qla24xx_fcport_handle_login()
1320 ((fcport->fw_login_state == DSC_LS_PLOGI_PEND) || in qla24xx_fcport_handle_login()
1321 (fcport->fw_login_state == DSC_LS_PRLI_PEND))) in qla24xx_fcport_handle_login()
1324 if (fcport->fw_login_state == DSC_LS_PLOGI_COMP) { in qla24xx_fcport_handle_login()
1325 if (time_before_eq(jiffies, fcport->plogi_nack_done_deadline)) { in qla24xx_fcport_handle_login()
1335 if (fcport->flags & FCF_ASYNC_SENT) { in qla24xx_fcport_handle_login()
1340 switch (fcport->disc_state) { in qla24xx_fcport_handle_login()
1342 wwn = wwn_to_u64(fcport->node_name); in qla24xx_fcport_handle_login()
1345 if (fcport_is_smaller(fcport)) { in qla24xx_fcport_handle_login()
1347 if (fcport->login_retry) { in qla24xx_fcport_handle_login()
1348 if (fcport->loop_id == FC_NO_LOOP_ID) { in qla24xx_fcport_handle_login()
1350 fcport); in qla24xx_fcport_handle_login()
1351 fcport->fw_login_state = in qla24xx_fcport_handle_login()
1354 fcport->login_retry--; in qla24xx_fcport_handle_login()
1355 qla_post_els_plogi_work(vha, fcport); in qla24xx_fcport_handle_login()
1359 fcport->port_name); in qla24xx_fcport_handle_login()
1362 qla24xx_post_gnl_work(vha, fcport); in qla24xx_fcport_handle_login()
1369 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1370 qla24xx_post_gnnid_work(vha, fcport); in qla24xx_fcport_handle_login()
1371 } else if (fcport->loop_id == FC_NO_LOOP_ID) { in qla24xx_fcport_handle_login()
1374 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1375 qla24xx_post_gnl_work(vha, fcport); in qla24xx_fcport_handle_login()
1377 qla_chk_n2n_b4_login(vha, fcport); in qla24xx_fcport_handle_login()
1386 if ((fcport->current_login_state & 0xf) == 0x6) { in qla24xx_fcport_handle_login()
1389 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1390 fcport->chip_reset = in qla24xx_fcport_handle_login()
1392 qla24xx_post_gpdb_work(vha, fcport, 0); in qla24xx_fcport_handle_login()
1396 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1397 qla24xx_post_prli_work(vha, fcport); in qla24xx_fcport_handle_login()
1401 if (fcport->login_pause) { in qla24xx_fcport_handle_login()
1402 fcport->last_rscn_gen = fcport->rscn_gen; in qla24xx_fcport_handle_login()
1403 fcport->last_login_gen = fcport->login_gen; in qla24xx_fcport_handle_login()
1407 qla_chk_n2n_b4_login(vha, fcport); in qla24xx_fcport_handle_login()
1413 fcport->login_retry--; in qla24xx_fcport_handle_login()
1416 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1418 qla_chk_n2n_b4_login(vha, fcport); in qla24xx_fcport_handle_login()
1420 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_fcport_handle_login()
1427 __func__, __LINE__, fcport->port_name); in qla24xx_fcport_handle_login()
1428 fcport->login_retry--; in qla24xx_fcport_handle_login()
1430 qla2x00_post_async_adisc_work(vha, fcport, data); in qla24xx_fcport_handle_login()
1434 if (fcport->fw_login_state == DSC_LS_PLOGI_COMP) in qla24xx_fcport_handle_login()
1435 qla24xx_post_prli_work(vha, fcport); in qla24xx_fcport_handle_login()
1446 void qla24xx_handle_rscn_event(fc_port_t *fcport, struct event_arg *ea) in qla24xx_handle_rscn_event() argument
1448 fcport->rscn_gen++; in qla24xx_handle_rscn_event()
1450 ql_dbg(ql_dbg_disc, fcport->vha, 0x210c, in qla24xx_handle_rscn_event()
1452 __func__, fcport->port_name, fcport->disc_state, in qla24xx_handle_rscn_event()
1453 fcport->fw_login_state); in qla24xx_handle_rscn_event()
1455 if (fcport->flags & FCF_ASYNC_SENT) in qla24xx_handle_rscn_event()
1458 switch (fcport->disc_state) { in qla24xx_handle_rscn_event()
1461 qla24xx_post_gpnid_work(fcport->vha, &ea->id); in qla24xx_handle_rscn_event()
1490 fc_port_t *fcport = ea->fcport; in qla24xx_handle_relogin_event() local
1494 __func__, fcport->port_name, fcport->disc_state, in qla24xx_handle_relogin_event()
1495 fcport->fw_login_state, fcport->login_pause, in qla24xx_handle_relogin_event()
1496 fcport->deleted, fcport->conflict, in qla24xx_handle_relogin_event()
1497 fcport->last_rscn_gen, fcport->rscn_gen, in qla24xx_handle_relogin_event()
1498 fcport->last_login_gen, fcport->login_gen, in qla24xx_handle_relogin_event()
1499 fcport->flags); in qla24xx_handle_relogin_event()
1501 if ((fcport->fw_login_state == DSC_LS_PLOGI_PEND) || in qla24xx_handle_relogin_event()
1502 (fcport->fw_login_state == DSC_LS_PRLI_PEND)) in qla24xx_handle_relogin_event()
1505 if (fcport->fw_login_state == DSC_LS_PLOGI_COMP) { in qla24xx_handle_relogin_event()
1506 if (time_before_eq(jiffies, fcport->plogi_nack_done_deadline)) { in qla24xx_handle_relogin_event()
1512 if (fcport->last_rscn_gen != fcport->rscn_gen) { in qla24xx_handle_relogin_event()
1514 __func__, __LINE__, fcport->port_name); in qla24xx_handle_relogin_event()
1516 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_relogin_event()
1520 qla24xx_fcport_handle_login(vha, fcport); in qla24xx_handle_relogin_event()
1528 __func__, __LINE__, ea->fcport->port_name); in qla_handle_els_plogi_done()
1529 qla24xx_post_prli_work(vha, ea->fcport); in qla_handle_els_plogi_done()
1537 fc_port_t *fcport; in qla2x00_fcport_event_handler() local
1551 fcport = qla2x00_find_fcport_by_nportid in qla2x00_fcport_event_handler()
1553 if (fcport) in qla2x00_fcport_event_handler()
1554 fcport->rscn_rcvd = 1; in qla2x00_fcport_event_handler()
1585 ea->fcport = f; in qla2x00_fcport_event_handler()
1662 qla2x00_async_tm_cmd(fc_port_t *fcport, uint32_t flags, uint32_t lun, in qla2x00_async_tm_cmd() argument
1665 struct scsi_qla_host *vha = fcport->vha; in qla2x00_async_tm_cmd()
1670 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla2x00_async_tm_cmd()
1693 sp->handle, fcport->loop_id, fcport->d_id.b.domain, in qla2x00_async_tm_cmd()
1694 fcport->d_id.b.area, fcport->d_id.b.al_pa); in qla2x00_async_tm_cmd()
1711 vha->hw->rsp_q_map[0], sp->fcport->loop_id, lun, in qla2x00_async_tm_cmd()
1717 sp->fcport->flags &= ~FCF_ASYNC_SENT; in qla2x00_async_tm_cmd()
1750 fc_port_t *fcport = cmd_sp->fcport; in qla24xx_async_abort_cmd() local
1755 sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); in qla24xx_async_abort_cmd()
1785 cmd_sp->handle, fcport->tgt_id); in qla24xx_async_abort_cmd()
1805 fc_port_t *fcport = sp->fcport; in qla24xx_async_abort_command() local
1806 struct scsi_qla_host *vha = fcport->vha; in qla24xx_async_abort_command()
1824 return qlafx00_fx_disc(vha, &vha->hw->mr.fcport, in qla24xx_async_abort_command()
1837 __func__, __LINE__, ea->fcport->port_name); in qla24xx_handle_prli_done_event()
1839 ea->fcport->chip_reset = vha->hw->base_qpair->chip_reset; in qla24xx_handle_prli_done_event()
1840 ea->fcport->logout_on_delete = 1; in qla24xx_handle_prli_done_event()
1841 qla24xx_post_gpdb_work(vha, ea->fcport, 0); in qla24xx_handle_prli_done_event()
1847 ea->fcport->fw_login_state = DSC_LS_PLOGI_COMP; in qla24xx_handle_prli_done_event()
1851 if (ea->fcport->n2n_flag) { in qla24xx_handle_prli_done_event()
1854 __func__, __LINE__, ea->fcport->port_name); in qla24xx_handle_prli_done_event()
1855 ea->fcport->fc4f_nvme = 0; in qla24xx_handle_prli_done_event()
1856 ea->fcport->n2n_flag = 0; in qla24xx_handle_prli_done_event()
1857 qla24xx_post_prli_work(vha, ea->fcport); in qla24xx_handle_prli_done_event()
1861 __func__, __LINE__, ea->fcport->port_name, ea->data[0]); in qla24xx_handle_prli_done_event()
1873 struct fc_port *fcport = ea->fcport; in qla24xx_handle_plogi_done_event() local
1877 __func__, fcport->port_name, fcport->disc_state, in qla24xx_handle_plogi_done_event()
1878 fcport->fw_login_state, ea->rc, ea->sp->gen2, fcport->login_gen, in qla24xx_handle_plogi_done_event()
1879 ea->sp->gen2, fcport->rscn_gen|ea->sp->gen1, in qla24xx_handle_plogi_done_event()
1882 if ((fcport->fw_login_state == DSC_LS_PLOGI_PEND) || in qla24xx_handle_plogi_done_event()
1883 (fcport->fw_login_state == DSC_LS_PRLI_PEND)) { in qla24xx_handle_plogi_done_event()
1886 __func__, __LINE__, fcport->port_name); in qla24xx_handle_plogi_done_event()
1890 if (fcport->disc_state == DSC_DELETE_PEND) in qla24xx_handle_plogi_done_event()
1893 if (ea->sp->gen2 != fcport->login_gen) { in qla24xx_handle_plogi_done_event()
1897 __func__, fcport->port_name); in qla24xx_handle_plogi_done_event()
1900 } else if (ea->sp->gen1 != fcport->rscn_gen) { in qla24xx_handle_plogi_done_event()
1902 __func__, __LINE__, fcport->port_name); in qla24xx_handle_plogi_done_event()
1903 qla24xx_post_gidpn_work(vha, fcport); in qla24xx_handle_plogi_done_event()
1914 if (ea->fcport->fc4f_nvme) { in qla24xx_handle_plogi_done_event()
1917 __func__, __LINE__, ea->fcport->port_name); in qla24xx_handle_plogi_done_event()
1918 qla24xx_post_prli_work(vha, ea->fcport); in qla24xx_handle_plogi_done_event()
1922 __func__, __LINE__, ea->fcport->port_name, in qla24xx_handle_plogi_done_event()
1923 ea->fcport->loop_id, ea->fcport->d_id.b24); in qla24xx_handle_plogi_done_event()
1925 set_bit(ea->fcport->loop_id, vha->hw->loop_id_map); in qla24xx_handle_plogi_done_event()
1927 ea->fcport->chip_reset = vha->hw->base_qpair->chip_reset; in qla24xx_handle_plogi_done_event()
1928 ea->fcport->logout_on_delete = 1; in qla24xx_handle_plogi_done_event()
1929 ea->fcport->send_els_logo = 0; in qla24xx_handle_plogi_done_event()
1930 ea->fcport->fw_login_state = DSC_LS_PRLI_COMP; in qla24xx_handle_plogi_done_event()
1933 qla24xx_post_gpdb_work(vha, ea->fcport, 0); in qla24xx_handle_plogi_done_event()
1938 __func__, __LINE__, ea->fcport->port_name, ea->data[1]); in qla24xx_handle_plogi_done_event()
1940 ea->fcport->flags &= ~FCF_ASYNC_SENT; in qla24xx_handle_plogi_done_event()
1941 ea->fcport->disc_state = DSC_LOGIN_FAILED; in qla24xx_handle_plogi_done_event()
1945 qla2x00_mark_device_lost(vha, ea->fcport, 1, 0); in qla24xx_handle_plogi_done_event()
1956 __func__, __LINE__, ea->fcport->port_name, in qla24xx_handle_plogi_done_event()
1957 ea->fcport->loop_id); in qla24xx_handle_plogi_done_event()
1960 set_bit(ea->fcport->loop_id, vha->hw->loop_id_map); in qla24xx_handle_plogi_done_event()
1961 ea->fcport->loop_id = FC_NO_LOOP_ID; in qla24xx_handle_plogi_done_event()
1963 qla2x00_clear_loop_id(ea->fcport); in qla24xx_handle_plogi_done_event()
1965 qla24xx_post_gnl_work(vha, ea->fcport); in qla24xx_handle_plogi_done_event()
1970 __func__, __LINE__, ea->fcport->port_name, in qla24xx_handle_plogi_done_event()
1971 ea->fcport->d_id.b.domain, ea->fcport->d_id.b.area, in qla24xx_handle_plogi_done_event()
1972 ea->fcport->d_id.b.al_pa); in qla24xx_handle_plogi_done_event()
1976 wwn_to_u64(ea->fcport->port_name), in qla24xx_handle_plogi_done_event()
1977 ea->fcport->d_id, lid, &conflict_fcport); in qla24xx_handle_plogi_done_event()
1985 conflict_fcport->conflict = ea->fcport; in qla24xx_handle_plogi_done_event()
1986 ea->fcport->login_pause = 1; in qla24xx_handle_plogi_done_event()
1990 __func__, __LINE__, ea->fcport->port_name, in qla24xx_handle_plogi_done_event()
1991 ea->fcport->d_id.b24, lid); in qla24xx_handle_plogi_done_event()
1992 qla2x00_clear_loop_id(ea->fcport); in qla24xx_handle_plogi_done_event()
1993 qla24xx_post_gidpn_work(vha, ea->fcport); in qla24xx_handle_plogi_done_event()
1997 __func__, __LINE__, ea->fcport->port_name, in qla24xx_handle_plogi_done_event()
1998 ea->fcport->d_id.b24, lid); in qla24xx_handle_plogi_done_event()
2000 qla2x00_clear_loop_id(ea->fcport); in qla24xx_handle_plogi_done_event()
2002 ea->fcport->loop_id = lid; in qla24xx_handle_plogi_done_event()
2003 ea->fcport->keep_nport_handle = 0; in qla24xx_handle_plogi_done_event()
2004 qlt_schedule_sess_for_deletion(ea->fcport); in qla24xx_handle_plogi_done_event()
2012 qla2x00_async_logout_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_logout_done() argument
2015 qlt_logo_completion_handler(fcport, data[0]); in qla2x00_async_logout_done()
2016 fcport->login_gen++; in qla2x00_async_logout_done()
2017 fcport->flags &= ~FCF_ASYNC_ACTIVE; in qla2x00_async_logout_done()
2022 qla2x00_async_adisc_done(struct scsi_qla_host *vha, fc_port_t *fcport, in qla2x00_async_adisc_done() argument
2025 fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); in qla2x00_async_adisc_done()
2027 qla2x00_update_fcport(vha, fcport); in qla2x00_async_adisc_done()
2036 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_async_adisc_done()
4674 fc_port_t *fcport = data; in qla2x00_rport_del() local
4678 spin_lock_irqsave(fcport->vha->host->host_lock, flags); in qla2x00_rport_del()
4679 rport = fcport->drport ? fcport->drport: fcport->rport; in qla2x00_rport_del()
4680 fcport->drport = NULL; in qla2x00_rport_del()
4681 spin_unlock_irqrestore(fcport->vha->host->host_lock, flags); in qla2x00_rport_del()
4683 ql_dbg(ql_dbg_disc, fcport->vha, 0x210b, in qla2x00_rport_del()
4685 __func__, fcport->port_name, rport, in qla2x00_rport_del()
4702 fc_port_t *fcport; in qla2x00_alloc_fcport() local
4704 fcport = kzalloc(sizeof(fc_port_t), flags); in qla2x00_alloc_fcport()
4705 if (!fcport) in qla2x00_alloc_fcport()
4709 fcport->vha = vha; in qla2x00_alloc_fcport()
4710 fcport->port_type = FCT_UNKNOWN; in qla2x00_alloc_fcport()
4711 fcport->loop_id = FC_NO_LOOP_ID; in qla2x00_alloc_fcport()
4712 qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED); in qla2x00_alloc_fcport()
4713 fcport->supported_classes = FC_COS_UNSPECIFIED; in qla2x00_alloc_fcport()
4715 fcport->ct_desc.ct_sns = dma_alloc_coherent(&vha->hw->pdev->dev, in qla2x00_alloc_fcport()
4716 sizeof(struct ct_sns_pkt), &fcport->ct_desc.ct_sns_dma, in qla2x00_alloc_fcport()
4718 fcport->disc_state = DSC_DELETED; in qla2x00_alloc_fcport()
4719 fcport->fw_login_state = DSC_LS_PORT_UNAVAIL; in qla2x00_alloc_fcport()
4720 fcport->deleted = QLA_SESS_DELETED; in qla2x00_alloc_fcport()
4721 fcport->login_retry = vha->hw->login_retry_count; in qla2x00_alloc_fcport()
4722 fcport->logout_on_delete = 1; in qla2x00_alloc_fcport()
4724 if (!fcport->ct_desc.ct_sns) { in qla2x00_alloc_fcport()
4727 kfree(fcport); in qla2x00_alloc_fcport()
4728 fcport = NULL; in qla2x00_alloc_fcport()
4730 INIT_WORK(&fcport->del_work, qla24xx_delete_sess_fn); in qla2x00_alloc_fcport()
4731 INIT_LIST_HEAD(&fcport->gnl_entry); in qla2x00_alloc_fcport()
4732 INIT_LIST_HEAD(&fcport->list); in qla2x00_alloc_fcport()
4734 return fcport; in qla2x00_alloc_fcport()
4738 qla2x00_free_fcport(fc_port_t *fcport) in qla2x00_free_fcport() argument
4740 if (fcport->ct_desc.ct_sns) { in qla2x00_free_fcport()
4741 dma_free_coherent(&fcport->vha->hw->pdev->dev, in qla2x00_free_fcport()
4742 sizeof(struct ct_sns_pkt), fcport->ct_desc.ct_sns, in qla2x00_free_fcport()
4743 fcport->ct_desc.ct_sns_dma); in qla2x00_free_fcport()
4745 fcport->ct_desc.ct_sns = NULL; in qla2x00_free_fcport()
4747 kfree(fcport); in qla2x00_free_fcport()
4909 fc_port_t *fcport, *new_fcport; in qla2x00_configure_local_loop() local
4961 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_local_loop()
4962 fcport->scan_state = QLA_FCPORT_SCAN; in qla2x00_configure_local_loop()
5029 fcport = NULL; in qla2x00_configure_local_loop()
5030 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_local_loop()
5031 if (memcmp(new_fcport->port_name, fcport->port_name, in qla2x00_configure_local_loop()
5035 fcport->flags &= ~FCF_FABRIC_DEVICE; in qla2x00_configure_local_loop()
5036 fcport->loop_id = new_fcport->loop_id; in qla2x00_configure_local_loop()
5037 fcport->port_type = new_fcport->port_type; in qla2x00_configure_local_loop()
5038 fcport->d_id.b24 = new_fcport->d_id.b24; in qla2x00_configure_local_loop()
5039 memcpy(fcport->node_name, new_fcport->node_name, in qla2x00_configure_local_loop()
5041 fcport->scan_state = QLA_FCPORT_FOUND; in qla2x00_configure_local_loop()
5051 fcport = new_fcport; in qla2x00_configure_local_loop()
5070 fcport->fp_speed = ha->link_data_rate; in qla2x00_configure_local_loop()
5075 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_configure_local_loop()
5079 if (fcport->scan_state == QLA_FCPORT_SCAN) { in qla2x00_configure_local_loop()
5082 atomic_read(&fcport->state) == FCS_ONLINE) { in qla2x00_configure_local_loop()
5083 qla2x00_mark_device_lost(vha, fcport, in qla2x00_configure_local_loop()
5085 if (fcport->loop_id != FC_NO_LOOP_ID && in qla2x00_configure_local_loop()
5086 (fcport->flags & FCF_FCP2_DEVICE) == 0 && in qla2x00_configure_local_loop()
5087 fcport->port_type != FCT_INITIATOR && in qla2x00_configure_local_loop()
5088 fcport->port_type != FCT_BROADCAST) { in qla2x00_configure_local_loop()
5092 fcport->port_name); in qla2x00_configure_local_loop()
5094 qlt_schedule_sess_for_deletion(fcport); in qla2x00_configure_local_loop()
5100 if (fcport->scan_state == QLA_FCPORT_FOUND) in qla2x00_configure_local_loop()
5101 qla24xx_fcport_handle_login(vha, fcport); in qla2x00_configure_local_loop()
5116 qla2x00_iidma_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_iidma_fcport() argument
5125 if (atomic_read(&fcport->state) != FCS_ONLINE) in qla2x00_iidma_fcport()
5128 if (fcport->fp_speed == PORT_SPEED_UNKNOWN || in qla2x00_iidma_fcport()
5129 fcport->fp_speed > ha->link_data_rate || in qla2x00_iidma_fcport()
5133 rval = qla2x00_set_idma_speed(vha, fcport->loop_id, fcport->fp_speed, in qla2x00_iidma_fcport()
5138 fcport->port_name, rval, fcport->fp_speed, mb[0], mb[1]); in qla2x00_iidma_fcport()
5142 qla2x00_get_link_speed_str(ha, fcport->fp_speed), in qla2x00_iidma_fcport()
5143 fcport->fp_speed, fcport->port_name); in qla2x00_iidma_fcport()
5147 void qla_do_iidma_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla_do_iidma_work() argument
5149 qla2x00_iidma_fcport(vha, fcport); in qla_do_iidma_work()
5150 qla24xx_update_fcport_fcp_prio(vha, fcport); in qla_do_iidma_work()
5153 int qla_post_iidma_work(struct scsi_qla_host *vha, fc_port_t *fcport) in qla_post_iidma_work() argument
5161 e->u.fcport.fcport = fcport; in qla_post_iidma_work()
5167 qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_reg_remote_port() argument
5173 if (atomic_read(&fcport->state) == FCS_ONLINE) in qla2x00_reg_remote_port()
5176 rport_ids.node_name = wwn_to_u64(fcport->node_name); in qla2x00_reg_remote_port()
5177 rport_ids.port_name = wwn_to_u64(fcport->port_name); in qla2x00_reg_remote_port()
5178 rport_ids.port_id = fcport->d_id.b.domain << 16 | in qla2x00_reg_remote_port()
5179 fcport->d_id.b.area << 8 | fcport->d_id.b.al_pa; in qla2x00_reg_remote_port()
5181 fcport->rport = rport = fc_remote_port_add(vha->host, 0, &rport_ids); in qla2x00_reg_remote_port()
5188 spin_lock_irqsave(fcport->vha->host->host_lock, flags); in qla2x00_reg_remote_port()
5189 *((fc_port_t **)rport->dd_data) = fcport; in qla2x00_reg_remote_port()
5190 spin_unlock_irqrestore(fcport->vha->host->host_lock, flags); in qla2x00_reg_remote_port()
5192 rport->supported_classes = fcport->supported_classes; in qla2x00_reg_remote_port()
5195 if (fcport->port_type == FCT_INITIATOR) in qla2x00_reg_remote_port()
5197 if (fcport->port_type == FCT_TARGET) in qla2x00_reg_remote_port()
5202 __func__, fcport->port_name, rport, in qla2x00_reg_remote_port()
5203 (fcport->port_type == FCT_TARGET) ? "tgt" : "ini"); in qla2x00_reg_remote_port()
5224 qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_update_fcport() argument
5226 fcport->vha = vha; in qla2x00_update_fcport()
5228 if (IS_SW_RESV_ADDR(fcport->d_id)) in qla2x00_update_fcport()
5231 fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); in qla2x00_update_fcport()
5232 fcport->disc_state = DSC_LOGIN_COMPLETE; in qla2x00_update_fcport()
5233 fcport->deleted = 0; in qla2x00_update_fcport()
5234 fcport->logout_on_delete = 1; in qla2x00_update_fcport()
5235 fcport->login_retry = vha->hw->login_retry_count; in qla2x00_update_fcport()
5236 fcport->n2n_chip_reset = fcport->n2n_link_reset_cnt = 0; in qla2x00_update_fcport()
5238 qla2x00_iidma_fcport(vha, fcport); in qla2x00_update_fcport()
5243 fcport->keep_nport_handle = 1; in qla2x00_update_fcport()
5249 if (fcport->fc4f_nvme) { in qla2x00_update_fcport()
5250 qla_nvme_register_remote(vha, fcport); in qla2x00_update_fcport()
5251 fcport->disc_state = DSC_LOGIN_COMPLETE; in qla2x00_update_fcport()
5252 qla2x00_set_fcport_state(fcport, FCS_ONLINE); in qla2x00_update_fcport()
5256 qla24xx_update_fcport_fcp_prio(vha, fcport); in qla2x00_update_fcport()
5260 qla2x00_reg_remote_port(vha, fcport); in qla2x00_update_fcport()
5265 qlt_fc_port_added(vha, fcport); in qla2x00_update_fcport()
5268 qla2x00_reg_remote_port(vha, fcport); in qla2x00_update_fcport()
5271 qlt_fc_port_added(vha, fcport); in qla2x00_update_fcport()
5278 if (fcport->id_changed) { in qla2x00_update_fcport()
5279 fcport->id_changed = 0; in qla2x00_update_fcport()
5282 __func__, __LINE__, fcport->port_name, in qla2x00_update_fcport()
5284 qla24xx_post_gfpnid_work(vha, fcport); in qla2x00_update_fcport()
5288 __func__, __LINE__, fcport->port_name, in qla2x00_update_fcport()
5290 qla24xx_post_gpsc_work(vha, fcport); in qla2x00_update_fcport()
5293 qla2x00_set_fcport_state(fcport, FCS_ONLINE); in qla2x00_update_fcport()
5311 fc_port_t *fcport; in qla2x00_configure_fabric() local
5416 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla2x00_configure_fabric()
5417 fcport->scan_state = QLA_FCPORT_SCAN; in qla2x00_configure_fabric()
5453 fc_port_t *fcport, *new_fcport; in qla2x00_find_all_fabric_devs() local
5614 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_find_all_fabric_devs()
5615 if (memcmp(new_fcport->port_name, fcport->port_name, in qla2x00_find_all_fabric_devs()
5619 fcport->scan_state = QLA_FCPORT_FOUND; in qla2x00_find_all_fabric_devs()
5624 memcpy(fcport->fabric_port_name, in qla2x00_find_all_fabric_devs()
5626 fcport->fp_speed = new_fcport->fp_speed; in qla2x00_find_all_fabric_devs()
5632 if (fcport->d_id.b24 == new_fcport->d_id.b24 && in qla2x00_find_all_fabric_devs()
5633 (atomic_read(&fcport->state) == FCS_ONLINE || in qla2x00_find_all_fabric_devs()
5641 if ((fcport->flags & FCF_FABRIC_DEVICE) == 0) { in qla2x00_find_all_fabric_devs()
5642 fcport->d_id.b24 = new_fcport->d_id.b24; in qla2x00_find_all_fabric_devs()
5643 qla2x00_clear_loop_id(fcport); in qla2x00_find_all_fabric_devs()
5644 fcport->flags |= (FCF_FABRIC_DEVICE | in qla2x00_find_all_fabric_devs()
5658 fcport->port_name, in qla2x00_find_all_fabric_devs()
5659 fcport->d_id.b.domain, in qla2x00_find_all_fabric_devs()
5660 fcport->d_id.b.area, in qla2x00_find_all_fabric_devs()
5661 fcport->d_id.b.al_pa, in qla2x00_find_all_fabric_devs()
5662 fcport->loop_id, in qla2x00_find_all_fabric_devs()
5666 fcport->d_id.b24 = new_fcport->d_id.b24; in qla2x00_find_all_fabric_devs()
5670 fcport->d_id.b24 = new_fcport->d_id.b24; in qla2x00_find_all_fabric_devs()
5671 fcport->flags |= FCF_LOGIN_NEEDED; in qla2x00_find_all_fabric_devs()
5675 if (fcport->fc4f_nvme) { in qla2x00_find_all_fabric_devs()
5676 if (fcport->disc_state == DSC_DELETE_PEND) { in qla2x00_find_all_fabric_devs()
5677 fcport->disc_state = DSC_GNL; in qla2x00_find_all_fabric_devs()
5679 fcport->login_succ = 0; in qla2x00_find_all_fabric_devs()
5711 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_find_all_fabric_devs()
5715 if ((fcport->flags & FCF_FABRIC_DEVICE) == 0 || in qla2x00_find_all_fabric_devs()
5716 (fcport->flags & FCF_LOGIN_NEEDED) == 0) in qla2x00_find_all_fabric_devs()
5719 if (fcport->scan_state == QLA_FCPORT_SCAN) { in qla2x00_find_all_fabric_devs()
5722 atomic_read(&fcport->state) == FCS_ONLINE) { in qla2x00_find_all_fabric_devs()
5723 qla2x00_mark_device_lost(vha, fcport, in qla2x00_find_all_fabric_devs()
5725 if (fcport->loop_id != FC_NO_LOOP_ID && in qla2x00_find_all_fabric_devs()
5726 (fcport->flags & FCF_FCP2_DEVICE) == 0 && in qla2x00_find_all_fabric_devs()
5727 fcport->port_type != FCT_INITIATOR && in qla2x00_find_all_fabric_devs()
5728 fcport->port_type != FCT_BROADCAST) { in qla2x00_find_all_fabric_devs()
5732 fcport->port_name); in qla2x00_find_all_fabric_devs()
5733 qlt_schedule_sess_for_deletion(fcport); in qla2x00_find_all_fabric_devs()
5739 if (fcport->scan_state == QLA_FCPORT_FOUND) in qla2x00_find_all_fabric_devs()
5740 qla24xx_fcport_handle_login(vha, fcport); in qla2x00_find_all_fabric_devs()
5837 qla2x00_fabric_login(scsi_qla_host_t *vha, fc_port_t *fcport, in qla2x00_fabric_login() argument
5853 fcport->loop_id, fcport->d_id.b.domain, in qla2x00_fabric_login()
5854 fcport->d_id.b.area, fcport->d_id.b.al_pa); in qla2x00_fabric_login()
5857 rval = ha->isp_ops->fabric_login(vha, fcport->loop_id, in qla2x00_fabric_login()
5858 fcport->d_id.b.domain, fcport->d_id.b.area, in qla2x00_fabric_login()
5859 fcport->d_id.b.al_pa, mb, BIT_0); in qla2x00_fabric_login()
5872 tmp_loopid = fcport->loop_id; in qla2x00_fabric_login()
5873 fcport->loop_id = mb[1]; in qla2x00_fabric_login()
5878 fcport->loop_id, fcport->d_id.b.domain, in qla2x00_fabric_login()
5879 fcport->d_id.b.area, fcport->d_id.b.al_pa); in qla2x00_fabric_login()
5893 *next_loopid = (fcport->loop_id + 1); in qla2x00_fabric_login()
5897 fcport->port_type = FCT_INITIATOR; in qla2x00_fabric_login()
5899 fcport->port_type = FCT_TARGET; in qla2x00_fabric_login()
5901 fcport->flags |= FCF_FCP2_DEVICE; in qla2x00_fabric_login()
5906 fcport->supported_classes |= FC_COS_CLASS2; in qla2x00_fabric_login()
5908 fcport->supported_classes |= FC_COS_CLASS3; in qla2x00_fabric_login()
5912 fcport->flags |= in qla2x00_fabric_login()
5922 fcport->loop_id++; in qla2x00_fabric_login()
5923 rval = qla2x00_find_new_loop_id(vha, fcport); in qla2x00_fabric_login()
5934 *next_loopid = fcport->loop_id; in qla2x00_fabric_login()
5935 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
5936 fcport->d_id.b.domain, fcport->d_id.b.area, in qla2x00_fabric_login()
5937 fcport->d_id.b.al_pa); in qla2x00_fabric_login()
5938 qla2x00_mark_device_lost(vha, fcport, 1, 0); in qla2x00_fabric_login()
5948 "jiffies=%lx.\n", mb[0], fcport->d_id.b.domain, in qla2x00_fabric_login()
5949 fcport->d_id.b.area, fcport->d_id.b.al_pa, in qla2x00_fabric_login()
5950 fcport->loop_id, jiffies); in qla2x00_fabric_login()
5952 *next_loopid = fcport->loop_id; in qla2x00_fabric_login()
5953 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
5954 fcport->d_id.b.domain, fcport->d_id.b.area, in qla2x00_fabric_login()
5955 fcport->d_id.b.al_pa); in qla2x00_fabric_login()
5956 qla2x00_clear_loop_id(fcport); in qla2x00_fabric_login()
5957 fcport->login_retry = 0; in qla2x00_fabric_login()
5981 qla2x00_local_device_login(scsi_qla_host_t *vha, fc_port_t *fcport) in qla2x00_local_device_login() argument
5987 rval = qla2x00_login_local_device(vha, fcport, mb, BIT_0); in qla2x00_local_device_login()
6097 fc_port_t *fcport; in qla2x00_update_fcports() local
6106 list_for_each_entry(fcport, &vha->vp_fcports, list) { in qla2x00_update_fcports()
6107 if (fcport->drport && in qla2x00_update_fcports()
6108 atomic_read(&fcport->state) != FCS_UNCONFIGURED) { in qla2x00_update_fcports()
6110 qla2x00_rport_del(fcport); in qla2x00_update_fcports()
6474 fc_port_t *fcport; in qla2x00_abort_isp_cleanup() local
6552 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla2x00_abort_isp_cleanup()
6553 fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); in qla2x00_abort_isp_cleanup()
6559 list_for_each_entry(fcport, &vp->vp_fcports, list) in qla2x00_abort_isp_cleanup()
6560 fcport->flags &= ~(FCF_LOGIN_NEEDED | FCF_ASYNC_SENT); in qla2x00_abort_isp_cleanup()
8410 qla24xx_get_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_get_fcp_prio() argument
8448 pid2 = fcport->d_id.b24 & INVALID_PORT_ID; in qla24xx_get_fcp_prio()
8467 wwn1 = wwn_to_u64(fcport->port_name); in qla24xx_get_fcp_prio()
8503 qla24xx_update_fcport_fcp_prio(scsi_qla_host_t *vha, fc_port_t *fcport) in qla24xx_update_fcport_fcp_prio() argument
8509 if (fcport->port_type != FCT_TARGET || in qla24xx_update_fcport_fcp_prio()
8510 fcport->loop_id == FC_NO_LOOP_ID) in qla24xx_update_fcport_fcp_prio()
8513 priority = qla24xx_get_fcp_prio(vha, fcport); in qla24xx_update_fcport_fcp_prio()
8518 fcport->fcp_prio = priority & 0xf; in qla24xx_update_fcport_fcp_prio()
8522 ret = qla24xx_set_fcp_prio(vha, fcport->loop_id, priority, mb); in qla24xx_update_fcport_fcp_prio()
8524 if (fcport->fcp_prio != priority) in qla24xx_update_fcport_fcp_prio()
8528 fcport->loop_id, fcport->d_id.b.domain, in qla24xx_update_fcport_fcp_prio()
8529 fcport->d_id.b.area, fcport->d_id.b.al_pa); in qla24xx_update_fcport_fcp_prio()
8530 fcport->fcp_prio = priority & 0xf; in qla24xx_update_fcport_fcp_prio()
8534 "loop_id=%d port_id=%02x%02x%02x.\n", ret, fcport->loop_id, in qla24xx_update_fcport_fcp_prio()
8535 fcport->d_id.b.domain, fcport->d_id.b.area, in qla24xx_update_fcport_fcp_prio()
8536 fcport->d_id.b.al_pa); in qla24xx_update_fcport_fcp_prio()
8557 fc_port_t *fcport; in qla24xx_update_all_fcp_prio() local
8561 list_for_each_entry(fcport, &vha->vp_fcports, list) in qla24xx_update_all_fcp_prio()
8562 ret = qla24xx_update_fcport_fcp_prio(vha, fcport); in qla24xx_update_all_fcp_prio()