Lines Matching refs:vswp

74 int vsw_setup_switching_start(vsw_t *vswp);
75 void vsw_setup_switching_stop(vsw_t *vswp);
77 void vsw_setup_switching_post_process(vsw_t *vswp);
78 void vsw_switch_frame_nop(vsw_t *vswp, mblk_t *mp, int caller,
84 static void vsw_switch_l2_frame_mac_client(vsw_t *vswp, mblk_t *mp, int caller,
86 static void vsw_switch_l2_frame(vsw_t *vswp, mblk_t *mp, int caller,
88 static void vsw_switch_l3_frame(vsw_t *vswp, mblk_t *mp, int caller,
90 static int vsw_forward_all(vsw_t *vswp, mblk_t *mp,
92 static int vsw_forward_grp(vsw_t *vswp, mblk_t *mp,
109 void vsw_fdbe_add(vsw_t *vswp, void *port);
110 void vsw_fdbe_del(vsw_t *vswp, struct ether_addr *eaddr);
111 static vsw_fdbe_t *vsw_fdbe_find(vsw_t *vswp, struct ether_addr *);
129 extern int vsw_mac_open(vsw_t *vswp);
130 extern void vsw_mac_close(vsw_t *vswp);
131 extern void vsw_mac_rx(vsw_t *vswp, mac_resource_handle_t mrh,
133 extern void vsw_set_addrs(vsw_t *vswp);
135 extern void vsw_hio_init(vsw_t *vswp);
136 extern void vsw_hio_start_ports(vsw_t *vswp);
137 extern int vsw_mac_multicast_add(vsw_t *vswp, vsw_port_t *port,
139 extern void vsw_mac_multicast_remove(vsw_t *vswp, vsw_port_t *port,
141 extern void vsw_mac_link_update(vsw_t *vswp, link_state_t link_state);
142 extern void vsw_physlink_update_ports(vsw_t *vswp);
175 vsw_t *vswp = (vsw_t *)arg; in vsw_setup_switching_thread() local
184 CALLB_CPR_INIT(&cprinfo, &vswp->sw_thr_lock, callb_generic_cpr, in vsw_setup_switching_thread()
187 mutex_enter(&vswp->sw_thr_lock); in vsw_setup_switching_thread()
189 while ((vswp->sw_thr_flags & VSW_SWTHR_STOP) == 0) { in vsw_setup_switching_thread()
195 while ((vswp->sw_thr_flags & VSW_SWTHR_STOP) == 0) { in vsw_setup_switching_thread()
196 wait_rv = cv_timedwait(&vswp->sw_thr_cv, in vsw_setup_switching_thread()
197 &vswp->sw_thr_lock, wait_time); in vsw_setup_switching_thread()
203 CALLB_CPR_SAFE_END(&cprinfo, &vswp->sw_thr_lock) in vsw_setup_switching_thread()
205 if ((vswp->sw_thr_flags & VSW_SWTHR_STOP) != 0) { in vsw_setup_switching_thread()
214 mutex_exit(&vswp->sw_thr_lock); in vsw_setup_switching_thread()
215 rv = vsw_setup_switching(vswp); in vsw_setup_switching_thread()
217 vsw_setup_switching_post_process(vswp); in vsw_setup_switching_thread()
219 mutex_enter(&vswp->sw_thr_lock); in vsw_setup_switching_thread()
226 vswp->sw_thr_flags &= ~VSW_SWTHR_STOP; in vsw_setup_switching_thread()
227 vswp->sw_thread = NULL; in vsw_setup_switching_thread()
237 vsw_setup_switching_start(vsw_t *vswp) in vsw_setup_switching_start() argument
239 mutex_enter(&vswp->sw_thr_lock); in vsw_setup_switching_start()
241 vswp->sw_thread = thread_create(NULL, 2 * DEFAULTSTKSZ, in vsw_setup_switching_start()
242 vsw_setup_switching_thread, vswp, 0, &p0, TS_RUN, minclsyspri); in vsw_setup_switching_start()
244 if (vswp->sw_thread == NULL) { in vsw_setup_switching_start()
245 mutex_exit(&vswp->sw_thr_lock); in vsw_setup_switching_start()
249 mutex_exit(&vswp->sw_thr_lock); in vsw_setup_switching_start()
257 vsw_setup_switching_stop(vsw_t *vswp) in vsw_setup_switching_stop() argument
264 mutex_enter(&vswp->sw_thr_lock); in vsw_setup_switching_stop()
266 if (vswp->sw_thread != NULL) { in vsw_setup_switching_stop()
267 tid = vswp->sw_thread->t_did; in vsw_setup_switching_stop()
268 vswp->sw_thr_flags |= VSW_SWTHR_STOP; in vsw_setup_switching_stop()
269 cv_signal(&vswp->sw_thr_cv); in vsw_setup_switching_stop()
272 mutex_exit(&vswp->sw_thr_lock); in vsw_setup_switching_stop()
277 (void) atomic_swap_32(&vswp->switching_setup_done, B_FALSE); in vsw_setup_switching_stop()
279 vswp->mac_open_retries = 0; in vsw_setup_switching_stop()
290 vsw_setup_switching(vsw_t *vswp) in vsw_setup_switching() argument
294 D1(vswp, "%s: enter", __func__); in vsw_setup_switching()
304 if (vswp->smode & VSW_LAYER2) { in vsw_setup_switching()
305 rv = vsw_setup_layer2(vswp); in vsw_setup_switching()
306 } else if (vswp->smode & VSW_LAYER3) { in vsw_setup_switching()
307 rv = vsw_setup_layer3(vswp); in vsw_setup_switching()
309 DERR(vswp, "unknown switch mode"); in vsw_setup_switching()
315 "switching mode", vswp->instance); in vsw_setup_switching()
317 (void) atomic_swap_32(&vswp->switching_setup_done, B_TRUE); in vsw_setup_switching()
320 D2(vswp, "%s: Operating in mode %d", __func__, in vsw_setup_switching()
321 vswp->smode); in vsw_setup_switching()
323 D1(vswp, "%s: exit", __func__); in vsw_setup_switching()
337 vsw_setup_layer2(vsw_t *vswp) in vsw_setup_layer2() argument
341 D1(vswp, "%s: enter", __func__); in vsw_setup_layer2()
347 vswp->vsw_switch_frame = vsw_switch_l2_frame; in vsw_setup_layer2()
348 vswp->mac_cl_switching = B_FALSE; in vsw_setup_layer2()
350 rv = strlen(vswp->physname); in vsw_setup_layer2()
357 vswp->instance); in vsw_setup_layer2()
361 mutex_enter(&vswp->mac_lock); in vsw_setup_layer2()
363 rv = vsw_mac_open(vswp); in vsw_setup_layer2()
367 "device: %s\n", vswp->instance, vswp->physname); in vsw_setup_layer2()
369 mutex_exit(&vswp->mac_lock); in vsw_setup_layer2()
378 vswp->vsw_switch_frame = vsw_switch_l2_frame_mac_client; in vsw_setup_layer2()
379 vswp->mac_cl_switching = B_TRUE; in vsw_setup_layer2()
381 D1(vswp, "%s: exit", __func__); in vsw_setup_layer2()
384 vsw_hio_init(vswp); in vsw_setup_layer2()
386 mutex_exit(&vswp->mac_lock); in vsw_setup_layer2()
390 vsw_mac_close(vswp); in vsw_setup_layer2()
391 mutex_exit(&vswp->mac_lock); in vsw_setup_layer2()
396 vsw_setup_layer3(vsw_t *vswp) in vsw_setup_layer3() argument
398 D1(vswp, "%s: enter", __func__); in vsw_setup_layer3()
400 D2(vswp, "%s: operating in layer 3 mode", __func__); in vsw_setup_layer3()
401 vswp->vsw_switch_frame = vsw_switch_l3_frame; in vsw_setup_layer3()
403 D1(vswp, "%s: exit", __func__); in vsw_setup_layer3()
410 vsw_switch_frame_nop(vsw_t *vswp, mblk_t *mp, int caller, vsw_port_t *port, in vsw_switch_frame_nop() argument
420 vsw_switch_l2_frame_mac_client(vsw_t *vswp, mblk_t *mp, int caller, in vsw_switch_l2_frame_mac_client() argument
434 if ((ret_m = vsw_tx_msg(vswp, mp, caller, port)) != NULL) { in vsw_switch_l2_frame_mac_client()
435 DERR(vswp, "%s: drop mblks to " in vsw_switch_l2_frame_mac_client()
456 vsw_switch_l2_frame(vsw_t *vswp, mblk_t *mp, int caller, in vsw_switch_l2_frame() argument
463 D1(vswp, "%s: enter (caller %d)", __func__, caller); in vsw_switch_l2_frame()
478 D2(vswp, "%s: mblk data buffer %lld : actual data size %lld", in vsw_switch_l2_frame()
481 if (ether_cmp(&ehp->ether_dhost, &vswp->if_addr) == 0) { in vsw_switch_l2_frame()
489 vsw_mac_rx(vswp, mrh, mp, VSW_MACRX_FREEMSG); in vsw_switch_l2_frame()
500 fp = vsw_fdbe_find(vswp, &ehp->ether_dhost); in vsw_switch_l2_frame()
507 vsw_mac_rx(vswp, mrh, mp, in vsw_switch_l2_frame()
530 D2(vswp, "%s: BROADCAST pkt", __func__); in vsw_switch_l2_frame()
531 (void) vsw_forward_all(vswp, mp, caller, arg); in vsw_switch_l2_frame()
533 D2(vswp, "%s: MULTICAST pkt", __func__); in vsw_switch_l2_frame()
534 (void) vsw_forward_grp(vswp, mp, caller, arg); in vsw_switch_l2_frame()
553 vsw_mac_rx(vswp, mrh, mp, in vsw_switch_l2_frame()
557 if ((ret_m = vsw_tx_msg(vswp, mp, in vsw_switch_l2_frame()
559 DERR(vswp, "%s: drop mblks to " in vsw_switch_l2_frame()
570 vsw_mac_rx(vswp, mrh, mp, in vsw_switch_l2_frame()
579 if ((ret_m = vsw_tx_msg(vswp, mp, in vsw_switch_l2_frame()
581 DERR(vswp, "%s: drop mblks to " in vsw_switch_l2_frame()
589 D1(vswp, "%s: exit\n", __func__); in vsw_switch_l2_frame()
601 vsw_switch_l3_frame(vsw_t *vswp, mblk_t *mp, int caller, in vsw_switch_l3_frame() argument
608 D1(vswp, "%s: enter (caller %d)", __func__, caller); in vsw_switch_l3_frame()
616 DERR(vswp, "%s: unexpected caller (%d)", __func__, caller); in vsw_switch_l3_frame()
628 D2(vswp, "%s: mblk data buffer %lld : actual data size %lld", in vsw_switch_l3_frame()
635 fp = vsw_fdbe_find(vswp, &ehp->ether_dhost); in vsw_switch_l3_frame()
638 D2(vswp, "%s: sending to target port", __func__); in vsw_switch_l3_frame()
653 D2(vswp, "%s: BROADCAST pkt", __func__); in vsw_switch_l3_frame()
654 (void) vsw_forward_all(vswp, mp, caller, arg); in vsw_switch_l3_frame()
656 D2(vswp, "%s: MULTICAST pkt", __func__); in vsw_switch_l3_frame()
657 (void) vsw_forward_grp(vswp, mp, caller, arg); in vsw_switch_l3_frame()
666 vsw_mac_rx(vswp, mrh, in vsw_switch_l3_frame()
673 D1(vswp, "%s: exit", __func__); in vsw_switch_l3_frame()
680 vsw_setup_switching_post_process(vsw_t *vswp) in vsw_setup_switching_post_process() argument
684 if (vswp->smode & VSW_LAYER2) { in vsw_setup_switching_post_process()
689 vsw_set_addrs(vswp); in vsw_setup_switching_post_process()
692 vsw_hio_start_ports(vswp); in vsw_setup_switching_post_process()
694 if (vswp->pls_update == B_TRUE) { in vsw_setup_switching_post_process()
695 link_state = vswp->phys_link_state; in vsw_setup_switching_post_process()
699 vsw_physlink_update_ports(vswp); in vsw_setup_switching_post_process()
702 vsw_mac_link_update(vswp, link_state); in vsw_setup_switching_post_process()
710 vsw_forward_all(vsw_t *vswp, mblk_t *mp, int caller, vsw_port_t *arg) in vsw_forward_all() argument
712 vsw_port_list_t *plist = &vswp->plist; in vsw_forward_all()
718 D1(vswp, "vsw_forward_all: enter\n"); in vsw_forward_all()
724 if ((vswp->smode & VSW_LAYER2) && in vsw_forward_all()
729 if ((ret_m = vsw_tx_msg(vswp, nmp, caller, arg)) in vsw_forward_all()
731 DERR(vswp, "%s: dropping pkt(s) " in vsw_forward_all()
747 vsw_mac_rx(vswp, NULL, mp, VSW_MACRX_COPYMSG); in vsw_forward_all()
753 D2(vswp, "vsw_forward_all: port %d", portp->p_instance); in vsw_forward_all()
771 DERR(vswp, "vsw_forward_all: nmp NULL"); in vsw_forward_all()
779 D1(vswp, "vsw_forward_all: exit\n"); in vsw_forward_all()
788 vsw_forward_grp(vsw_t *vswp, mblk_t *mp, int caller, vsw_port_t *arg) in vsw_forward_grp() argument
804 D1(vswp, "%s: key 0x%llx", __func__, key); in vsw_forward_grp()
812 if ((vswp->smode & VSW_LAYER2) && in vsw_forward_grp()
816 if ((ret_m = vsw_tx_msg(vswp, nmp, caller, arg)) in vsw_forward_grp()
818 DERR(vswp, "%s: dropping pkt(s) consisting of " in vsw_forward_grp()
826 READ_ENTER(&vswp->mfdbrw); in vsw_forward_grp()
827 if (mod_hash_find(vswp->mfdb, (mod_hash_key_t)key, in vsw_forward_grp()
829 D3(vswp, "%s: no table entry found for addr 0x%llx", in vsw_forward_grp()
841 D3(vswp, "%s: not sending to ourselves" in vsw_forward_grp()
847 D2(vswp, "%s: not sending back up stack", in vsw_forward_grp()
854 D3(vswp, "%s: sending to port %ld for addr " in vsw_forward_grp()
867 vsw_mac_rx(vswp, NULL, in vsw_forward_grp()
869 D2(vswp, "%s: sending up stack" in vsw_forward_grp()
876 RW_EXIT(&vswp->mfdbrw); in vsw_forward_grp()
886 vsw_mac_rx(vswp, NULL, mp, in vsw_forward_grp()
892 D1(vswp, "%s: exit", __func__); in vsw_forward_grp()
941 vsw_t *vswp = (vsw_t *)arg; in vsw_vlan_create_hash() local
944 vswp->instance); in vsw_vlan_create_hash()
946 vswp->vlan_nchains = vsw_vlan_nchains; in vsw_vlan_create_hash()
947 vswp->vlan_hashp = mod_hash_create_idhash(hashname, in vsw_vlan_create_hash()
948 vswp->vlan_nchains, mod_hash_null_valdtor); in vsw_vlan_create_hash()
972 vsw_t *vswp = (vsw_t *)arg; in vsw_vlan_destroy_hash() local
974 mod_hash_destroy_hash(vswp->vlan_hashp); in vsw_vlan_destroy_hash()
975 vswp->vlan_nchains = 0; in vsw_vlan_destroy_hash()
996 vsw_t *vswp = (vsw_t *)arg; in vsw_vlan_add_ids() local
998 rv = mod_hash_insert(vswp->vlan_hashp, in vsw_vlan_add_ids()
999 (mod_hash_key_t)VLAN_ID_KEY(vswp->pvid), in vsw_vlan_add_ids()
1003 "the interface", vswp->instance, vswp->pvid); in vsw_vlan_add_ids()
1006 for (i = 0; i < vswp->nvids; i++) { in vsw_vlan_add_ids()
1007 rv = mod_hash_insert(vswp->vlan_hashp, in vsw_vlan_add_ids()
1008 (mod_hash_key_t)VLAN_ID_KEY(vswp->vids[i].vl_vid), in vsw_vlan_add_ids()
1012 " for the interface", vswp->instance, in vsw_vlan_add_ids()
1013 vswp->pvid); in vsw_vlan_add_ids()
1019 vsw_t *vswp = portp->p_vswp; in vsw_vlan_add_ids() local
1026 "the port(%d)", vswp->instance, vswp->pvid, in vsw_vlan_add_ids()
1036 " for the port(%d)", vswp->instance, in vsw_vlan_add_ids()
1037 vswp->pvid, portp->p_instance); in vsw_vlan_add_ids()
1055 vsw_t *vswp = (vsw_t *)arg; in vsw_vlan_remove_ids() local
1057 rv = vsw_vlan_lookup(vswp->vlan_hashp, vswp->pvid); in vsw_vlan_remove_ids()
1059 rv = mod_hash_remove(vswp->vlan_hashp, in vsw_vlan_remove_ids()
1060 (mod_hash_key_t)VLAN_ID_KEY(vswp->pvid), in vsw_vlan_remove_ids()
1065 for (i = 0; i < vswp->nvids; i++) { in vsw_vlan_remove_ids()
1066 rv = vsw_vlan_lookup(vswp->vlan_hashp, in vsw_vlan_remove_ids()
1067 vswp->vids[i].vl_vid); in vsw_vlan_remove_ids()
1069 rv = mod_hash_remove(vswp->vlan_hashp, in vsw_vlan_remove_ids()
1071 vswp->vids[i].vl_vid), in vsw_vlan_remove_ids()
1128 vsw_fdbe_add(vsw_t *vswp, void *port) in vsw_fdbe_add() argument
1144 rv = mod_hash_insert(vswp->fdb_hashp, (mod_hash_key_t)addr, in vsw_fdbe_add()
1148 "the port(%d)", vswp->instance, in vsw_fdbe_add()
1158 vsw_fdbe_del(vsw_t *vswp, struct ether_addr *eaddr) in vsw_fdbe_del() argument
1170 rv = mod_hash_remove(vswp->fdb_hashp, (mod_hash_key_t)addr, in vsw_fdbe_del()
1193 vsw_fdbe_find(vsw_t *vswp, struct ether_addr *addrp) in vsw_fdbe_find() argument
1201 rv = mod_hash_find_cb(vswp->fdb_hashp, (mod_hash_key_t)key, in vsw_fdbe_find()
1243 vsw_t *vswp; in vsw_vlan_frame_pretag() local
1255 vswp = (vsw_t *)arg; in vsw_vlan_frame_pretag()
1256 pvid = vswp->pvid; in vsw_vlan_frame_pretag()
1262 vswp = portp->p_vswp; in vsw_vlan_frame_pretag()
1278 if (pvid != vswp->default_vlan_id) { in vsw_vlan_frame_pretag()
1328 vsw_t *vswp; in vsw_vlan_frame_untag() local
1341 vswp = (vsw_t *)arg; in vsw_vlan_frame_untag()
1342 pvid = vswp->pvid; in vsw_vlan_frame_untag()
1343 vlan_hashp = vswp->vlan_hashp; in vsw_vlan_frame_untag()
1348 vswp = portp->p_vswp; in vsw_vlan_frame_untag()
1360 if ((vswp->mac_cl_switching == B_TRUE) && in vsw_vlan_frame_untag()
1361 (pvid == vswp->default_vlan_id)) { in vsw_vlan_frame_untag()
1393 if (vswp->mac_cl_switching == B_TRUE) { in vsw_vlan_frame_untag()
1417 if (vlan_id != vswp->default_vlan_id) { in vsw_vlan_frame_untag()
1480 vsw_t *vswp; in vsw_frame_lookup_vid() local
1508 vswp = (vsw_t *)arg; in vsw_frame_lookup_vid()
1509 *vidp = vswp->pvid; in vsw_frame_lookup_vid()
1525 vsw_t *vswp = port->p_vswp; in vsw_add_rem_mcst() local
1529 D1(vswp, "%s: enter", __func__); in vsw_add_rem_mcst()
1531 D2(vswp, "%s: %d addresses", __func__, mcst_pkt->count); in vsw_add_rem_mcst()
1544 D3(vswp, "%s: adding multicast address 0x%llx for " in vsw_add_rem_mcst()
1546 if (vsw_add_mcst(vswp, VSW_VNETPORT, addr, port) == 0) { in vsw_add_rem_mcst()
1556 DERR(vswp, "%s: unable to alloc mem", in vsw_add_rem_mcst()
1558 (void) vsw_del_mcst(vswp, in vsw_add_rem_mcst()
1573 if (vsw_mac_multicast_add(vswp, port, mcst_p, in vsw_add_rem_mcst()
1575 (void) vsw_del_mcst(vswp, in vsw_add_rem_mcst()
1587 DERR(vswp, "%s: error adding multicast " in vsw_add_rem_mcst()
1598 if (vsw_del_mcst(vswp, VSW_VNETPORT, addr, port) == 0) { in vsw_add_rem_mcst()
1599 D3(vswp, "%s: deleting multicast address " in vsw_add_rem_mcst()
1614 vsw_mac_multicast_remove(vswp, port, mcst_p, in vsw_add_rem_mcst()
1619 DERR(vswp, "%s: error deleting multicast " in vsw_add_rem_mcst()
1626 D1(vswp, "%s: exit", __func__); in vsw_add_rem_mcst()
1638 vsw_add_mcst(vsw_t *vswp, uint8_t devtype, uint64_t addr, void *arg) in vsw_add_mcst() argument
1661 tgt = (void *)vswp; in vsw_add_mcst()
1664 WRITE_ENTER(&vswp->mfdbrw); in vsw_add_mcst()
1665 if (mod_hash_find(vswp->mfdb, (mod_hash_key_t)addr, in vsw_add_mcst()
1674 if (mod_hash_insert(vswp->mfdb, (mod_hash_key_t)addr, in vsw_add_mcst()
1676 DERR(vswp, "%s: hash table insertion failed", __func__); in vsw_add_mcst()
1680 D2(vswp, "%s: added initial entry for 0x%llx to " in vsw_add_mcst()
1693 DERR(vswp, "%s: duplicate port entry " in vsw_add_mcst()
1699 DERR(vswp, "%s: duplicate entry found" in vsw_add_mcst()
1713 D2(vswp, "%s: added entry for 0x%llx to table", in vsw_add_mcst()
1728 RW_EXIT(&vswp->mfdbrw); in vsw_add_mcst()
1740 vsw_del_mcst(vsw_t *vswp, uint8_t devtype, uint64_t addr, void *arg) in vsw_del_mcst() argument
1746 D1(vswp, "%s: enter", __func__); in vsw_del_mcst()
1750 D2(vswp, "%s: removing port %d from mFDB for address" in vsw_del_mcst()
1753 D2(vswp, "%s: removing entry", __func__); in vsw_del_mcst()
1754 tgt = (void *)vswp; in vsw_del_mcst()
1757 WRITE_ENTER(&vswp->mfdbrw); in vsw_del_mcst()
1758 if (mod_hash_find(vswp->mfdb, (mod_hash_key_t)addr, in vsw_del_mcst()
1760 D2(vswp, "%s: address 0x%llx not in table", __func__, addr); in vsw_del_mcst()
1761 RW_EXIT(&vswp->mfdbrw); in vsw_del_mcst()
1770 D2(vswp, "%s: port %d found", __func__, in vsw_del_mcst()
1773 D2(vswp, "%s: instance found", __func__); in vsw_del_mcst()
1784 (void) mod_hash_destroy(vswp->mfdb, in vsw_del_mcst()
1787 (void) mod_hash_replace(vswp->mfdb, in vsw_del_mcst()
1805 RW_EXIT(&vswp->mfdbrw); in vsw_del_mcst()
1807 D1(vswp, "%s: exit", __func__); in vsw_del_mcst()
1825 vsw_t *vswp = port->p_vswp; in vsw_del_mcst_port() local
1827 D1(vswp, "%s: enter", __func__); in vsw_del_mcst_port()
1837 (void) vsw_del_mcst(vswp, VSW_VNETPORT, in vsw_del_mcst_port()
1848 vsw_mac_multicast_remove(vswp, port, mcap, VSW_VNETPORT); in vsw_del_mcst_port()
1857 D1(vswp, "%s: exit", __func__); in vsw_del_mcst_port()
1867 vsw_del_mcst_vsw(vsw_t *vswp) in vsw_del_mcst_vsw() argument
1871 D1(vswp, "%s: enter", __func__); in vsw_del_mcst_vsw()
1873 mutex_enter(&vswp->mca_lock); in vsw_del_mcst_vsw()
1875 while (vswp->mcap != NULL) { in vsw_del_mcst_vsw()
1876 DERR(vswp, "%s: deleting addr 0x%llx", in vsw_del_mcst_vsw()
1877 __func__, vswp->mcap->addr); in vsw_del_mcst_vsw()
1878 (void) vsw_del_mcst(vswp, VSW_LOCALDEV, vswp->mcap->addr, NULL); in vsw_del_mcst_vsw()
1880 next_p = vswp->mcap->nextp; in vsw_del_mcst_vsw()
1881 kmem_free(vswp->mcap, sizeof (mcst_addr_t)); in vsw_del_mcst_vsw()
1882 vswp->mcap = next_p; in vsw_del_mcst_vsw()
1885 vswp->mcap = NULL; in vsw_del_mcst_vsw()
1886 mutex_exit(&vswp->mca_lock); in vsw_del_mcst_vsw()
1888 D1(vswp, "%s: exit", __func__); in vsw_del_mcst_vsw()