Lines Matching refs:ring

606 	mac_ring_t *ring = (mac_ring_t *)buf;  in i_mac_ring_ctor()  local
608 bzero(ring, sizeof (mac_ring_t)); in i_mac_ring_ctor()
609 cv_init(&ring->mr_cv, NULL, CV_DEFAULT, NULL); in i_mac_ring_ctor()
610 mutex_init(&ring->mr_lock, NULL, MUTEX_DEFAULT, NULL); in i_mac_ring_ctor()
611 ring->mr_state = MR_FREE; in i_mac_ring_ctor()
619 mac_ring_t *ring = (mac_ring_t *)buf; in i_mac_ring_dtor() local
621 cv_destroy(&ring->mr_cv); in i_mac_ring_dtor()
622 mutex_destroy(&ring->mr_lock); in i_mac_ring_dtor()
1176 mac_ring_t *ring = NULL; in mac_start() local
1192 ring = (mac_ring_t *)mip->mi_default_tx_ring; in mac_start()
1193 if (ring->mr_state != MR_INUSE) { in mac_start()
1194 err = mac_start_ring(ring); in mac_start()
1213 if ((ring != NULL) && in mac_start()
1214 (ring->mr_state == MR_INUSE)) in mac_start()
1215 mac_stop_ring(ring); in mac_start()
1264 mac_ring_t *ring; in mac_stop() local
1266 ring = (mac_ring_t *)mip->mi_default_tx_ring; in mac_stop()
1267 if (ring->mr_state == MR_INUSE) { in mac_stop()
1268 mac_stop_ring(ring); in mac_stop()
1269 ring->mr_flag = 0; in mac_stop()
1535 mac_ring_t *ring; in mac_rx_group_unmark() local
1537 for (ring = grp->mrg_rings; ring != NULL; ring = ring->mr_next) in mac_rx_group_unmark()
1538 ring->mr_flag &= ~flag; in mac_rx_group_unmark()
1580 mac_ring_t *ring; in mac_hwrings_get() local
1607 for (ring = grp->mrg_rings; ring != NULL; ring = ring->mr_next, cnt++) { in mac_hwrings_get()
1609 hwrh[cnt] = (mac_ring_handle_t)ring; in mac_hwrings_get()
1643 mac_ring_t *ring; in mac_hwrings_idx_get() local
1675 for (ring = grp->mrg_rings; ring != NULL; ring = ring->mr_next, cnt++) { in mac_hwrings_idx_get()
1677 hwrh[cnt] = (mac_ring_handle_t)ring; in mac_hwrings_idx_get()
1698 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_getinfo() local
1699 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_getinfo()
1910 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_tx() local
1911 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_tx()
1913 ASSERT(ring->mr_type == MAC_RING_TYPE_TX && in mac_hwring_tx()
1914 ring->mr_state >= MR_INUSE); in mac_hwring_tx()
1924 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_getstat() local
1925 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_getstat()
1961 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_set_default() local
2850 mac_ring_handle_t ring = arg; in mac_tx_flow_srs_wakeup() local
2853 mac_tx_srs_wakeup(flent->fe_tx_srs, ring); in mac_tx_flow_srs_wakeup()
2858 i_mac_tx_srs_notify(mac_impl_t *mip, mac_ring_handle_t ring) in i_mac_tx_srs_notify() argument
2885 mac_tx_srs_wakeup(mac_srs, ring); in i_mac_tx_srs_notify()
2896 (mac_tx_cookie_t)ring); in i_mac_tx_srs_notify()
2900 mac_tx_flow_srs_wakeup, ring); in i_mac_tx_srs_notify()
4048 mac_ring_t *ring; in mac_ring_alloc() local
4052 ring = mip->mi_ring_freelist; in mac_ring_alloc()
4053 mip->mi_ring_freelist = ring->mr_next; in mac_ring_alloc()
4054 bzero(ring, sizeof (mac_ring_t)); in mac_ring_alloc()
4058 ring = kmem_cache_alloc(mac_ring_cache, KM_SLEEP); in mac_ring_alloc()
4060 ASSERT((ring != NULL) && (ring->mr_state == MR_FREE)); in mac_ring_alloc()
4061 return (ring); in mac_ring_alloc()
4065 mac_ring_free(mac_impl_t *mip, mac_ring_t *ring) in mac_ring_free() argument
4067 ASSERT(ring->mr_state == MR_FREE); in mac_ring_free()
4070 ring->mr_state = MR_FREE; in mac_ring_free()
4071 ring->mr_flag = 0; in mac_ring_free()
4072 ring->mr_next = mip->mi_ring_freelist; in mac_ring_free()
4073 ring->mr_mip = NULL; in mac_ring_free()
4074 mip->mi_ring_freelist = ring; in mac_ring_free()
4075 mac_ring_stat_delete(ring); in mac_ring_free()
4084 mac_ring_t *ring = mip->mi_ring_freelist; in mac_ring_freeall() local
4085 while (ring != NULL) { in mac_ring_freeall()
4086 ring_next = ring->mr_next; in mac_ring_freeall()
4087 kmem_cache_free(mac_ring_cache, ring); in mac_ring_freeall()
4088 ring = ring_next; in mac_ring_freeall()
4095 mac_start_ring(mac_ring_t *ring) in mac_start_ring() argument
4099 ASSERT(ring->mr_state == MR_FREE); in mac_start_ring()
4101 if (ring->mr_start != NULL) { in mac_start_ring()
4102 rv = ring->mr_start(ring->mr_driver, ring->mr_gen_num); in mac_start_ring()
4107 ring->mr_state = MR_INUSE; in mac_start_ring()
4112 mac_stop_ring(mac_ring_t *ring) in mac_stop_ring() argument
4114 ASSERT(ring->mr_state == MR_INUSE); in mac_stop_ring()
4116 if (ring->mr_stop != NULL) in mac_stop_ring()
4117 ring->mr_stop(ring->mr_driver); in mac_stop_ring()
4119 ring->mr_state = MR_FREE; in mac_stop_ring()
4124 ring->mr_gen_num++; in mac_stop_ring()
4156 mac_ring_t *ring; in mac_start_group_and_rings() local
4163 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_start_group_and_rings()
4164 ASSERT(ring->mr_state == MR_FREE); in mac_start_group_and_rings()
4166 if ((rv = mac_start_ring(ring)) != 0) in mac_start_group_and_rings()
4184 ring->mr_classify_type = (ring->mr_pt_fn != NULL) ? in mac_start_group_and_rings()
4198 mac_ring_t *ring; in mac_stop_group_and_rings() local
4200 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_stop_group_and_rings()
4201 if (ring->mr_state != MR_FREE) { in mac_stop_group_and_rings()
4202 mac_stop_ring(ring); in mac_stop_group_and_rings()
4203 ring->mr_flag = 0; in mac_stop_group_and_rings()
4204 ring->mr_classify_type = MAC_NO_CLASSIFIER; in mac_stop_group_and_rings()
4215 mac_ring_t *ring, *rnext; in mac_init_ring() local
4219 ring = mac_ring_alloc(mip); in mac_init_ring()
4232 ring->mr_index = group->mrg_index * group->mrg_info.mgi_count + index; in mac_init_ring()
4233 ring->mr_type = group->mrg_type; in mac_init_ring()
4234 ring->mr_gh = (mac_group_handle_t)group; in mac_init_ring()
4237 ring->mr_next = group->mrg_rings; in mac_init_ring()
4238 group->mrg_rings = ring; in mac_init_ring()
4245 index, &ring_info, (mac_ring_handle_t)ring); in mac_init_ring()
4247 ring->mr_info = ring_info; in mac_init_ring()
4258 rnext = ring->mr_next; in mac_init_ring()
4274 ring->mr_info.mri_intr.mi_ddi_shared = in mac_init_ring()
4287 if (rnext == NULL && ring->mr_type == MAC_RING_TYPE_TX) { in mac_init_ring()
4289 mip->mi_rx_group_count, ring); in mac_init_ring()
4294 ring->mr_state = MR_FREE; in mac_init_ring()
4295 ring->mr_flag = 0; in mac_init_ring()
4301 if (ring->mr_stat != NULL) { in mac_init_ring()
4302 ring->mr_mip = mip; in mac_init_ring()
4303 mac_ring_stat_create(ring); in mac_init_ring()
4306 return (ring); in mac_init_ring()
4335 mac_ring_t *ring; in mac_init_rings() local
4582 ring = group->mrg_rings; in mac_init_rings()
4589 if (ring == NULL) { in mac_init_rings()
4608 while ((ring->mr_index != 0) && (ring->mr_next != NULL)) in mac_init_rings()
4609 ring = ring->mr_next; in mac_init_rings()
4610 ASSERT(ring->mr_index == 0); in mac_init_rings()
4611 mip->mi_default_tx_ring = (mac_ring_handle_t)ring; in mac_init_rings()
4646 mac_ring_t *ring; in mac_compare_ddi_handle() local
4653 for (ring = group->mrg_rings; ring != NULL; in mac_compare_ddi_handle()
4654 ring = ring->mr_next) { in mac_compare_ddi_handle()
4655 if (ring == cring) in mac_compare_ddi_handle()
4657 if (ring->mr_info.mri_intr.mi_ddi_handle == in mac_compare_ddi_handle()
4660 ring->mr_index == 0 && in mac_compare_ddi_handle()
4661 !ring->mr_info.mri_intr.mi_ddi_shared) { in mac_compare_ddi_handle()
4662 ring->mr_info.mri_intr.mi_ddi_shared = in mac_compare_ddi_handle()
4715 mac_ring_t *ring; in mac_free_rings() local
4722 while ((ring = group->mrg_rings) != NULL) { in mac_free_rings()
4723 group->mrg_rings = ring->mr_next; in mac_free_rings()
4724 mac_ring_free(mip, ring); in mac_free_rings()
4862 mac_ring_t *ring = group->mrg_rings; in mac_find_ring() local
4864 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) in mac_find_ring()
4865 if (ring->mr_index == index) in mac_find_ring()
4868 return ((mac_ring_handle_t)ring); in mac_find_ring()
4880 i_mac_group_add_ring(mac_group_t *group, mac_ring_t *ring, int index) in i_mac_group_add_ring() argument
4884 boolean_t driver_call = (ring == NULL); in i_mac_group_add_ring()
4909 driver_call ? index : ring->mr_index) == NULL); in i_mac_group_add_ring()
4918 ring = mac_init_ring(mip, group, index, cap_rings); in i_mac_group_add_ring()
4931 ASSERT(ring->mr_gh == NULL); in i_mac_group_add_ring()
4938 ASSERT(ring->mr_state < MR_INUSE); in i_mac_group_add_ring()
4939 ASSERT(ring->mr_srs == NULL); in i_mac_group_add_ring()
4940 ASSERT(ring->mr_type == group->mrg_type); in i_mac_group_add_ring()
4950 ring->mr_driver, ring->mr_type); in i_mac_group_add_ring()
4956 ring->mr_next = group->mrg_rings; in i_mac_group_add_ring()
4957 group->mrg_rings = ring; in i_mac_group_add_ring()
4958 ring->mr_gh = (mac_group_handle_t)group; in i_mac_group_add_ring()
4972 if (ring->mr_state != MR_INUSE) { in i_mac_group_add_ring()
4973 if ((ret = mac_start_ring(ring)) != 0) { in i_mac_group_add_ring()
4976 ring->mr_driver, ring->mr_type); in i_mac_group_add_ring()
4979 group->mrg_rings = ring->mr_next; in i_mac_group_add_ring()
4981 ring->mr_gh = NULL; in i_mac_group_add_ring()
4984 mac_ring_free(mip, ring); in i_mac_group_add_ring()
4993 switch (ring->mr_type) { in i_mac_group_add_ring()
5009 ring->mr_classify_type = MAC_SW_CLASSIFIER; in i_mac_group_add_ring()
5020 if (ring->mr_state == MR_INUSE) in i_mac_group_add_ring()
5021 mac_stop_ring(ring); in i_mac_group_add_ring()
5022 ring->mr_flag = 0; in i_mac_group_add_ring()
5059 mac_tx_srs_add_ring(mac_srs, ring); in i_mac_group_add_ring()
5080 ring->mr_type == MAC_RING_TYPE_TX) { in i_mac_group_add_ring()
5081 mip->mi_default_tx_ring = (mac_ring_handle_t)ring; in i_mac_group_add_ring()
5084 MAC_RING_UNMARK(ring, MR_INCIPIENT); in i_mac_group_add_ring()
5095 i_mac_group_rem_ring(mac_group_t *group, mac_ring_t *ring, in i_mac_group_rem_ring() argument
5105 ring->mr_index) == (mac_ring_handle_t)ring); in i_mac_group_rem_ring()
5106 ASSERT((mac_group_t *)ring->mr_gh == group); in i_mac_group_rem_ring()
5107 ASSERT(ring->mr_type == group->mrg_type); in i_mac_group_rem_ring()
5109 if (ring->mr_state == MR_INUSE) in i_mac_group_rem_ring()
5110 mac_stop_ring(ring); in i_mac_group_rem_ring()
5111 switch (ring->mr_type) { in i_mac_group_rem_ring()
5123 if (ring->mr_srs != NULL) { in i_mac_group_rem_ring()
5124 mac_rx_srs_remove(ring->mr_srs); in i_mac_group_rem_ring()
5125 ring->mr_srs = NULL; in i_mac_group_rem_ring()
5166 (mac_ring_handle_t)ring) { in i_mac_group_rem_ring()
5169 (group->mrg_rings != ring) ? in i_mac_group_rem_ring()
5171 (mac_ring_handle_t)(ring->mr_next); in i_mac_group_rem_ring()
5188 sringp = srs_tx->st_soft_rings[ring->mr_index]; in i_mac_group_rem_ring()
5192 mac_tx_srs_del_ring(mac_srs, ring); in i_mac_group_rem_ring()
5196 ASSERT(ring != (mac_ring_t *)mip->mi_default_tx_ring); in i_mac_group_rem_ring()
5221 mac_tx_srs_get_soft_ring(mac_srs, ring)); in i_mac_group_rem_ring()
5222 mac_tx_srs_del_ring(mac_srs, ring); in i_mac_group_rem_ring()
5231 if (ring->mr_next == NULL) in i_mac_group_rem_ring()
5234 rem_ring = ring->mr_next; in i_mac_group_rem_ring()
5273 if (ring == group->mrg_rings) in i_mac_group_rem_ring()
5274 group->mrg_rings = ring->mr_next; in i_mac_group_rem_ring()
5279 while (pre->mr_next != ring) in i_mac_group_rem_ring()
5281 pre->mr_next = ring->mr_next; in i_mac_group_rem_ring()
5295 ring->mr_driver, ring->mr_type); in i_mac_group_rem_ring()
5299 ring->mr_gh = NULL; in i_mac_group_rem_ring()
5301 mac_ring_free(mip, ring); in i_mac_group_rem_ring()
5303 ring->mr_flag = 0; in i_mac_group_rem_ring()
5313 mac_group_mov_ring(mac_impl_t *mip, mac_group_t *d_group, mac_ring_t *ring) in mac_group_mov_ring() argument
5315 mac_group_t *s_group = (mac_group_t *)ring->mr_gh; in mac_group_mov_ring()
5329 i_mac_group_rem_ring(s_group, ring, B_FALSE); in mac_group_mov_ring()
5334 rv = i_mac_group_add_ring(d_group, ring, 0); in mac_group_mov_ring()
5340 if (i_mac_group_add_ring(s_group, ring, 0)) { in mac_group_mov_ring()
5342 mip->mi_name, (void *)ring); in mac_group_mov_ring()
6610 mac_ring_t *ring, mac_ring_t **rings, int nrings) in mac_reclaim_ring_from_grp() argument
6612 mac_group_t *group = (mac_group_t *)ring->mr_gh; in mac_reclaim_ring_from_grp()
6654 if (mac_group_mov_ring(mip, defgrp, ring) != 0) { in mac_reclaim_ring_from_grp()
6659 ASSERT(ring->mr_gh == (mac_group_handle_t)defgrp); in mac_reclaim_ring_from_grp()
6664 if (ring == (mac_ring_t *)mip->mi_default_tx_ring) { in mac_reclaim_ring_from_grp()
6778 if (mac_group_mov_ring(mip, defgrp, ring) != 0) { in mac_reclaim_ring_from_grp()
6785 ASSERT(ring->mr_gh == (mac_group_handle_t)defgrp); in mac_reclaim_ring_from_grp()
6801 mac_ring_t **rings, *ring; in i_mac_group_allocate_rings() local
6827 ring = rings[i]; in i_mac_group_allocate_rings()
6828 if (ring->mr_gh != (mac_group_handle_t)src_group || in i_mac_group_allocate_rings()
6829 ring == (mac_ring_t *)mip->mi_default_tx_ring) { in i_mac_group_allocate_rings()
6831 ring, rings, nrings) != 0) { in i_mac_group_allocate_rings()
6849 for (ring = src_group->mrg_rings; ring != NULL; in i_mac_group_allocate_rings()
6850 ring = ring->mr_next) { in i_mac_group_allocate_rings()
6852 ring->mr_index == 0) { in i_mac_group_allocate_rings()
6856 ring == (mac_ring_t *)mip->mi_default_tx_ring) { in i_mac_group_allocate_rings()
6859 rings[i++] = ring; in i_mac_group_allocate_rings()
6863 ASSERT(ring != NULL); in i_mac_group_allocate_rings()
7294 mac_ring_t *ring; in mac_release_rx_group() local
7306 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_release_rx_group()
7307 if (ring->mr_classify_type == MAC_HW_CLASSIFIER) { in mac_release_rx_group()
7313 ring->mr_srs = NULL; in mac_release_rx_group()
7316 ring->mr_state == MR_INUSE); in mac_release_rx_group()
7317 if (ring->mr_state == MR_INUSE) { in mac_release_rx_group()
7318 mac_stop_ring(ring); in mac_release_rx_group()
7319 ring->mr_flag = 0; in mac_release_rx_group()
7330 mac_ring_t *ring; in mac_release_rx_group() local
7336 while ((ring = group->mrg_rings) != NULL) { in mac_release_rx_group()
7338 ring); in mac_release_rx_group()
7783 mac_ring_t *ring; in mac_release_tx_group() local
7790 for (ring = grp->mrg_rings; ring != NULL; in mac_release_tx_group()
7791 ring = ring->mr_next) { in mac_release_tx_group()
7792 ASSERT(mac_tx_srs_ring_present(srs, ring)); in mac_release_tx_group()
7795 mac_tx_srs_get_soft_ring(srs, ring)); in mac_release_tx_group()
7796 mac_tx_srs_del_ring(srs, ring); in mac_release_tx_group()
7809 while ((ring = grp->mrg_rings) != NULL) in mac_release_tx_group()
7810 (void) mac_group_mov_ring(mip, defgrp, ring); in mac_release_tx_group()
7826 mac_ring_t *ring; in mac_tx_dismantle_soft_rings() local
7838 for (ring = fgrp->mrg_rings; ring != NULL; in mac_tx_dismantle_soft_rings()
7839 ring = ring->mr_next) { in mac_tx_dismantle_soft_rings()
7840 ASSERT(mac_tx_srs_ring_present(tx_srs, ring)); in mac_tx_dismantle_soft_rings()
7843 ring)); in mac_tx_dismantle_soft_rings()
7844 mac_tx_srs_del_ring(tx_srs, ring); in mac_tx_dismantle_soft_rings()
7908 mac_ring_t *ring; in mac_tx_switch_group() local
7922 ring = fgrp->mrg_rings; in mac_tx_switch_group()
7924 if (ring->mr_state == MR_INUSE && in mac_tx_switch_group()
7925 ring != in mac_tx_switch_group()
7927 mac_stop_ring(ring); in mac_tx_switch_group()
7928 ring->mr_flag = 0; in mac_tx_switch_group()
7930 ring = ring->mr_next; in mac_tx_switch_group()
8176 mac_ring_t *ring; in mac_group_ring_modify() local
8217 ring = group->mrg_rings; in mac_group_ring_modify()
8222 next = ring->mr_next; in mac_group_ring_modify()
8223 rv = mac_group_mov_ring(mip, defgrp, ring); in mac_group_ring_modify()
8232 rings[j++] = ring; in mac_group_ring_modify()
8233 ring = next; in mac_group_ring_modify()