• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/scsi/bfa/

Lines Matching defs:vport

46 static void     bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport);
48 static void bfa_fcs_vport_do_logo(struct bfa_fcs_vport_s *vport);
49 static void bfa_fcs_vport_free(struct bfa_fcs_vport_s *vport);
59 BFA_FCS_VPORT_SM_CREATE = 1, /* vport create event */
60 BFA_FCS_VPORT_SM_DELETE = 2, /* vport delete event */
61 BFA_FCS_VPORT_SM_START = 3, /* vport start request */
74 static void bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport,
76 static void bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport,
78 static void bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport,
80 static void bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport,
82 static void bfa_fcs_vport_sm_fdisc_retry(struct bfa_fcs_vport_s *vport,
84 static void bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
86 static void bfa_fcs_vport_sm_deleting(struct bfa_fcs_vport_s *vport,
88 static void bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
90 static void bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport,
92 static void bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
112 bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport,
115 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
116 bfa_trc(__vport_fcs(vport), event);
120 bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
121 bfa_fcs_fabric_addvport(__vport_fabric(vport), vport);
125 bfa_sm_fault(__vport_fcs(vport), event);
133 bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport,
136 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
137 bfa_trc(__vport_fcs(vport), event);
141 if (bfa_fcs_fabric_is_online(__vport_fabric(vport))
142 && bfa_fcs_fabric_npiv_capable(__vport_fabric(vport))) {
143 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
144 bfa_fcs_vport_do_fdisc(vport);
150 vport->vport_stats.fab_no_npiv++;
151 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
156 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
157 bfa_fcs_port_delete(&vport->lport);
163 * Ignore ONLINE/OFFLINE events from fabric till vport is started.
168 bfa_sm_fault(__vport_fcs(vport), event);
176 bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport,
179 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
180 bfa_trc(__vport_fcs(vport), event);
184 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
185 bfa_fcs_port_delete(&vport->lport);
189 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
190 vport->fdisc_retries = 0;
191 bfa_fcs_vport_do_fdisc(vport);
196 * This can happen if the vport couldn't be initialzied due
198 * that case we will put the vport in offline state. However,
205 bfa_sm_fault(__vport_fcs(vport), event);
213 bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport,
216 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
217 bfa_trc(__vport_fcs(vport), event);
221 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
222 bfa_lps_discard(vport->lps);
223 bfa_fcs_port_delete(&vport->lport);
227 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
228 bfa_lps_discard(vport->lps);
232 bfa_sm_set_state(vport, bfa_fcs_vport_sm_online);
233 bfa_fcs_port_online(&vport->lport);
237 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc_retry);
238 bfa_timer_start(__vport_bfa(vport), &vport->timer,
239 bfa_fcs_vport_timeout, vport,
244 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
248 bfa_sm_set_state(vport, bfa_fcs_vport_sm_error);
252 bfa_sm_fault(__vport_fcs(vport), event);
260 bfa_fcs_vport_sm_fdisc_retry(struct bfa_fcs_vport_s *vport,
263 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
264 bfa_trc(__vport_fcs(vport), event);
268 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
269 bfa_timer_stop(&vport->timer);
270 bfa_fcs_port_delete(&vport->lport);
274 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
275 bfa_timer_stop(&vport->timer);
279 bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc);
280 vport->vport_stats.fdisc_retries++;
281 vport->fdisc_retries++;
282 bfa_fcs_vport_do_fdisc(vport);
286 bfa_sm_fault(__vport_fcs(vport), event);
294 bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
297 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
298 bfa_trc(__vport_fcs(vport), event);
302 bfa_sm_set_state(vport, bfa_fcs_vport_sm_deleting);
303 bfa_fcs_port_delete(&vport->lport);
307 bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
308 bfa_lps_discard(vport->lps);
309 bfa_fcs_port_offline(&vport->lport);
313 bfa_sm_fault(__vport_fcs(vport), event);
322 bfa_fcs_vport_sm_deleting(struct bfa_fcs_vport_s *vport,
325 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
326 bfa_trc(__vport_fcs(vport), event);
333 bfa_sm_set_state(vport, bfa_fcs_vport_sm_logo);
334 bfa_fcs_vport_do_logo(vport);
338 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
342 bfa_sm_fault(__vport_fcs(vport), event);
352 bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
355 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
356 bfa_trc(__vport_fcs(vport), event);
360 bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
361 bfa_fcs_port_delete(&vport->lport);
366 bfa_trc(__vport_fcs(vport), event);
371 * Lport cleanup is in progress since vport is being deleted. Fabric is
372 * offline, so no LOGO is needed to complete vport deletion.
375 bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
378 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
379 bfa_trc(__vport_fcs(vport), event);
383 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
384 bfa_fcs_vport_free(vport);
391 bfa_sm_fault(__vport_fcs(vport), event);
400 bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport,
403 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
404 bfa_trc(__vport_fcs(vport), event);
408 bfa_lps_discard(vport->lps);
415 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
416 bfa_fcs_vport_free(vport);
423 bfa_sm_fault(__vport_fcs(vport), event);
465 bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport)
467 bfa_lps_fdisc(vport->lps, vport,
468 bfa_fcport_get_maxfrsize(__vport_bfa(vport)),
469 __vport_pwwn(vport), __vport_nwwn(vport));
470 vport->vport_stats.fdisc_sent++;
474 bfa_fcs_vport_fdisc_rejected(struct bfa_fcs_vport_s *vport)
476 u8 lsrjt_rsn = bfa_lps_get_lsrjt_rsn(vport->lps);
477 u8 lsrjt_expl = bfa_lps_get_lsrjt_expl(vport->lps);
479 bfa_trc(__vport_fcs(vport), lsrjt_rsn);
480 bfa_trc(__vport_fcs(vport), lsrjt_expl);
485 switch (bfa_lps_get_lsrjt_expl(vport->lps)) {
488 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
489 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
491 bfa_fcs_vport_aen_post(&vport->lport,
493 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_DUP_WWN);
502 if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES)
503 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
505 bfa_fcs_vport_aen_post(&vport->lport,
507 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_FAILED);
512 if (vport->fdisc_retries == 0) /* Print only once */
513 bfa_fcs_vport_aen_post(&vport->lport,
515 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
524 bfa_fcs_vport_do_logo(struct bfa_fcs_vport_s *vport)
526 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
528 vport->vport_stats.logo_sent++;
529 bfa_lps_fdisclogo(vport->lps);
535 * param[in] vport - pointer to bfa_fcs_vport_t.
536 * param[out] vport_status - pointer to return vport status in
548 struct bfa_fcs_vport_s *vport = (struct bfa_fcs_vport_s *)vport_arg;
550 vport->vport_stats.fdisc_timeouts++;
551 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_TIMEOUT);
555 bfa_fcs_vport_free(struct bfa_fcs_vport_s *vport)
557 bfa_fcs_fabric_delvport(__vport_fabric(vport), vport);
558 bfa_fcb_vport_delete(vport->vport_drv);
559 bfa_lps_delete(vport->lps);
572 bfa_fcs_vport_online(struct bfa_fcs_vport_s *vport)
574 vport->vport_stats.fab_online++;
575 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_ONLINE);
582 bfa_fcs_vport_offline(struct bfa_fcs_vport_s *vport)
584 vport->vport_stats.fab_offline++;
585 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_OFFLINE);
592 bfa_fcs_vport_cleanup(struct bfa_fcs_vport_s *vport)
594 vport->vport_stats.fab_cleanup++;
601 bfa_fcs_vport_fcs_delete(struct bfa_fcs_vport_s *vport)
603 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELETE);
610 bfa_fcs_vport_delete_comp(struct bfa_fcs_vport_s *vport)
612 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELCOMP);
620 * Use this function to instantiate a new FCS vport object. This
624 * param[in] vport - pointer to bfa_fcs_vport_t. This space
627 * param[in] vport_cfg - vport configuration
628 * param[in] vf_id - VF_ID if vport is created within a VF.
630 * param[in] vport_drv - Opaque handle back to the driver's vport
637 bfa_fcs_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs,
654 vport->lps = bfa_lps_alloc(fcs->bfa);
655 if (!vport->lps)
658 vport->vport_drv = vport_drv;
660 bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit);
662 bfa_fcs_lport_attach(&vport->lport, fcs, vf_id, vport);
663 bfa_fcs_lport_init(&vport->lport, vport_cfg);
665 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_CREATE);
671 * Use this function to instantiate a new FCS PBC vport object. This
675 * param[in] vport - pointer to bfa_fcs_vport_t. This space
678 * param[in] vport_cfg - vport configuration
679 * param[in] vf_id - VF_ID if vport is created within a VF.
681 * param[in] vport_drv - Opaque handle back to the driver's vport
688 bfa_fcs_pbc_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs,
694 rc = bfa_fcs_vport_create(vport, fcs, vf_id, vport_cfg, vport_drv);
695 vport->lport.port_cfg.preboot_vp = BFA_TRUE;
701 * Use this function initialize the vport.
703 * @param[in] vport - pointer to bfa_fcs_vport_t.
708 bfa_fcs_vport_start(struct bfa_fcs_vport_s *vport)
710 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_START);
716 * Use this function quiese the vport object. This function will return
717 * immediately, when the vport is actually stopped, the
720 * param[in] vport - pointer to bfa_fcs_vport_t.
725 bfa_fcs_vport_stop(struct bfa_fcs_vport_s *vport)
727 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_STOP);
733 * Use this function to delete a vport object. Fabric object should
738 * param[in] vport - pointer to bfa_fcs_vport_t.
743 bfa_fcs_vport_delete(struct bfa_fcs_vport_s *vport)
745 if (vport->lport.port_cfg.preboot_vp)
748 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELETE);
754 * Use this function to get vport's current status info.
756 * param[in] vport pointer to bfa_fcs_vport_t.
757 * param[out] attr pointer to return vport attributes
762 bfa_fcs_vport_get_attr(struct bfa_fcs_vport_s *vport,
765 if (vport == NULL || attr == NULL)
770 bfa_fcs_port_get_attr(&vport->lport, &attr->port_attr);
771 attr->vport_state = bfa_sm_to_state(vport_sm_table, vport->sm);
775 * Use this function to get vport's statistics.
777 * param[in] vport pointer to bfa_fcs_vport_t.
778 * param[out] stats pointer to return vport statistics in
783 bfa_fcs_vport_get_stats(struct bfa_fcs_vport_s *vport,
786 *stats = vport->vport_stats;
790 * Use this function to clear vport's statistics.
792 * param[in] vport pointer to bfa_fcs_vport_t.
797 bfa_fcs_vport_clr_stats(struct bfa_fcs_vport_s *vport)
799 bfa_os_memset(&vport->vport_stats, 0, sizeof(struct bfa_vport_stats_s));
808 struct bfa_fcs_vport_s *vport;
820 vport = bfa_fcs_fabric_vport_lookup(fabric, vpwwn);
821 return vport;
830 struct bfa_fcs_vport_s *vport = uarg;
832 bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
833 bfa_trc(__vport_fcs(vport), status);
840 __vport_fcid(vport) = bfa_lps_get_pid(vport->lps);
841 vport->vport_stats.fdisc_accepts++;
842 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK);
849 vport->vport_stats.fdisc_acc_bad++;
850 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
855 switch (bfa_lps_get_extstatus(vport->lps)) {
857 vport->vport_stats.fdisc_acc_bad++;
861 vport->vport_stats.fdisc_unknown_rsp++;
868 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
872 vport->vport_stats.fdisc_rejects++;
873 bfa_fcs_vport_fdisc_rejected(vport);
877 vport->vport_stats.fdisc_rsp_err++;
878 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_ERROR);
888 struct bfa_fcs_vport_s *vport = uarg;
889 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK);
898 struct bfa_fcs_vport_s *vport = uarg;
901 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_OFFLINE);
902 bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_ONLINE);