Lines Matching refs:vnetp

80 static void vnet_force_link_state(vnet_t *vnetp, queue_t *q, mblk_t *mp);
102 static int vnet_unattach(vnet_t *vnetp);
103 static void vnet_ring_grp_init(vnet_t *vnetp);
104 static void vnet_ring_grp_uninit(vnet_t *vnetp);
106 static int vnet_read_mac_address(vnet_t *vnetp);
109 static int vnet_bind_hwrings(vnet_t *vnetp);
110 static void vnet_unbind_hwrings(vnet_t *vnetp);
119 static void vnet_fdb_create(vnet_t *vnetp);
120 static void vnet_fdb_destroy(vnet_t *vnetp);
121 static vnet_res_t *vnet_fdbe_find(vnet_t *vnetp, struct ether_addr *addrp);
123 void vnet_fdbe_add(vnet_t *vnetp, vnet_res_t *vresp);
124 static void vnet_fdbe_del(vnet_t *vnetp, vnet_res_t *vresp);
130 static void vnet_start_resources(vnet_t *vnetp);
131 static void vnet_stop_resources(vnet_t *vnetp);
132 static void vnet_dispatch_res_task(vnet_t *vnetp);
135 static void vnet_add_resource(vnet_t *vnetp, vnet_res_t *vresp);
136 static vnet_res_t *vnet_rem_resource(vnet_t *vnetp, vnet_res_t *vresp);
140 int vnet_mtu_update(vnet_t *vnetp, uint32_t mtu);
141 void vnet_link_update(vnet_t *vnetp, link_state_t link_state);
142 void vnet_dds_cleanup_hio(vnet_t *vnetp);
151 int vnet_send_dds_msg(vnet_t *vnetp, void *dmsg);
152 int vnet_hio_mac_init(vnet_t *vnetp, char *ifname);
153 void vnet_hio_mac_cleanup(vnet_t *vnetp);
156 extern int vgen_init(void *vnetp, uint64_t regprop, dev_info_t *vnetdip,
168 extern int vdds_init(vnet_t *vnetp);
169 extern void vdds_cleanup(vnet_t *vnetp);
170 extern void vdds_process_dds_msg(vnet_t *vnetp, vio_dds_msg_t *dmsg);
172 extern void vdds_cleanup_hio(vnet_t *vnetp);
346 vnet_t *vnetp = (vnet_t *)arg; in debug_printf() local
349 if (vnetp == NULL) { in debug_printf()
353 (void) sprintf(bufp, "vnet%d:%s: ", vnetp->instance, fname); in debug_printf()
414 vnet_t *vnetp; in vnetattach() local
436 vnetp = kmem_zalloc(sizeof (vnet_t), KM_SLEEP); in vnetattach()
437 vnetp->dip = dip; in vnetattach()
438 vnetp->instance = instance; in vnetattach()
439 rw_init(&vnetp->vrwlock, NULL, RW_DRIVER, NULL); in vnetattach()
440 rw_init(&vnetp->vsw_fp_rw, NULL, RW_DRIVER, NULL); in vnetattach()
443 vnet_ring_grp_init(vnetp); in vnetattach()
446 status = vdds_init(vnetp); in vnetattach()
453 ddi_set_driver_private(dip, (caddr_t)vnetp); in vnetattach()
456 status = vnet_read_mac_address(vnetp); in vnetattach()
467 vnetp->reg = reg; in vnetattach()
469 vnet_fdb_create(vnetp); in vnetattach()
473 if ((vnetp->taskqp = ddi_taskq_create(dip, qname, 1, in vnetattach()
483 vnetp->nextp = vnet_headp; in vnetattach()
484 vnet_headp = vnetp; in vnetattach()
504 status = vgen_init(vnetp, reg, vnetp->dip, in vnetattach()
505 (uint8_t *)vnetp->curr_macaddr, &vnetp->vgenhdl); in vnetattach()
507 DERR(vnetp, "vgen_init() failed\n"); in vnetattach()
512 status = vnet_mac_register(vnetp); in vnetattach()
516 vnetp->link_state = LINK_STATE_UNKNOWN; in vnetattach()
519 status = vgen_init_mdeg(vnetp->vgenhdl); in vnetattach()
525 vnetp->attach_progress = attach_progress; in vnetattach()
531 vnetp->attach_progress = attach_progress; in vnetattach()
532 status = vnet_unattach(vnetp); in vnetattach()
543 vnet_t *vnetp; in vnetdetach() local
549 vnetp = ddi_get_driver_private(dip); in vnetdetach()
550 if (vnetp == NULL) { in vnetdetach()
563 if (vnet_unattach(vnetp) != 0) { in vnetdetach()
580 vnet_unattach(vnet_t *vnetp) in vnet_unattach() argument
584 attach_progress = vnetp->attach_progress; in vnet_unattach()
597 if (mac_disable(vnetp->mh) != 0) { in vnet_unattach()
610 vdds_cleanup(vnetp); in vnet_unattach()
619 vgen_uninit(vnetp->vgenhdl); in vnet_unattach()
626 ddi_taskq_destroy(vnetp->taskqp); in vnet_unattach()
632 vnet_fdb_destroy(vnetp); in vnet_unattach()
643 if (*vnetpp == vnetp) { in vnet_unattach()
644 *vnetpp = vnetp->nextp; in vnet_unattach()
653 vnet_ring_grp_uninit(vnetp); in vnet_unattach()
658 VERIFY(mac_unregister(vnetp->mh) == 0); in vnet_unattach()
659 vnetp->mh = NULL; in vnet_unattach()
664 rw_destroy(&vnetp->vrwlock); in vnet_unattach()
665 rw_destroy(&vnetp->vsw_fp_rw); in vnet_unattach()
667 KMEM_FREE(vnetp); in vnet_unattach()
677 vnet_t *vnetp = arg; in vnet_m_start() local
679 DBG1(vnetp, "enter\n"); in vnet_m_start()
681 WRITE_ENTER(&vnetp->vrwlock); in vnet_m_start()
682 vnetp->flags |= VNET_STARTED; in vnet_m_start()
683 vnet_start_resources(vnetp); in vnet_m_start()
684 RW_EXIT(&vnetp->vrwlock); in vnet_m_start()
686 DBG1(vnetp, "exit\n"); in vnet_m_start()
695 vnet_t *vnetp = arg; in vnet_m_stop() local
697 DBG1(vnetp, "enter\n"); in vnet_m_stop()
699 WRITE_ENTER(&vnetp->vrwlock); in vnet_m_stop()
700 if (vnetp->flags & VNET_STARTED) { in vnet_m_stop()
707 vnetp->flags &= ~VNET_STARTED; in vnet_m_stop()
708 vnetp->flags |= VNET_STOPPING; in vnet_m_stop()
709 vnet_stop_resources(vnetp); in vnet_m_stop()
710 vnetp->flags &= ~VNET_STOPPING; in vnet_m_stop()
712 RW_EXIT(&vnetp->vrwlock); in vnet_m_stop()
714 DBG1(vnetp, "exit\n"); in vnet_m_stop()
723 vnet_t *vnetp = arg; in vnet_m_unicst()
725 DBG1(vnetp, "enter\n"); in vnet_m_unicst()
729 DBG1(vnetp, "exit\n"); in vnet_m_unicst()
740 vnet_t *vnetp = arg; in vnet_m_multicst()
746 DBG1(vnetp, "enter\n"); in vnet_m_multicst()
748 READ_ENTER(&vnetp->vsw_fp_rw); in vnet_m_multicst()
749 if (vnetp->vsw_fp == NULL) { in vnet_m_multicst()
750 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_m_multicst()
753 VNET_FDBE_REFHOLD(vnetp->vsw_fp); in vnet_m_multicst()
754 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_m_multicst()
756 vresp = vnetp->vsw_fp; in vnet_m_multicst()
761 VNET_FDBE_REFRELE(vnetp->vsw_fp); in vnet_m_multicst()
763 DBG1(vnetp, "exit(%d)\n", rv); in vnet_m_multicst()
773 vnet_t *vnetp = arg; in vnet_m_promisc()
774 DBG1(vnetp, "enter\n"); in vnet_m_promisc()
778 DBG1(vnetp, "exit\n"); in vnet_m_promisc()
792 vnet_t *vnetp; in vnet_tx_ring_send() local
806 vnetp = (vnet_t *)tx_ringp->vnetp; in vnet_tx_ring_send()
807 DBG1(vnetp, "enter\n"); in vnet_tx_ring_send()
810 is_pvid = (vnetp->pvid != vnetp->default_vlan_id) ? B_TRUE : B_FALSE; in vnet_tx_ring_send()
825 vresp = vnet_fdbe_find(vnetp, &ehp->ether_dhost); in vnet_tx_ring_send()
856 READ_ENTER(&vnetp->vsw_fp_rw); in vnet_tx_ring_send()
858 if ((is_unicast) && (vnetp->hio_fp != NULL)) { in vnet_tx_ring_send()
859 vresp = vnetp->hio_fp; in vnet_tx_ring_send()
862 vresp = vnetp->vsw_fp; in vnet_tx_ring_send()
869 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_tx_ring_send()
878 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_tx_ring_send()
896 vnetp->pvid); in vnet_tx_ring_send()
928 DBG1(vnetp, "exit\n"); in vnet_tx_ring_send()
936 vnet_t *vnetp = arg; in vnet_m_stat() local
942 DBG1(vnetp, "enter\n"); in vnet_m_stat()
953 READ_ENTER(&vnetp->vrwlock); in vnet_m_stat()
954 for (vresp = vnetp->vres_list; vresp != NULL; vresp = vresp->nextp) { in vnet_m_stat()
960 RW_EXIT(&vnetp->vrwlock); in vnet_m_stat()
964 DBG1(vnetp, "exit\n"); in vnet_m_stat()
969 vnet_ring_grp_init(vnet_t *vnetp) in vnet_ring_grp_init() argument
977 tx_grp = &vnetp->tx_grp[0]; in vnet_ring_grp_init()
990 rx_grp = &vnetp->rx_grp[0]; in vnet_ring_grp_init()
1019 vnet_ring_grp_uninit(vnet_t *vnetp) in vnet_ring_grp_uninit() argument
1025 tx_grp = &vnetp->tx_grp[0]; in vnet_ring_grp_uninit()
1045 rx_grp = &vnetp->rx_grp[0]; in vnet_ring_grp_uninit()
1056 vnet_alloc_pseudo_rx_ring(vnet_t *vnetp) in vnet_alloc_pseudo_rx_ring() argument
1062 rx_grp = &vnetp->rx_grp[0]; in vnet_alloc_pseudo_rx_ring()
1086 vnet_free_pseudo_rx_ring(vnet_t *vnetp, vnet_pseudo_rx_ring_t *ringp) in vnet_free_pseudo_rx_ring() argument
1091 rx_grp = &vnetp->rx_grp[0]; in vnet_free_pseudo_rx_ring()
1105 vnet_mac_register(vnet_t *vnetp) in vnet_mac_register() argument
1113 macp->m_driver = vnetp; in vnet_mac_register()
1114 macp->m_dip = vnetp->dip; in vnet_mac_register()
1115 macp->m_src_addr = vnetp->curr_macaddr; in vnet_mac_register()
1118 macp->m_max_sdu = vnetp->mtu; in vnet_mac_register()
1127 err = mac_register(macp, &vnetp->mh); in vnet_mac_register()
1134 vnet_read_mac_address(vnet_t *vnetp) in vnet_read_mac_address() argument
1140 rv = ddi_prop_lookup_byte_array(DDI_DEV_T_ANY, vnetp->dip, in vnet_read_mac_address()
1143 DWARN(vnetp, "prop_lookup failed(%s) err(%d)\n", in vnet_read_mac_address()
1147 bcopy(macaddr, (caddr_t)vnetp->vendor_addr, ETHERADDRL); in vnet_read_mac_address()
1148 bcopy(macaddr, (caddr_t)vnetp->curr_macaddr, ETHERADDRL); in vnet_read_mac_address()
1155 vnet_fdb_create(vnet_t *vnetp) in vnet_fdb_create() argument
1160 vnetp->instance); in vnet_fdb_create()
1161 vnetp->fdb_nchains = vnet_fdb_nchains; in vnet_fdb_create()
1162 vnetp->fdb_hashp = mod_hash_create_ptrhash(hashname, vnetp->fdb_nchains, in vnet_fdb_create()
1167 vnet_fdb_destroy(vnet_t *vnetp) in vnet_fdb_destroy() argument
1170 if (vnetp->fdb_hashp != NULL) { in vnet_fdb_destroy()
1171 mod_hash_destroy_hash(vnetp->fdb_hashp); in vnet_fdb_destroy()
1172 vnetp->fdb_hashp = NULL; in vnet_fdb_destroy()
1173 vnetp->fdb_nchains = 0; in vnet_fdb_destroy()
1181 vnet_fdbe_add(vnet_t *vnetp, vnet_res_t *vresp) in vnet_fdbe_add() argument
1203 rv = mod_hash_insert(vnetp->fdb_hashp, (mod_hash_key_t)addr, in vnet_fdbe_add()
1206 DWARN(vnetp, "Duplicate macaddr key(%lx)\n", addr); in vnet_fdbe_add()
1213 WRITE_ENTER(&vnetp->vsw_fp_rw); in vnet_fdbe_add()
1214 if (vnetp->vsw_fp == NULL) in vnet_fdbe_add()
1215 vnetp->vsw_fp = vresp; in vnet_fdbe_add()
1216 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_fdbe_add()
1219 WRITE_ENTER(&vnetp->vsw_fp_rw); in vnet_fdbe_add()
1220 if (vnetp->hio_fp == NULL) in vnet_fdbe_add()
1221 vnetp->hio_fp = vresp; in vnet_fdbe_add()
1222 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_fdbe_add()
1230 vnet_fdbe_del(vnet_t *vnetp, vnet_res_t *vresp) in vnet_fdbe_del() argument
1244 rv = mod_hash_remove(vnetp->fdb_hashp, (mod_hash_key_t)addr, in vnet_fdbe_del()
1257 WRITE_ENTER(&vnetp->vsw_fp_rw); in vnet_fdbe_del()
1259 ASSERT(tmp == vnetp->vsw_fp); in vnet_fdbe_del()
1260 vnetp->vsw_fp = NULL; in vnet_fdbe_del()
1262 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_fdbe_del()
1264 WRITE_ENTER(&vnetp->vsw_fp_rw); in vnet_fdbe_del()
1266 vnetp->hio_fp = NULL; in vnet_fdbe_del()
1268 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_fdbe_del()
1287 vnet_fdbe_find(vnet_t *vnetp, struct ether_addr *addrp) in vnet_fdbe_find() argument
1295 rv = mod_hash_find_cb(vnetp->fdb_hashp, (mod_hash_key_t)key, in vnet_fdbe_find()
1374 vnet_t *vnetp = vresp->vnetp; in vnet_rx() local
1377 if ((vnetp == NULL) || (vnetp->mh == 0)) { in vnet_rx()
1383 mac_rx_ring(vnetp->mh, ringp->handle, mp, ringp->gen_num); in vnet_rx()
1390 vnet_t *vnetp = vresp->vnetp; in vnet_tx_update() local
1395 if (vnetp == NULL || vnetp->mh == NULL) { in vnet_tx_update()
1420 tx_grp = &vnetp->tx_grp[0]; in vnet_tx_update()
1423 mac_tx_ring_update(vnetp->mh, tx_ringp->handle); in vnet_tx_update()
1444 vnet_t *vnetp; in vnet_tx_notify_thread() local
1460 vnetp = tx_ringp->vnetp; in vnet_tx_notify_thread()
1461 mac_tx_ring_update(vnetp->mh, tx_ringp->handle); in vnet_tx_notify_thread()
1476 vnet_t *vnetp = (vnet_t *)arg1; in vnet_tx_ring_update() local
1481 tx_grp = &vnetp->tx_grp[0]; in vnet_tx_ring_update()
1499 vnet_mtu_update(vnet_t *vnetp, uint32_t mtu) in vnet_mtu_update() argument
1503 if (vnetp == NULL || vnetp->mh == NULL) { in vnet_mtu_update()
1507 WRITE_ENTER(&vnetp->vrwlock); in vnet_mtu_update()
1509 if (vnetp->flags & VNET_STARTED) { in vnet_mtu_update()
1510 RW_EXIT(&vnetp->vrwlock); in vnet_mtu_update()
1513 vnetp->instance); in vnet_mtu_update()
1518 rv = mac_maxsdu_update(vnetp->mh, mtu); in vnet_mtu_update()
1520 RW_EXIT(&vnetp->vrwlock); in vnet_mtu_update()
1523 vnetp->instance); in vnet_mtu_update()
1527 vnetp->mtu = mtu; in vnet_mtu_update()
1529 RW_EXIT(&vnetp->vrwlock); in vnet_mtu_update()
1538 vnet_link_update(vnet_t *vnetp, link_state_t link_state) in vnet_link_update() argument
1540 if (vnetp == NULL || vnetp->mh == NULL) { in vnet_link_update()
1544 WRITE_ENTER(&vnetp->vrwlock); in vnet_link_update()
1545 if (vnetp->link_state == link_state) { in vnet_link_update()
1546 RW_EXIT(&vnetp->vrwlock); in vnet_link_update()
1549 vnetp->link_state = link_state; in vnet_link_update()
1550 RW_EXIT(&vnetp->vrwlock); in vnet_link_update()
1552 mac_link_update(vnetp->mh, link_state); in vnet_link_update()
1572 vnet_t *vnetp; in vio_net_resource_reg() local
1584 vnetp = vnet_headp; in vio_net_resource_reg()
1585 while (vnetp != NULL) { in vio_net_resource_reg()
1586 if (VNET_MATCH_RES(vresp, vnetp)) { in vio_net_resource_reg()
1587 vresp->vnetp = vnetp; in vio_net_resource_reg()
1596 vnetp->instance); in vio_net_resource_reg()
1599 vnet_add_resource(vnetp, vresp); in vio_net_resource_reg()
1602 vnetp = vnetp->nextp; in vio_net_resource_reg()
1605 if (vresp->vnetp == NULL) { in vio_net_resource_reg()
1618 (void) vnet_rem_resource(vnetp, vresp); in vio_net_resource_reg()
1625 vnet_dispatch_res_task(vnetp); in vio_net_resource_reg()
1636 vnet_t *vnetp = vresp->vnetp; in vio_net_resource_unreg() local
1640 ASSERT(vnetp != NULL); in vio_net_resource_unreg()
1645 vnet_fdbe_del(vnetp, vresp); in vio_net_resource_unreg()
1650 (void) vnet_rem_resource(vnetp, vresp); in vio_net_resource_unreg()
1657 vnet_add_resource(vnet_t *vnetp, vnet_res_t *vresp) in vnet_add_resource() argument
1659 WRITE_ENTER(&vnetp->vrwlock); in vnet_add_resource()
1660 vresp->nextp = vnetp->vres_list; in vnet_add_resource()
1661 vnetp->vres_list = vresp; in vnet_add_resource()
1662 RW_EXIT(&vnetp->vrwlock); in vnet_add_resource()
1666 vnet_rem_resource(vnet_t *vnetp, vnet_res_t *vresp) in vnet_rem_resource() argument
1670 WRITE_ENTER(&vnetp->vrwlock); in vnet_rem_resource()
1671 if (vresp == vnetp->vres_list) { in vnet_rem_resource()
1672 vnetp->vres_list = vresp->nextp; in vnet_rem_resource()
1674 vrp = vnetp->vres_list; in vnet_rem_resource()
1683 vresp->vnetp = NULL; in vnet_rem_resource()
1686 RW_EXIT(&vnetp->vrwlock); in vnet_rem_resource()
1697 vnet_t *vnetp = arg; in vnet_dds_rx() local
1698 vdds_process_dds_msg(vnetp, dmsg); in vnet_dds_rx()
1706 vnet_send_dds_msg(vnet_t *vnetp, void *dmsg) in vnet_send_dds_msg() argument
1710 if (vnetp->vgenhdl != NULL) { in vnet_send_dds_msg()
1711 rv = vgen_dds_tx(vnetp->vgenhdl, dmsg); in vnet_send_dds_msg()
1720 vnet_dds_cleanup_hio(vnet_t *vnetp) in vnet_dds_cleanup_hio() argument
1722 vdds_cleanup_hio(vnetp); in vnet_dds_cleanup_hio()
1736 vnet_t *vnetp = vresp->vnetp; in vnet_handle_res_err() local
1738 if (vnetp == NULL) { in vnet_handle_res_err()
1746 vdds_cleanup_hio(vnetp); in vnet_handle_res_err()
1753 vnet_dispatch_res_task(vnet_t *vnetp) in vnet_dispatch_res_task() argument
1763 rv = ddi_taskq_dispatch(vnetp->taskqp, vnet_res_start_task, in vnet_dispatch_res_task()
1764 vnetp, DDI_NOSLEEP); in vnet_dispatch_res_task()
1768 vnetp->instance); in vnet_dispatch_res_task()
1778 vnet_t *vnetp = arg; in vnet_res_start_task() local
1780 WRITE_ENTER(&vnetp->vrwlock); in vnet_res_start_task()
1781 if (vnetp->flags & VNET_STARTED) { in vnet_res_start_task()
1782 vnet_start_resources(vnetp); in vnet_res_start_task()
1784 RW_EXIT(&vnetp->vrwlock); in vnet_res_start_task()
1792 vnet_start_resources(vnet_t *vnetp) in vnet_start_resources() argument
1799 DBG1(vnetp, "enter\n"); in vnet_start_resources()
1801 ASSERT(RW_WRITE_HELD(&vnetp->vrwlock)); in vnet_start_resources()
1803 for (vresp = vnetp->vres_list; vresp != NULL; vresp = vresp->nextp) { in vnet_start_resources()
1817 vnet_fdbe_add(vnetp, vresp); in vnet_start_resources()
1821 DBG1(vnetp, "exit\n"); in vnet_start_resources()
1829 vnet_stop_resources(vnet_t *vnetp) in vnet_stop_resources() argument
1835 DBG1(vnetp, "enter\n"); in vnet_stop_resources()
1837 ASSERT(RW_WRITE_HELD(&vnetp->vrwlock)); in vnet_stop_resources()
1839 for (vresp = vnetp->vres_list; vresp != NULL; ) { in vnet_stop_resources()
1861 RW_EXIT(&vnetp->vrwlock); in vnet_stop_resources()
1865 WRITE_ENTER(&vnetp->vrwlock); in vnet_stop_resources()
1871 DBG1(vnetp, "exit\n"); in vnet_stop_resources()
1883 vnet_t *vnetp = vresp->vnetp; in vnet_hio_setup_kstats() local
1887 ASSERT(vnetp != NULL); in vnet_hio_setup_kstats()
1889 ksp = kstat_create(ks_mod, vnetp->instance, ks_name, "net", in vnet_hio_setup_kstats()
1946 vnet_t *vnetp; in vnet_hio_update_kstats() local
1952 vnetp = vresp->vnetp; in vnet_hio_update_kstats()
1956 READ_ENTER(&vnetp->vsw_fp_rw); in vnet_hio_update_kstats()
1957 if (vnetp->hio_fp == NULL) { in vnet_hio_update_kstats()
1959 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_hio_update_kstats()
1962 VNET_FDBE_REFHOLD(vnetp->hio_fp); in vnet_hio_update_kstats()
1963 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_hio_update_kstats()
1964 vnet_hio_get_stats(vnetp->hio_fp, &statsp); in vnet_hio_update_kstats()
1965 VNET_FDBE_REFRELE(vnetp->hio_fp); in vnet_hio_update_kstats()
2073 vnet_t *vnetp = (vnet_t *)arg; in vnet_m_capab() local
2075 if (vnetp == NULL) { in vnet_m_capab()
2171 cap_rings->mr_rnum = vnetp->rx_grp[0].ring_cnt; in vnet_m_capab()
2186 cap_rings->mr_rnum = vnetp->tx_grp[0].ring_cnt; in vnet_m_capab()
2218 vnet_t *vnetp = arg; in vnet_get_ring() local
2230 rx_grp = &vnetp->rx_grp[g_index]; in vnet_get_ring()
2245 rx_ringp->vnetp = vnetp; in vnet_get_ring()
2281 tx_grp = &vnetp->tx_grp[0]; in vnet_get_ring()
2292 tx_ringp->vnetp = vnetp; in vnet_get_ring()
2323 vnet_t *vnetp = (vnet_t *)arg; in vnet_get_group() local
2334 rx_grp = &vnetp->rx_grp[index]; in vnet_get_group()
2337 rx_grp->vnetp = vnetp; in vnet_get_group()
2356 tx_grp = &vnetp->tx_grp[index]; in vnet_get_group()
2359 tx_grp->vnetp = vnetp; in vnet_get_group()
2455 vnet_t *vnetp = (vnet_t *)rx_ringp->vnetp; in vnet_rx_ring_stat() local
2465 READ_ENTER(&vnetp->vsw_fp_rw); in vnet_rx_ring_stat()
2466 if (vnetp->hio_fp == NULL) { in vnet_rx_ring_stat()
2467 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_rx_ring_stat()
2471 VNET_FDBE_REFHOLD(vnetp->hio_fp); in vnet_rx_ring_stat()
2472 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_rx_ring_stat()
2474 VNET_FDBE_REFRELE(vnetp->hio_fp); in vnet_rx_ring_stat()
2605 vnet_t *vnetp = rx_ringp->vnetp; in vnet_rx_poll() local
2621 if (vnetp->pvid != vnetp->default_vlan_id) { in vnet_rx_poll()
2622 vnet_rx_frames_untag(vnetp->pvid, &mp); in vnet_rx_poll()
2636 vnet_t *vnetp = (vnet_t *)arg; in vnet_hio_rx_cb() local
2647 if (vnetp->pvid != vnetp->default_vlan_id) { in vnet_hio_rx_cb()
2648 vnet_rx_frames_untag(vnetp->pvid, &mp); in vnet_hio_rx_cb()
2653 mac_rx_ring(vnetp->mh, ringp->handle, mp, ringp->gen_num); in vnet_hio_rx_cb()
2660 vnet_t *vnetp; in vnet_addmac() local
2662 vnetp = rx_grp->vnetp; in vnet_addmac()
2664 if (bcmp(mac_addr, vnetp->curr_macaddr, ETHERADDRL) == 0) { in vnet_addmac()
2669 vnetp->instance, __func__); in vnet_addmac()
2677 vnet_t *vnetp; in vnet_remmac() local
2679 vnetp = rx_grp->vnetp; in vnet_remmac()
2681 if (bcmp(mac_addr, vnetp->curr_macaddr, ETHERADDRL) == 0) { in vnet_remmac()
2686 vnetp->instance, __func__, ether_sprintf((void *)mac_addr)); in vnet_remmac()
2691 vnet_hio_mac_init(vnet_t *vnetp, char *ifname) in vnet_hio_mac_init() argument
2723 vnetp->hio_mh = mh; in vnet_hio_mac_init()
2725 (void) snprintf(client_name, MAXNAMELEN, "vnet%d-%s", vnetp->instance, in vnet_hio_mac_init()
2731 vnetp->hio_mch = mch; in vnet_hio_mac_init()
2733 rv = mac_unicast_add(mch, vnetp->curr_macaddr, mac_flags, &muh, 0, in vnet_hio_mac_init()
2738 vnetp->hio_muh = muh; in vnet_hio_mac_init()
2741 macp->m_driver = vnetp; in vnet_hio_mac_init()
2749 vnetp->curr_macaddr, rem_addr, &vnetp->hio_vhp, &vcb); in vnet_hio_mac_init()
2756 mac_rx_set(vnetp->hio_mch, vnet_hio_rx_cb, vnetp); in vnet_hio_mac_init()
2762 vnet_hio_mac_cleanup(vnetp); in vnet_hio_mac_init()
2767 vnet_hio_mac_cleanup(vnet_t *vnetp) in vnet_hio_mac_cleanup() argument
2769 if (vnetp->hio_vhp != NULL) { in vnet_hio_mac_cleanup()
2770 vio_net_resource_unreg(vnetp->hio_vhp); in vnet_hio_mac_cleanup()
2771 vnetp->hio_vhp = NULL; in vnet_hio_mac_cleanup()
2774 if (vnetp->hio_muh != NULL) { in vnet_hio_mac_cleanup()
2775 (void) mac_unicast_remove(vnetp->hio_mch, vnetp->hio_muh); in vnet_hio_mac_cleanup()
2776 vnetp->hio_muh = NULL; in vnet_hio_mac_cleanup()
2779 if (vnetp->hio_mch != NULL) { in vnet_hio_mac_cleanup()
2780 mac_client_close(vnetp->hio_mch, 0); in vnet_hio_mac_cleanup()
2781 vnetp->hio_mch = NULL; in vnet_hio_mac_cleanup()
2784 if (vnetp->hio_mh != NULL) { in vnet_hio_mac_cleanup()
2785 mac_close(vnetp->hio_mh); in vnet_hio_mac_cleanup()
2786 vnetp->hio_mh = NULL; in vnet_hio_mac_cleanup()
2792 vnet_bind_hwrings(vnet_t *vnetp) in vnet_bind_hwrings() argument
2804 mac_perim_enter_by_mh(vnetp->hio_mh, &mph1); in vnet_bind_hwrings()
2807 hw_ring_cnt = mac_hwrings_get(vnetp->hio_mch, &vnetp->rx_hwgh, hw_rh, in vnet_bind_hwrings()
2814 vnetp->instance, hw_ring_cnt); in vnet_bind_hwrings()
2818 if (vnetp->rx_hwgh != NULL) { in vnet_bind_hwrings()
2826 mac_rx_client_quiesce(vnetp->hio_mch); in vnet_bind_hwrings()
2827 mac_srs_perm_quiesce(vnetp->hio_mch, B_TRUE); in vnet_bind_hwrings()
2836 rx_grp = &vnetp->rx_grp[0]; in vnet_bind_hwrings()
2860 hw_ring_cnt = mac_hwrings_get(vnetp->hio_mch, &vnetp->tx_hwgh, hw_rh, in vnet_bind_hwrings()
2867 vnetp->instance, hw_ring_cnt); in vnet_bind_hwrings()
2877 tx_grp = &vnetp->tx_grp[0]; in vnet_bind_hwrings()
2884 mac_client_tx_notify(vnetp->hio_mch, vnet_tx_ring_update, vnetp); in vnet_bind_hwrings()
2891 vnet_unbind_hwrings(vnetp); in vnet_bind_hwrings()
2897 vnet_unbind_hwrings(vnet_t *vnetp) in vnet_unbind_hwrings() argument
2906 mac_perim_enter_by_mh(vnetp->hio_mh, &mph1); in vnet_unbind_hwrings()
2908 tx_grp = &vnetp->tx_grp[0]; in vnet_unbind_hwrings()
2916 (void) mac_client_tx_notify(vnetp->hio_mch, NULL, in vnet_unbind_hwrings()
2919 rx_grp = &vnetp->rx_grp[0]; in vnet_unbind_hwrings()
2932 if (vnetp->rx_hwgh != NULL) { in vnet_unbind_hwrings()
2933 vnetp->rx_hwgh = NULL; in vnet_unbind_hwrings()
2938 mac_srs_perm_quiesce(vnetp->hio_mch, B_FALSE); in vnet_unbind_hwrings()
2939 mac_rx_client_restart(vnetp->hio_mch); in vnet_unbind_hwrings()
2949 vnet_t *vnetp; in vnet_bind_vgenring() local
2956 vnetp = vresp->vnetp; in vnet_bind_vgenring()
2958 rx_grp = &vnetp->rx_grp[0]; in vnet_bind_vgenring()
2975 mac_perim_enter_by_mh(vnetp->mh, &mph1); in vnet_bind_vgenring()
2977 rx_ringp = vnet_alloc_pseudo_rx_ring(vnetp); in vnet_bind_vgenring()
2980 vnetp->instance); in vnet_bind_vgenring()
3001 vnet_free_pseudo_rx_ring(vnetp, rx_ringp); in vnet_bind_vgenring()
3016 vnet_t *vnetp; in vnet_unbind_vgenring() local
3022 vnetp = vresp->vnetp; in vnet_unbind_vgenring()
3024 rx_grp = &vnetp->rx_grp[0]; in vnet_unbind_vgenring()
3045 mac_perim_enter_by_mh(vnetp->mh, &mph1); in vnet_unbind_vgenring()
3058 vnet_free_pseudo_rx_ring(vnetp, rx_ringp); in vnet_unbind_vgenring()
3075 vnet_unbind_hwrings(vresp->vnetp); in vnet_unbind_rings()
3097 rv = vnet_bind_hwrings(vresp->vnetp); in vnet_bind_rings()
3113 vnet_t *vnetp = (vnet_t *)arg; in vnet_hio_stat() local
3115 *val = mac_stat_get(vnetp->hio_mh, stat); in vnet_hio_stat()
3174 vnet_t *vnetp; in vnet_m_ioctl() local
3178 vnetp = (vnet_t *)arg; in vnet_m_ioctl()
3180 if (vnetp == NULL) { in vnet_m_ioctl()
3189 vnet_force_link_state(vnetp, q, mp); in vnet_m_ioctl()
3201 vnet_force_link_state(vnet_t *vnetp, queue_t *q, mblk_t *mp) in vnet_force_link_state() argument
3207 READ_ENTER(&vnetp->vsw_fp_rw); in vnet_force_link_state()
3209 vresp = vnetp->vsw_fp; in vnet_force_link_state()
3211 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_force_link_state()
3219 RW_EXIT(&vnetp->vsw_fp_rw); in vnet_force_link_state()
3227 vnet_t *vnetp; in vnet_m_ioctl() local
3229 vnetp = (vnet_t *)arg; in vnet_m_ioctl()
3231 if (vnetp == NULL) { in vnet_m_ioctl()