Lines Matching refs:vport

165 		/* If vport - send completion call back */
166 if (port->vport)
167 bfa_fcs_vport_stop_comp(port->vport);
202 /* If vport - send completion call back */
203 if (port->vport)
204 bfa_fcs_vport_stop_comp(port->vport);
260 /* If vport - send completion call back */
261 if (port->vport)
262 bfa_fcs_vport_stop_comp(port->vport);
307 /* If vport - send completion call back */
308 if (port->vport)
309 bfa_fcs_vport_stop_comp(port->vport);
754 if (port->vport)
755 bfa_fcs_vport_delete_comp(port->vport);
1017 * Called by vport for virtual ports when FDISC is complete.
1027 * Called by vport for virtual ports when virtual port becomes offline.
1036 * Called by fabric for base port and by vport for virtual ports
1048 * Called by vport to delete lport and associated resources. Should call
1071 u16 vf_id, struct bfa_fcs_vport_s *vport)
1075 lport->vport = vport;
1076 lport->lp_tag = (vport) ? vport->lps->bfa_tag :
1085 * Called by fabric for base port or by vport for virtual ports.
1092 struct bfa_fcs_vport_s *vport = lport->vport;
1101 vport ? vport->vport_drv : NULL);
1152 if (port->vport != NULL) {
1155 port->vport->lps->lp_mac;
1486 if (port->vport) {
2964 if (ms->port->vport) {
4652 if (port->vport) {
4654 * For Vports, we append the vport's port symbolic name
5035 struct bfa_fcs_vport_s *vport;
5053 * Ignore PID if it is of vport created on the same base port
5054 * (Avoid vport discovering every other vport created on the
5058 vport = (struct bfa_fcs_vport_s *) qe;
5059 if (vport->lport.pid == gidft_entry->pid)
5189 if (port->vport) {
5191 * For Vports, we append the vport's port symbolic name
5401 if ((!port->vport) && bfa_ioc_get_fcmode(&port->fcs->bfa->ioc)) {
5493 * param[in] vport - pointer to bfa_fcs_lport_t.
5494 * param[out] vport_status - pointer to return vport status in
5552 struct bfa_fcs_vport_s *vport;
5566 vport = (struct bfa_fcs_vport_s *) qe;
5567 if (vport->lport.pid == rpid)
5878 struct bfa_fcs_vport_s *vport;
5892 vport = bfa_fcs_fabric_vport_lookup(vf, lpwwn);
5893 if (vport)
5894 return &vport->lport;
5909 if (port->vport == NULL) {
5985 static void bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport);
5987 static void bfa_fcs_vport_do_logo(struct bfa_fcs_vport_s *vport);
5988 static void bfa_fcs_vport_free(struct bfa_fcs_vport_s *vport);
5998 BFA_FCS_VPORT_SM_CREATE = 1, /* vport create event */
5999 BFA_FCS_VPORT_SM_DELETE = 2, /* vport delete event */
6000 BFA_FCS_VPORT_SM_START = 3, /* vport start request */
6011 BFA_FCS_VPORT_SM_STOPCOMP = 14, /* vport delete completion */
6015 static void bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport,
6017 static void bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport,
6019 static void bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport,
6021 static void bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport,
6023 static void bfa_fcs_vport_sm_fdisc_retry(struct bfa_fcs_vport_s *vport,
6025 static void bfa_fcs_vport_sm_fdisc_rsp_wait(struct bfa_fcs_vport_s *vport,
6027 static void bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
6029 static void bfa_fcs_vport_sm_deleting(struct bfa_fcs_vport_s *vport,
6031 static void bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
6033 static void bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport,
6035 static void bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
6037 static void bfa_fcs_vport_sm_stopping(struct bfa_fcs_vport_s *vport,
6039 static void bfa_fcs_vport_sm_logo_for_stop(struct bfa_fcs_vport_s *vport,
6060 bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport,
6063 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6064 bfa_trc(__vport_fcs(vport), event);
6068 bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
6069 bfa_fcs_fabric_addvport(__vport_fabric(vport), vport);
6073 bfa_sm_fault(__vport_fcs(vport), event);
6081 bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport,
6084 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6085 bfa_trc(__vport_fcs(vport), event);
6089 if (bfa_sm_cmp_state(__vport_fabric(vport),
6091 && bfa_fcs_fabric_npiv_capable(__vport_fabric(vport))) {
6092 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
6093 bfa_fcs_vport_do_fdisc(vport);
6099 vport->vport_stats.fab_no_npiv++;
6100 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
6105 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6106 bfa_fcs_lport_delete(&vport->lport);
6113 * till vport is started.
6118 bfa_sm_fault(__vport_fcs(vport), event);
6126 bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport,
6129 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6130 bfa_trc(__vport_fcs(vport), event);
6134 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6135 bfa_fcs_lport_delete(&vport->lport);
6139 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
6140 vport->fdisc_retries = 0;
6141 bfa_fcs_vport_do_fdisc(vport);
6145 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6146 bfa_sm_send_event(&vport->lport, BFA_FCS_PORT_SM_STOP);
6151 * This can happen if the vport couldn't be initialzied
6153 * In that case we will put the vport in offline state.
6160 bfa_sm_fault(__vport_fcs(vport), event);
6169 bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport,
6172 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6173 bfa_trc(__vport_fcs(vport), event);
6177 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc_rsp_wait);
6181 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
6182 bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
6186 bfa_sm_set_state(vport, bfa_fcs_vport_sm_online);
6187 bfa_fcs_lport_online(&vport->lport);
6191 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc_retry);
6192 bfa_timer_start(__vport_bfa(vport), &vport->timer,
6193 bfa_fcs_vport_timeout, vport,
6199 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
6203 bfa_sm_set_state(vport, bfa_fcs_vport_sm_error);
6207 bfa_sm_fault(__vport_fcs(vport), event);
6215 bfa_fcs_vport_sm_fdisc_retry(struct bfa_fcs_vport_s *vport,
6218 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6219 bfa_trc(__vport_fcs(vport), event);
6223 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6224 bfa_timer_stop(&vport->timer);
6225 bfa_fcs_lport_delete(&vport->lport);
6229 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
6230 bfa_timer_stop(&vport->timer);
6234 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
6235 vport->vport_stats.fdisc_retries++;
6236 vport->fdisc_retries++;
6237 bfa_fcs_vport_do_fdisc(vport);
6241 bfa_sm_fault(__vport_fcs(vport), event);
6246 * FDISC is in progress and we got a vport delete request -
6251 bfa_fcs_vport_sm_fdisc_rsp_wait(struct bfa_fcs_vport_s *vport,
6254 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6255 bfa_trc(__vport_fcs(vport), event);
6259 bfa_sm_set_state(vport, bfa_fcs_vport_sm_deleting);
6260 bfa_fcs_lport_delete(&vport->lport);
6271 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6272 bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
6273 bfa_fcs_lport_delete(&vport->lport);
6277 bfa_sm_fault(__vport_fcs(vport), event);
6285 bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
6288 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6289 bfa_trc(__vport_fcs(vport), event);
6293 bfa_sm_set_state(vport, bfa_fcs_vport_sm_deleting);
6294 bfa_fcs_lport_delete(&vport->lport);
6298 bfa_sm_set_state(vport, bfa_fcs_vport_sm_stopping);
6299 bfa_sm_send_event(&vport->lport, BFA_FCS_PORT_SM_STOP);
6303 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
6304 bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
6305 bfa_fcs_lport_offline(&vport->lport);
6309 bfa_sm_fault(__vport_fcs(vport), event);
6318 bfa_fcs_vport_sm_stopping(struct bfa_fcs_vport_s *vport,
6321 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6322 bfa_trc(__vport_fcs(vport), event);
6326 bfa_sm_set_state(vport, bfa_fcs_vport_sm_logo_for_stop);
6327 bfa_fcs_vport_do_logo(vport);
6331 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6335 bfa_sm_fault(__vport_fcs(vport), event);
6344 bfa_fcs_vport_sm_deleting(struct bfa_fcs_vport_s *vport,
6347 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6348 bfa_trc(__vport_fcs(vport), event);
6355 bfa_sm_set_state(vport, bfa_fcs_vport_sm_logo);
6356 bfa_fcs_vport_do_logo(vport);
6360 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6364 bfa_sm_fault(__vport_fcs(vport), event);
6375 bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
6378 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6379 bfa_trc(__vport_fcs(vport), event);
6383 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
6384 bfa_fcs_lport_delete(&vport->lport);
6388 bfa_trc(__vport_fcs(vport), event);
6393 * Lport cleanup is in progress since vport is being deleted. Fabric is
6394 * offline, so no LOGO is needed to complete vport deletion.
6397 bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
6400 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6401 bfa_trc(__vport_fcs(vport), event);
6405 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
6406 bfa_fcs_vport_free(vport);
6410 bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
6417 bfa_sm_fault(__vport_fcs(vport), event);
6426 bfa_fcs_vport_sm_logo_for_stop(struct bfa_fcs_vport_s *vport,
6429 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6430 bfa_trc(__vport_fcs(vport), event);
6434 bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
6441 bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
6445 bfa_sm_fault(__vport_fcs(vport), event);
6454 bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport,
6457 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6458 bfa_trc(__vport_fcs(vport), event);
6462 bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
6469 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
6470 bfa_fcs_vport_free(vport);
6477 bfa_sm_fault(__vport_fcs(vport), event);
6515 bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport)
6517 bfa_lps_fdisc(vport->lps, vport,
6518 bfa_fcport_get_maxfrsize(__vport_bfa(vport)),
6519 __vport_pwwn(vport), __vport_nwwn(vport));
6520 vport->vport_stats.fdisc_sent++;
6524 bfa_fcs_vport_fdisc_rejected(struct bfa_fcs_vport_s *vport)
6526 u8 lsrjt_rsn = vport->lps->lsrjt_rsn;
6527 u8 lsrjt_expl = vport->lps->lsrjt_expl;
6529 bfa_trc(__vport_fcs(vport), lsrjt_rsn);
6530 bfa_trc(__vport_fcs(vport), lsrjt_expl);
6533 switch (vport->lps->lsrjt_expl) {
6536 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
6537 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6539 bfa_fcs_vport_aen_post(&vport->lport,
6541 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_DUP_WWN);
6550 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
6551 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6553 bfa_fcs_vport_aen_post(&vport->lport,
6555 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_FABRIC_MAX);
6560 if (vport->fdisc_retries == 0)
6561 bfa_fcs_vport_aen_post(&vport->lport,
6563 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6572 bfa_fcs_vport_do_logo(struct bfa_fcs_vport_s *vport)
6574 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6576 vport->vport_stats.logo_sent++;
6577 bfa_lps_fdisclogo(vport->lps);
6584 * param[in] vport - pointer to bfa_fcs_vport_t.
6585 * param[out] vport_status - pointer to return vport status in
6597 struct bfa_fcs_vport_s *vport = (struct bfa_fcs_vport_s *) vport_arg;
6599 vport->vport_stats.fdisc_timeouts++;
6600 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_TIMEOUT);
6604 bfa_fcs_vport_free(struct bfa_fcs_vport_s *vport)
6607 (struct bfad_vport_s *)vport->vport_drv;
6609 bfa_fcs_fabric_delvport(__vport_fabric(vport), vport);
6610 bfa_lps_delete(vport->lps);
6618 * We queue the vport delete work to the IM work_q from here.
6633 bfa_fcs_vport_online(struct bfa_fcs_vport_s *vport)
6635 vport->vport_stats.fab_online++;
6636 if (bfa_fcs_fabric_npiv_capable(__vport_fabric(vport)))
6637 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_ONLINE);
6639 vport->vport_stats.fab_no_npiv++;
6646 bfa_fcs_vport_offline(struct bfa_fcs_vport_s *vport)
6648 vport->vport_stats.fab_offline++;
6649 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_OFFLINE);
6656 bfa_fcs_vport_cleanup(struct bfa_fcs_vport_s *vport)
6658 vport->vport_stats.fab_cleanup++;
6665 bfa_fcs_vport_fcs_stop(struct bfa_fcs_vport_s *vport)
6667 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_STOP);
6674 bfa_fcs_vport_fcs_delete(struct bfa_fcs_vport_s *vport)
6676 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELETE);
6683 bfa_fcs_vport_stop_comp(struct bfa_fcs_vport_s *vport)
6685 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_STOPCOMP);
6692 bfa_fcs_vport_delete_comp(struct bfa_fcs_vport_s *vport)
6694 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELCOMP);
6704 * Use this function to instantiate a new FCS vport object. This
6708 * param[in] vport - pointer to bfa_fcs_vport_t. This space
6711 * param[in] vport_cfg - vport configuration
6712 * param[in] vf_id - VF_ID if vport is created within a VF.
6714 * param[in] vport_drv - Opaque handle back to the driver's vport
6721 bfa_fcs_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs,
6738 vport->lps = bfa_lps_alloc(fcs->bfa);
6739 if (!vport->lps)
6742 vport->vport_drv = vport_drv;
6745 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
6746 bfa_fcs_lport_attach(&vport->lport, fcs, vf_id, vport);
6747 bfa_fcs_lport_init(&vport->lport, vport_cfg);
6748 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_CREATE);
6754 * Use this function to instantiate a new FCS PBC vport object. This
6758 * param[in] vport - pointer to bfa_fcs_vport_t. This space
6761 * param[in] vport_cfg - vport configuration
6762 * param[in] vf_id - VF_ID if vport is created within a VF.
6764 * param[in] vport_drv - Opaque handle back to the driver's vport
6771 bfa_fcs_pbc_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs,
6777 rc = bfa_fcs_vport_create(vport, fcs, vf_id, vport_cfg, vport_drv);
6778 vport->lport.port_cfg.preboot_vp = BFA_TRUE;
6784 * Use this function to findout if this is a pbc vport or not.
6786 * @param[in] vport - pointer to bfa_fcs_vport_t.
6791 bfa_fcs_is_pbc_vport(struct bfa_fcs_vport_s *vport)
6794 if (vport && (vport->lport.port_cfg.preboot_vp == BFA_TRUE))
6802 * Use this function initialize the vport.
6804 * @param[in] vport - pointer to bfa_fcs_vport_t.
6809 bfa_fcs_vport_start(struct bfa_fcs_vport_s *vport)
6811 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_START);
6817 * Use this function quiese the vport object. This function will return
6818 * immediately, when the vport is actually stopped, the
6821 * param[in] vport - pointer to bfa_fcs_vport_t.
6826 bfa_fcs_vport_stop(struct bfa_fcs_vport_s *vport)
6828 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_STOP);
6834 * Use this function to delete a vport object. Fabric object should
6839 * param[in] vport - pointer to bfa_fcs_vport_t.
6844 bfa_fcs_vport_delete(struct bfa_fcs_vport_s *vport)
6847 if (vport->lport.port_cfg.preboot_vp)
6850 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELETE);
6856 * Use this function to get vport's current status info.
6858 * param[in] vport pointer to bfa_fcs_vport_t.
6859 * param[out] attr pointer to return vport attributes
6864 bfa_fcs_vport_get_attr(struct bfa_fcs_vport_s *vport,
6867 if (vport == NULL || attr == NULL)
6872 bfa_fcs_lport_get_attr(&vport->lport, &attr->port_attr);
6873 attr->vport_state = bfa_sm_to_state(vport_sm_table, vport->sm);
6883 struct bfa_fcs_vport_s *vport;
6895 vport = bfa_fcs_fabric_vport_lookup(fabric, vpwwn);
6896 return vport;
6905 struct bfa_fcs_vport_s *vport = uarg;
6907 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
6908 bfa_trc(__vport_fcs(vport), status);
6915 __vport_fcid(vport) = vport->lps->lp_pid;
6916 vport->vport_stats.fdisc_accepts++;
6917 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK);
6922 vport->vport_stats.fdisc_acc_bad++;
6923 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6928 switch (vport->lps->ext_status) {
6930 vport->vport_stats.fdisc_acc_bad++;
6934 vport->vport_stats.fdisc_unknown_rsp++;
6941 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
6942 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6944 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED);
6949 vport->vport_stats.fdisc_timeouts++;
6950 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
6951 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6953 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED);
6957 vport->vport_stats.fdisc_rejects++;
6958 bfa_fcs_vport_fdisc_rejected(vport);
6962 vport->vport_stats.fdisc_rsp_err++;
6963 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
6973 struct bfa_fcs_vport_s *vport = uarg;
6974 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK);
6983 struct bfa_fcs_vport_s *vport = uarg;
6986 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_OFFLINE);
6987 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_ONLINE);