• Home
  • Raw
  • Download

Lines Matching refs:lport

104 struct fc_rport_priv *fc_rport_lookup(const struct fc_lport *lport,  in fc_rport_lookup()  argument
110 list_for_each_entry_rcu(tmp_rdata, &lport->disc.rports, peers) in fc_rport_lookup()
128 struct fc_rport_priv *fc_rport_create(struct fc_lport *lport, u32 port_id) in fc_rport_create() argument
133 lockdep_assert_held(&lport->disc.disc_mutex); in fc_rport_create()
135 rdata = fc_rport_lookup(lport, port_id); in fc_rport_create()
139 if (lport->rport_priv_size > 0) in fc_rport_create()
140 rport_priv_size = lport->rport_priv_size; in fc_rport_create()
152 rdata->local_port = lport; in fc_rport_create()
156 rdata->e_d_tov = lport->e_d_tov; in fc_rport_create()
157 rdata->r_a_tov = lport->r_a_tov; in fc_rport_create()
162 rdata->lld_event_callback = lport->tt.rport_event_callback; in fc_rport_create()
163 list_add_rcu(&rdata->peers, &lport->disc.rports); in fc_rport_create()
263 struct fc_lport *lport = rdata->local_port; in fc_rport_work() local
287 rport = fc_remote_port_add(lport->host, 0, &ids); in fc_rport_work()
303 rpriv->local_port = lport; in fc_rport_work()
312 rport_ops->event_callback(lport, rdata, event); in fc_rport_work()
316 rdata->lld_event_callback(lport, rdata, event); in fc_rport_work()
338 rport_ops->event_callback(lport, rdata, event); in fc_rport_work()
342 rdata->lld_event_callback(lport, rdata, event); in fc_rport_work()
350 lport->tt.exch_mgr_reset(lport, 0, port_id); in fc_rport_work()
351 lport->tt.exch_mgr_reset(lport, port_id, 0); in fc_rport_work()
370 lport->max_rport_retry_count) { in fc_rport_work()
379 mutex_lock(&lport->disc.disc_mutex); in fc_rport_work()
381 mutex_unlock(&lport->disc.disc_mutex); in fc_rport_work()
502 struct fc_lport *lport = rdata->local_port; in fc_rport_logoff() local
520 lport->tt.exch_mgr_reset(lport, 0, port_id); in fc_rport_logoff()
521 lport->tt.exch_mgr_reset(lport, port_id, 0); in fc_rport_logoff()
612 struct fc_lport *lport = rdata->local_port; in fc_rport_error() local
625 if (lport->point_to_multipoint) { in fc_rport_error()
696 struct fc_lport *lport = rdata->local_port; in fc_rport_login_complete() local
723 rdata->maxframe_size = fc_plogi_get_maxframe(flogi, lport->mfs); in fc_rport_login_complete()
737 struct fc_lport *lport = rdata->local_port; in fc_rport_flogi_resp() local
792 if (rdata->ids.port_name < lport->wwpn) in fc_rport_flogi_resp()
817 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_flogi() local
822 if (!lport->point_to_multipoint) in fc_rport_enter_flogi()
830 fp = fc_frame_alloc(lport, sizeof(struct fc_els_flogi)); in fc_rport_enter_flogi()
835 if (!lport->tt.elsct_send(lport, rdata->ids.port_id, fp, ELS_FLOGI, in fc_rport_enter_flogi()
837 2 * lport->r_a_tov)) { in fc_rport_enter_flogi()
850 static void fc_rport_recv_flogi_req(struct fc_lport *lport, in fc_rport_recv_flogi_req() argument
861 FC_RPORT_ID_DBG(lport, sid, "Received FLOGI request\n"); in fc_rport_recv_flogi_req()
863 if (!lport->point_to_multipoint) { in fc_rport_recv_flogi_req()
876 rdata = fc_rport_lookup(lport, sid); in fc_rport_recv_flogi_req()
932 fp = fc_frame_alloc(lport, sizeof(*flp)); in fc_rport_recv_flogi_req()
936 fc_flogi_fill(lport, fp); in fc_rport_recv_flogi_req()
941 lport->tt.frame_send(lport, fp); in fc_rport_recv_flogi_req()
949 if (rdata->ids.port_name < lport->wwpn) in fc_rport_recv_flogi_req()
981 struct fc_lport *lport = rdata->local_port; in fc_rport_plogi_resp() local
1016 if (lport->point_to_multipoint) in fc_rport_plogi_resp()
1023 rdata->maxframe_size = fc_plogi_get_maxframe(plp, lport->mfs); in fc_rport_plogi_resp()
1045 fc_rport_compatible_roles(struct fc_lport *lport, struct fc_rport_priv *rdata) in fc_rport_compatible_roles() argument
1050 (lport->service_params & FCP_SPPF_INIT_FCN)) in fc_rport_compatible_roles()
1053 (lport->service_params & FCP_SPPF_TARG_FCN)) in fc_rport_compatible_roles()
1066 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_plogi() local
1071 if (!fc_rport_compatible_roles(lport, rdata)) { in fc_rport_enter_plogi()
1083 fp = fc_frame_alloc(lport, sizeof(struct fc_els_flogi)); in fc_rport_enter_plogi()
1089 rdata->e_d_tov = lport->e_d_tov; in fc_rport_enter_plogi()
1092 if (!lport->tt.elsct_send(lport, rdata->ids.port_id, fp, ELS_PLOGI, in fc_rport_enter_plogi()
1094 2 * lport->r_a_tov)) { in fc_rport_enter_plogi()
1233 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_prli() local
1256 if (!(lport->service_params & FCP_SPPF_INIT_FCN)) { in fc_rport_enter_prli()
1266 fp = fc_frame_alloc(lport, sizeof(*pp)); in fc_rport_enter_prli()
1272 fc_prli_fill(lport, fp); in fc_rport_enter_prli()
1281 fc_host_port_id(lport->host), FC_TYPE_ELS, in fc_rport_enter_prli()
1285 if (!fc_exch_seq_send(lport, fp, fc_rport_prli_resp, in fc_rport_enter_prli()
1286 NULL, rdata, 2 * lport->r_a_tov)) { in fc_rport_enter_prli()
1373 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_rtv() local
1382 fp = fc_frame_alloc(lport, sizeof(struct fc_els_rtv)); in fc_rport_enter_rtv()
1389 if (!lport->tt.elsct_send(lport, rdata->ids.port_id, fp, ELS_RTV, in fc_rport_enter_rtv()
1391 2 * lport->r_a_tov)) { in fc_rport_enter_rtv()
1405 struct fc_lport *lport = rdata->local_port; in fc_rport_recv_rtv_req() local
1411 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_rtv_req()
1415 fp = fc_frame_alloc(lport, sizeof(*rtv)); in fc_rport_recv_rtv_req()
1424 rtv->rtv_r_a_tov = htonl(lport->r_a_tov); in fc_rport_recv_rtv_req()
1425 rtv->rtv_e_d_tov = htonl(lport->e_d_tov); in fc_rport_recv_rtv_req()
1428 lport->tt.frame_send(lport, fp); in fc_rport_recv_rtv_req()
1443 struct fc_lport *lport = rdata->local_port; in fc_rport_logo_resp() local
1445 FC_RPORT_ID_DBG(lport, fc_seq_exch(sp)->did, in fc_rport_logo_resp()
1460 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_logo() local
1468 fp = fc_frame_alloc(lport, sizeof(struct fc_els_logo)); in fc_rport_enter_logo()
1472 if (!lport->tt.elsct_send(lport, rdata->ids.port_id, fp, ELS_LOGO, in fc_rport_enter_logo()
1547 struct fc_lport *lport = rdata->local_port; in fc_rport_enter_adisc() local
1557 fp = fc_frame_alloc(lport, sizeof(struct fc_els_adisc)); in fc_rport_enter_adisc()
1563 if (!lport->tt.elsct_send(lport, rdata->ids.port_id, fp, ELS_ADISC, in fc_rport_enter_adisc()
1565 2 * lport->r_a_tov)) { in fc_rport_enter_adisc()
1579 struct fc_lport *lport = rdata->local_port; in fc_rport_recv_adisc_req() local
1585 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_adisc_req()
1597 fp = fc_frame_alloc(lport, sizeof(*adisc)); in fc_rport_recv_adisc_req()
1600 fc_adisc_fill(lport, fp); in fc_rport_recv_adisc_req()
1604 lport->tt.frame_send(lport, fp); in fc_rport_recv_adisc_req()
1618 struct fc_lport *lport = rdata->local_port; in fc_rport_recv_rls_req() local
1638 fp = fc_frame_alloc(lport, sizeof(*rsp)); in fc_rport_recv_rls_req()
1649 if (lport->tt.get_lesb) { in fc_rport_recv_rls_req()
1651 lport->tt.get_lesb(lport, lesb); in fc_rport_recv_rls_req()
1653 fc_get_host_stats(lport->host); in fc_rport_recv_rls_req()
1654 hst = &lport->host_stats; in fc_rport_recv_rls_req()
1664 lport->tt.frame_send(lport, fp); in fc_rport_recv_rls_req()
1683 static void fc_rport_recv_els_req(struct fc_lport *lport, struct fc_frame *fp) in fc_rport_recv_els_req() argument
1688 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_els_req()
1690 rdata = fc_rport_lookup(lport, fc_frame_sid(fp)); in fc_rport_recv_els_req()
1692 FC_RPORT_ID_DBG(lport, fc_frame_sid(fp), in fc_rport_recv_els_req()
1780 void fc_rport_recv_req(struct fc_lport *lport, struct fc_frame *fp) in fc_rport_recv_req() argument
1784 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_req()
1794 fc_rport_recv_flogi_req(lport, fp); in fc_rport_recv_req()
1797 fc_rport_recv_plogi_req(lport, fp); in fc_rport_recv_req()
1800 fc_rport_recv_logo_req(lport, fp); in fc_rport_recv_req()
1809 fc_rport_recv_els_req(lport, fp); in fc_rport_recv_req()
1828 static void fc_rport_recv_plogi_req(struct fc_lport *lport, in fc_rport_recv_plogi_req() argument
1838 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_plogi_req()
1842 FC_RPORT_ID_DBG(lport, sid, "Received PLOGI request\n"); in fc_rport_recv_plogi_req()
1846 FC_RPORT_ID_DBG(lport, sid, "Received PLOGI too short\n"); in fc_rport_recv_plogi_req()
1852 disc = &lport->disc; in fc_rport_recv_plogi_req()
1854 rdata = fc_rport_create(lport, sid); in fc_rport_recv_plogi_req()
1888 if (rdata->ids.port_name < lport->wwpn) { in fc_rport_recv_plogi_req()
1912 if (!fc_rport_compatible_roles(lport, rdata)) { in fc_rport_recv_plogi_req()
1923 rdata->maxframe_size = fc_plogi_get_maxframe(pl, lport->mfs); in fc_rport_recv_plogi_req()
1928 fp = fc_frame_alloc(lport, sizeof(*pl)); in fc_rport_recv_plogi_req()
1932 fc_plogi_fill(lport, fp, ELS_LS_ACC); in fc_rport_recv_plogi_req()
1934 lport->tt.frame_send(lport, fp); in fc_rport_recv_plogi_req()
1954 struct fc_lport *lport = rdata->local_port; in fc_rport_recv_prli_req() local
1988 fp = fc_frame_alloc(lport, len); in fc_rport_recv_prli_req()
2049 lport->tt.frame_send(lport, fp); in fc_rport_recv_prli_req()
2070 struct fc_lport *lport = rdata->local_port; in fc_rport_recv_prlo_req() local
2099 fp = fc_frame_alloc(lport, len); in fc_rport_recv_prlo_req()
2120 lport->tt.frame_send(lport, fp); in fc_rport_recv_prlo_req()
2139 static void fc_rport_recv_logo_req(struct fc_lport *lport, struct fc_frame *fp) in fc_rport_recv_logo_req() argument
2144 lockdep_assert_held(&lport->lp_mutex); in fc_rport_recv_logo_req()
2150 rdata = fc_rport_lookup(lport, sid); in fc_rport_recv_logo_req()
2160 FC_RPORT_ID_DBG(lport, sid, in fc_rport_recv_logo_req()
2188 struct fc_lport *lport = rdata->local_port; in fc_rport_fcp_prli() local
2201 if (!(lport->service_params & FCP_SPPF_INIT_FCN)) in fc_rport_fcp_prli()
2210 spp->spp_params = htonl(fcp_parm | lport->service_params); in fc_rport_fcp_prli()
2273 struct fc_lport *lport = rpriv->local_port; in fc_rport_terminate_io() local
2275 lport->tt.exch_mgr_reset(lport, 0, rport->port_id); in fc_rport_terminate_io()
2276 lport->tt.exch_mgr_reset(lport, rport->port_id, 0); in fc_rport_terminate_io()