Lines Matching refs:vswp

88 void vsw_hio_init(vsw_t *vswp);
89 void vsw_hio_cleanup(vsw_t *vswp);
90 void vsw_hio_start(vsw_t *vswp, vsw_ldc_t *ldcp);
91 void vsw_hio_stop(vsw_t *vswp, vsw_ldc_t *ldcp);
92 void vsw_process_dds_msg(vsw_t *vswp, vsw_ldc_t *ldcp, void *msg);
93 void vsw_hio_start_ports(vsw_t *vswp);
97 static void vsw_hio_free_all_shares(vsw_t *vswp, boolean_t reboot);
98 static vsw_share_t *vsw_hio_alloc_share(vsw_t *vswp, vsw_ldc_t *ldcp);
100 static vsw_share_t *vsw_hio_find_free_share(vsw_t *vswp);
101 static vsw_share_t *vsw_hio_find_vshare_ldcid(vsw_t *vswp, uint64_t ldc_id);
102 static vsw_share_t *vsw_hio_find_vshare_port(vsw_t *vswp, vsw_port_t *portp);
114 * the global lock('vswp>mac_lock') is used for all Shares
125 static kstat_t *vsw_hio_setup_kstats(char *ks_mod, char *ks_name, vsw_t *vswp);
126 static void vsw_hio_destroy_kstats(vsw_t *vswp);
135 vsw_hio_init(vsw_t *vswp)
137 vsw_hio_t *hiop = &vswp->vhio;
141 ASSERT(MUTEX_HELD(&vswp->mac_lock));
142 D1(vswp, "%s:enter\n", __func__);
147 vswp->hio_capable = B_FALSE;
148 num_shares = mac_share_capable(vswp->mh);
150 D2(vswp, "%s: %s is not HybridIO capable\n", __func__,
151 vswp->physname);
160 hiop->vh_shares[i].vs_vswp = vswp;
162 vswp->hio_capable = B_TRUE;
168 vswp->hio_reboot_cb_id = callb_add(vsw_hio_reboot_callb,
169 (void *)vswp, CB_CL_MDBOOT, "vsw_hio");
171 vswp->hio_panic_cb_id = callb_add(vsw_hio_panic_callb,
172 (void *)vswp, CB_CL_PANIC, "vsw_hio");
175 hiop->vh_ksp = vsw_hio_setup_kstats(DRV_NAME, "hio", vswp);
177 DERR(vswp, "%s: kstats setup failed", __func__);
180 D2(vswp, "%s: %s is HybridIO capable num_shares=%d\n", __func__,
181 vswp->physname, hiop->vh_num_shares);
182 D1(vswp, "%s:exit\n", __func__);
191 vsw_hio_alloc_share(vsw_t *vswp, vsw_ldc_t *ldcp)
198 D1(vswp, "%s:enter\n", __func__);
199 vsharep = vsw_hio_find_free_share(vswp);
219 D1(vswp, "%s:exit\n", __func__);
227 vsw_hio_find_free_share(vsw_t *vswp)
229 vsw_hio_t *hiop = &vswp->vhio;
233 D1(vswp, "%s:enter\n", __func__);
237 D1(vswp, "%s:Returning free share(%d)\n",
242 D1(vswp, "%s:no free share\n", __func__);
251 vsw_hio_find_vshare_ldcid(vsw_t *vswp, uint64_t ldc_id)
253 vsw_hio_t *hiop = &vswp->vhio;
257 D1(vswp, "%s:enter, ldc=0x%lx", __func__, ldc_id);
264 D1(vswp, "%s:returning share(%d)",
269 D1(vswp, "%s:returning NULL", __func__);
278 vsw_hio_find_vshare_port(vsw_t *vswp, vsw_port_t *portp)
280 vsw_hio_t *hiop = &vswp->vhio;
284 D1(vswp, "%s:enter, portp=0x%p", __func__, portp);
291 D1(vswp, "%s:returning share(%d)",
296 D1(vswp, "%s:returning NULL", __func__);
306 vsw_t *vswp = vsharep->vs_vswp;
309 D1(vswp, "%s:enter\n", __func__);
319 DERR(vswp, "Share freed for ldc_id=0x%lx Cookie=0x%lX",
321 D1(vswp, "%s:exit\n", __func__);
330 vsw_hio_cleanup(vsw_t *vswp)
332 D1(vswp, "%s:enter\n", __func__);
335 if (vswp->hio_reboot_cb_id) {
336 (void) callb_delete(vswp->hio_reboot_cb_id);
337 vswp->hio_reboot_cb_id = 0;
339 if (vswp->hio_panic_cb_id) {
340 (void) callb_delete(vswp->hio_panic_cb_id);
341 vswp->hio_panic_cb_id = 0;
343 vsw_hio_free_all_shares(vswp, B_FALSE);
344 vsw_hio_destroy_kstats(vswp);
345 D1(vswp, "%s:exit\n", __func__);
363 vsw_hio_free_all_shares(vsw_t *vswp, boolean_t reboot)
365 vsw_hio_t *hiop = &vswp->vhio;
366 vsw_port_list_t *plist = &vswp->plist;
372 D1(vswp, "%s:enter\n", __func__);
380 mutex_enter(&vswp->mac_lock);
385 vswp->hio_capable = B_FALSE;
404 D1(vswp, "%s:sending DEL_SHARE msg for "
423 DWARN(vswp, "%s:All retries failed, "
440 mutex_exit(&vswp->mac_lock);
442 mutex_enter(&vswp->mac_lock);
450 "could not be freed", vswp->instance);
457 mutex_exit(&vswp->mac_lock);
459 D1(vswp, "%s:exit\n", __func__);
467 vsw_hio_start_ports(vsw_t *vswp)
469 vsw_port_list_t *plist = &vswp->plist;
474 if (vswp->hio_capable == B_FALSE) {
485 mutex_enter(&vswp->mac_lock);
486 vsharep = vsw_hio_find_vshare_port(vswp, portp);
490 mutex_exit(&vswp->mac_lock);
504 vsw_hio_start(vsw_t *vswp, vsw_ldc_t *ldcp)
510 D1(vswp, "%s:enter ldc=0x%lx", __func__, ldcp->ldc_id);
511 mutex_enter(&vswp->mac_lock);
512 if (vswp->hio_capable == B_FALSE) {
513 mutex_exit(&vswp->mac_lock);
514 D2(vswp, "%s:not HIO capable", __func__);
519 vsharep = vsw_hio_find_vshare_ldcid(vswp, ldcp->ldc_id);
521 mutex_exit(&vswp->mac_lock);
522 D2(vswp, "%s:Share already allocated to ldc=0x%lx",
526 vsharep = vsw_hio_alloc_share(vswp, ldcp);
528 mutex_exit(&vswp->mac_lock);
529 D2(vswp, "%s: no Share available for ldc=0x%lx",
541 mutex_exit(&vswp->mac_lock);
546 mutex_exit(&vswp->mac_lock);
549 DERR(vswp, "Share allocated for ldc_id=0x%lx Cookie=0x%lX",
552 D1(vswp, "%s:exit ldc=0x%lx", __func__, ldcp->ldc_id);
559 vsw_hio_stop(vsw_t *vswp, vsw_ldc_t *ldcp)
563 D1(vswp, "%s:enter ldc=0x%lx", __func__, ldcp->ldc_id);
565 mutex_enter(&vswp->mac_lock);
566 vsharep = vsw_hio_find_vshare_ldcid(vswp, ldcp->ldc_id);
568 D1(vswp, "%s:no share found for ldc=0x%lx",
570 mutex_exit(&vswp->mac_lock);
574 mutex_exit(&vswp->mac_lock);
576 D1(vswp, "%s:exit ldc=0x%lx", __func__, ldcp->ldc_id);
585 vsw_t *vswp = vsharep->vs_vswp;
593 ASSERT(MUTEX_HELD(&vswp->mac_lock));
594 mutex_exit(&vswp->mac_lock);
598 mutex_enter(&vswp->mac_lock);
604 mutex_enter(&vswp->mac_lock);
611 mutex_enter(&vswp->mac_lock);
626 vsw_t *vswp = ldcp->ldc_port->p_vswp;
631 D1(vswp, "%s:enter\n", __func__);
642 D1(vswp, "%s:exit rv=%d\n", __func__, rv);
650 vsw_process_dds_msg(vsw_t *vswp, vsw_ldc_t *ldcp, void *msg)
655 D1(vswp, "%s:enter ldc=0x%lx\n", __func__, ldcp->ldc_id);
660 mutex_enter(&vswp->mac_lock);
665 vsharep = vsw_hio_find_vshare_ldcid(vswp, ldcp->ldc_id);
667 mutex_exit(&vswp->mac_lock);
674 D1(vswp, "%s:DDS_VNET_ADD_SHARE\n", __func__);
676 DWARN(vswp, "%s: invalid ADD_SHARE response message "
682 DWARN(vswp, "%s: invalid req_id in ADD_SHARE response"
689 DWARN(vswp, "%s: NACK received for ADD_SHARE"
694 D2(vswp, "%s: ACK received for ADD_SHARE", __func__);
702 D1(vswp, "%s:DDS_VNET_DEL_SHARE\n", __func__);
704 DWARN(vswp, "%s: invalid DEL_SHARE response message "
710 DWARN(vswp, "%s: invalid req_id in DEL_SHARE response"
716 DWARN(vswp, "%s: NACK received for DEL_SHARE",
726 D1(vswp, "%s:DDS_VNET_REL_SHARE\n", __func__);
732 DERR(vswp, "%s: Invalid DDS message type=0x%X",
736 mutex_exit(&vswp->mac_lock);
737 D1(vswp, "%s:exit ldc=0x%lx\n", __func__, ldcp->ldc_id);
746 vsw_t *vswp = ldcp->ldc_port->p_vswp;
749 D1(vswp, "%s:enter\n", __func__);
758 D1(vswp, "%s:exit rv=%d\n", __func__, rv);
796 vsw_t *vswp = portp->p_vswp;
800 D1(vswp, "%s:enter\n", __func__);
801 mutex_enter(&vswp->mac_lock);
803 if (vswp->hio_capable == B_FALSE) {
804 mutex_exit(&vswp->mac_lock);
808 vsharep = vsw_hio_find_vshare_port(vswp, portp);
810 mutex_exit(&vswp->mac_lock);
819 D1(vswp, "%s:sending DEL_SHARE msg for "
832 DWARN(vswp, "%s:All retries failed, "
849 mutex_exit(&vswp->mac_lock);
851 mutex_enter(&vswp->mac_lock);
861 mutex_exit(&vswp->mac_lock);
862 D1(vswp, "%s:exit\n", __func__);
871 vsw_hio_reset_all(vsw_t *vswp)
873 vsw_hio_t *hiop = &vswp->vhio;
877 D1(vswp, "%s:enter\n", __func__);
879 if (vswp->hio_capable != B_TRUE)
893 D1(vswp, "%s:exit\n", __func__);
904 vsw_t *vswp = arg;
906 D1(vswp, "%s:enter\n", __func__);
907 vsw_hio_free_all_shares(vswp, B_TRUE);
908 D1(vswp, "%s:exit\n", __func__);
921 vsw_t *vswp = arg;
923 D1(vswp, "%s:enter\n", __func__);
924 vsw_hio_reset_all(vswp);
925 D1(vswp, "%s:exit\n", __func__);
933 vsw_hio_setup_kstats(char *ks_mod, char *ks_name, vsw_t *vswp)
942 hiop = &vswp->vhio;
952 ksp = kstat_create(ks_mod, vswp->instance, ks_name, "misc",
982 ksp->ks_private = (void *)vswp;
991 vsw_hio_destroy_kstats(vsw_t *vswp)
996 ASSERT(vswp != NULL);
998 ksp = vswp->vhio.vh_ksp;
999 hiop = &vswp->vhio;
1015 vsw_t *vswp;
1020 vswp = (vsw_t *)ksp->ks_private;
1021 ASSERT(vswp != NULL);
1023 hiop = &vswp->vhio;
1027 if (vswp->hio_capable) {
1035 mutex_enter(&vswp->mac_lock);
1043 mutex_exit(&vswp->mac_lock);