Lines Matching refs:ring

605 	mac_ring_t *ring = (mac_ring_t *)buf;  in i_mac_ring_ctor()  local
607 bzero(ring, sizeof (mac_ring_t)); in i_mac_ring_ctor()
608 cv_init(&ring->mr_cv, NULL, CV_DEFAULT, NULL); in i_mac_ring_ctor()
609 mutex_init(&ring->mr_lock, NULL, MUTEX_DEFAULT, NULL); in i_mac_ring_ctor()
610 ring->mr_state = MR_FREE; in i_mac_ring_ctor()
618 mac_ring_t *ring = (mac_ring_t *)buf; in i_mac_ring_dtor() local
620 cv_destroy(&ring->mr_cv); in i_mac_ring_dtor()
621 mutex_destroy(&ring->mr_lock); in i_mac_ring_dtor()
1093 mac_ring_t *ring = NULL; in mac_start() local
1109 ring = (mac_ring_t *)mip->mi_default_tx_ring; in mac_start()
1110 if (ring->mr_state != MR_INUSE) { in mac_start()
1111 err = mac_start_ring(ring); in mac_start()
1129 if ((ring != NULL) && in mac_start()
1130 (ring->mr_state == MR_INUSE)) in mac_start()
1131 mac_stop_ring(ring); in mac_start()
1180 mac_ring_t *ring; in mac_stop() local
1182 ring = (mac_ring_t *)mip->mi_default_tx_ring; in mac_stop()
1183 if (ring->mr_state == MR_INUSE) { in mac_stop()
1184 mac_stop_ring(ring); in mac_stop()
1185 ring->mr_flag = 0; in mac_stop()
1451 mac_ring_t *ring; in mac_rx_group_unmark() local
1453 for (ring = grp->mrg_rings; ring != NULL; ring = ring->mr_next) in mac_rx_group_unmark()
1454 ring->mr_flag &= ~flag; in mac_rx_group_unmark()
1496 mac_ring_t *ring; in mac_hwrings_get() local
1522 for (ring = grp->mrg_rings; ring != NULL; ring = ring->mr_next, cnt++) { in mac_hwrings_get()
1524 hwrh[cnt] = (mac_ring_handle_t)ring; in mac_hwrings_get()
1541 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_getinfo() local
1542 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_getinfo()
1651 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_tx() local
1652 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_tx()
1654 ASSERT(ring->mr_type == MAC_RING_TYPE_TX && in mac_hwring_tx()
1655 ring->mr_state >= MR_INUSE); in mac_hwring_tx()
1665 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_getstat() local
1666 mac_ring_info_t *info = &ring->mr_info; in mac_hwring_getstat()
1708 mac_ring_t *ring = (mac_ring_t *)rh; in mac_hwring_set_default() local
1713 if (ring->mr_state != MR_INUSE) in mac_hwring_set_default()
2502 mac_ring_handle_t ring = arg; in mac_tx_flow_srs_wakeup() local
2505 mac_tx_srs_wakeup(flent->fe_tx_srs, ring); in mac_tx_flow_srs_wakeup()
2510 i_mac_tx_srs_notify(mac_impl_t *mip, mac_ring_handle_t ring) in i_mac_tx_srs_notify() argument
2537 mac_tx_srs_wakeup(mac_srs, ring); in i_mac_tx_srs_notify()
2548 (mac_tx_cookie_t)ring); in i_mac_tx_srs_notify()
2552 mac_tx_flow_srs_wakeup, ring); in i_mac_tx_srs_notify()
3661 mac_ring_t *ring; in mac_ring_alloc() local
3665 ring = mip->mi_ring_freelist; in mac_ring_alloc()
3666 mip->mi_ring_freelist = ring->mr_next; in mac_ring_alloc()
3667 bzero(ring, sizeof (mac_ring_t)); in mac_ring_alloc()
3671 ring = kmem_cache_alloc(mac_ring_cache, KM_SLEEP); in mac_ring_alloc()
3673 ASSERT((ring != NULL) && (ring->mr_state == MR_FREE)); in mac_ring_alloc()
3674 return (ring); in mac_ring_alloc()
3678 mac_ring_free(mac_impl_t *mip, mac_ring_t *ring) in mac_ring_free() argument
3680 ASSERT(ring->mr_state == MR_FREE); in mac_ring_free()
3683 ring->mr_state = MR_FREE; in mac_ring_free()
3684 ring->mr_flag = 0; in mac_ring_free()
3685 ring->mr_next = mip->mi_ring_freelist; in mac_ring_free()
3686 ring->mr_mip = NULL; in mac_ring_free()
3687 mip->mi_ring_freelist = ring; in mac_ring_free()
3688 mac_ring_stat_delete(ring); in mac_ring_free()
3697 mac_ring_t *ring = mip->mi_ring_freelist; in mac_ring_freeall() local
3698 while (ring != NULL) { in mac_ring_freeall()
3699 ring_next = ring->mr_next; in mac_ring_freeall()
3700 kmem_cache_free(mac_ring_cache, ring); in mac_ring_freeall()
3701 ring = ring_next; in mac_ring_freeall()
3708 mac_start_ring(mac_ring_t *ring) in mac_start_ring() argument
3712 ASSERT(ring->mr_state == MR_FREE); in mac_start_ring()
3714 if (ring->mr_start != NULL) { in mac_start_ring()
3715 rv = ring->mr_start(ring->mr_driver, ring->mr_gen_num); in mac_start_ring()
3720 ring->mr_state = MR_INUSE; in mac_start_ring()
3725 mac_stop_ring(mac_ring_t *ring) in mac_stop_ring() argument
3727 ASSERT(ring->mr_state == MR_INUSE); in mac_stop_ring()
3729 if (ring->mr_stop != NULL) in mac_stop_ring()
3730 ring->mr_stop(ring->mr_driver); in mac_stop_ring()
3732 ring->mr_state = MR_FREE; in mac_stop_ring()
3737 ring->mr_gen_num++; in mac_stop_ring()
3769 mac_ring_t *ring; in mac_start_group_and_rings() local
3776 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_start_group_and_rings()
3777 ASSERT(ring->mr_state == MR_FREE); in mac_start_group_and_rings()
3778 if ((rv = mac_start_ring(ring)) != 0) in mac_start_group_and_rings()
3780 ring->mr_classify_type = MAC_SW_CLASSIFIER; in mac_start_group_and_rings()
3793 mac_ring_t *ring; in mac_stop_group_and_rings() local
3795 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_stop_group_and_rings()
3796 if (ring->mr_state != MR_FREE) { in mac_stop_group_and_rings()
3797 mac_stop_ring(ring); in mac_stop_group_and_rings()
3798 ring->mr_flag = 0; in mac_stop_group_and_rings()
3799 ring->mr_classify_type = MAC_NO_CLASSIFIER; in mac_stop_group_and_rings()
3810 mac_ring_t *ring, *rnext; in mac_init_ring() local
3814 ring = mac_ring_alloc(mip); in mac_init_ring()
3827 ring->mr_index = group->mrg_index * group->mrg_info.mgi_count + index; in mac_init_ring()
3828 ring->mr_type = group->mrg_type; in mac_init_ring()
3829 ring->mr_gh = (mac_group_handle_t)group; in mac_init_ring()
3832 ring->mr_next = group->mrg_rings; in mac_init_ring()
3833 group->mrg_rings = ring; in mac_init_ring()
3840 index, &ring_info, (mac_ring_handle_t)ring); in mac_init_ring()
3842 ring->mr_info = ring_info; in mac_init_ring()
3853 rnext = ring->mr_next; in mac_init_ring()
3869 ring->mr_info.mri_intr.mi_ddi_shared = in mac_init_ring()
3882 if (rnext == NULL && ring->mr_type == MAC_RING_TYPE_TX) { in mac_init_ring()
3884 mip->mi_rx_group_count, ring); in mac_init_ring()
3889 ring->mr_state = MR_FREE; in mac_init_ring()
3890 ring->mr_flag = 0; in mac_init_ring()
3896 if (ring->mr_stat != NULL) { in mac_init_ring()
3897 ring->mr_mip = mip; in mac_init_ring()
3898 mac_ring_stat_create(ring); in mac_init_ring()
3901 return (ring); in mac_init_ring()
3930 mac_ring_t *ring; in mac_init_rings() local
4173 ring = group->mrg_rings; in mac_init_rings()
4180 if (ring == NULL) { in mac_init_rings()
4199 while ((ring->mr_index != 0) && (ring->mr_next != NULL)) in mac_init_rings()
4200 ring = ring->mr_next; in mac_init_rings()
4201 ASSERT(ring->mr_index == 0); in mac_init_rings()
4202 mip->mi_default_tx_ring = (mac_ring_handle_t)ring; in mac_init_rings()
4237 mac_ring_t *ring; in mac_compare_ddi_handle() local
4244 for (ring = group->mrg_rings; ring != NULL; in mac_compare_ddi_handle()
4245 ring = ring->mr_next) { in mac_compare_ddi_handle()
4246 if (ring == cring) in mac_compare_ddi_handle()
4248 if (ring->mr_info.mri_intr.mi_ddi_handle == in mac_compare_ddi_handle()
4251 ring->mr_index == 0 && in mac_compare_ddi_handle()
4252 !ring->mr_info.mri_intr.mi_ddi_shared) { in mac_compare_ddi_handle()
4253 ring->mr_info.mri_intr.mi_ddi_shared = in mac_compare_ddi_handle()
4306 mac_ring_t *ring; in mac_free_rings() local
4313 while ((ring = group->mrg_rings) != NULL) { in mac_free_rings()
4314 group->mrg_rings = ring->mr_next; in mac_free_rings()
4315 mac_ring_free(mip, ring); in mac_free_rings()
4395 mac_ring_t *ring = group->mrg_rings; in mac_find_ring() local
4397 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) in mac_find_ring()
4398 if (ring->mr_index == index) in mac_find_ring()
4401 return ((mac_ring_handle_t)ring); in mac_find_ring()
4413 i_mac_group_add_ring(mac_group_t *group, mac_ring_t *ring, int index) in i_mac_group_add_ring() argument
4417 boolean_t driver_call = (ring == NULL); in i_mac_group_add_ring()
4442 driver_call ? index : ring->mr_index) == NULL); in i_mac_group_add_ring()
4451 ring = mac_init_ring(mip, group, index, cap_rings); in i_mac_group_add_ring()
4464 ASSERT(ring->mr_gh == NULL); in i_mac_group_add_ring()
4471 ASSERT(ring->mr_state < MR_INUSE); in i_mac_group_add_ring()
4472 ASSERT(ring->mr_srs == NULL); in i_mac_group_add_ring()
4473 ASSERT(ring->mr_type == group->mrg_type); in i_mac_group_add_ring()
4483 ring->mr_driver, ring->mr_type); in i_mac_group_add_ring()
4489 ring->mr_next = group->mrg_rings; in i_mac_group_add_ring()
4490 group->mrg_rings = ring; in i_mac_group_add_ring()
4491 ring->mr_gh = (mac_group_handle_t)group; in i_mac_group_add_ring()
4505 if (ring->mr_state != MR_INUSE) { in i_mac_group_add_ring()
4506 if ((ret = mac_start_ring(ring)) != 0) { in i_mac_group_add_ring()
4509 ring->mr_driver, ring->mr_type); in i_mac_group_add_ring()
4512 group->mrg_rings = ring->mr_next; in i_mac_group_add_ring()
4514 ring->mr_gh = NULL; in i_mac_group_add_ring()
4517 mac_ring_free(mip, ring); in i_mac_group_add_ring()
4526 switch (ring->mr_type) { in i_mac_group_add_ring()
4549 ring->mr_classify_type = MAC_SW_CLASSIFIER; in i_mac_group_add_ring()
4561 if (ring->mr_state == MR_INUSE) in i_mac_group_add_ring()
4562 mac_stop_ring(ring); in i_mac_group_add_ring()
4563 ring->mr_flag = 0; in i_mac_group_add_ring()
4600 mac_tx_srs_add_ring(mac_srs, ring); in i_mac_group_add_ring()
4621 ring->mr_type == MAC_RING_TYPE_TX) { in i_mac_group_add_ring()
4622 mip->mi_default_tx_ring = (mac_ring_handle_t)ring; in i_mac_group_add_ring()
4625 MAC_RING_UNMARK(ring, MR_INCIPIENT); in i_mac_group_add_ring()
4636 i_mac_group_rem_ring(mac_group_t *group, mac_ring_t *ring, in i_mac_group_rem_ring() argument
4646 ring->mr_index) == (mac_ring_handle_t)ring); in i_mac_group_rem_ring()
4647 ASSERT((mac_group_t *)ring->mr_gh == group); in i_mac_group_rem_ring()
4648 ASSERT(ring->mr_type == group->mrg_type); in i_mac_group_rem_ring()
4650 if (ring->mr_state == MR_INUSE) in i_mac_group_rem_ring()
4651 mac_stop_ring(ring); in i_mac_group_rem_ring()
4652 switch (ring->mr_type) { in i_mac_group_rem_ring()
4664 if (ring->mr_srs != NULL) { in i_mac_group_rem_ring()
4665 mac_rx_srs_remove(ring->mr_srs); in i_mac_group_rem_ring()
4666 ring->mr_srs = NULL; in i_mac_group_rem_ring()
4707 (mac_ring_handle_t)ring) { in i_mac_group_rem_ring()
4710 (group->mrg_rings != ring) ? in i_mac_group_rem_ring()
4712 (mac_ring_handle_t)(ring->mr_next); in i_mac_group_rem_ring()
4729 sringp = srs_tx->st_soft_rings[ring->mr_index]; in i_mac_group_rem_ring()
4733 mac_tx_srs_del_ring(mac_srs, ring); in i_mac_group_rem_ring()
4737 ASSERT(ring != (mac_ring_t *)mip->mi_default_tx_ring); in i_mac_group_rem_ring()
4762 mac_tx_srs_get_soft_ring(mac_srs, ring)); in i_mac_group_rem_ring()
4763 mac_tx_srs_del_ring(mac_srs, ring); in i_mac_group_rem_ring()
4772 if (ring->mr_next == NULL) in i_mac_group_rem_ring()
4775 rem_ring = ring->mr_next; in i_mac_group_rem_ring()
4814 if (ring == group->mrg_rings) in i_mac_group_rem_ring()
4815 group->mrg_rings = ring->mr_next; in i_mac_group_rem_ring()
4820 while (pre->mr_next != ring) in i_mac_group_rem_ring()
4822 pre->mr_next = ring->mr_next; in i_mac_group_rem_ring()
4836 ring->mr_driver, ring->mr_type); in i_mac_group_rem_ring()
4840 ring->mr_gh = NULL; in i_mac_group_rem_ring()
4842 mac_ring_free(mip, ring); in i_mac_group_rem_ring()
4844 ring->mr_flag = 0; in i_mac_group_rem_ring()
4854 mac_group_mov_ring(mac_impl_t *mip, mac_group_t *d_group, mac_ring_t *ring) in mac_group_mov_ring() argument
4856 mac_group_t *s_group = (mac_group_t *)ring->mr_gh; in mac_group_mov_ring()
4870 i_mac_group_rem_ring(s_group, ring, B_FALSE); in mac_group_mov_ring()
4875 rv = i_mac_group_add_ring(d_group, ring, 0); in mac_group_mov_ring()
4881 if (i_mac_group_add_ring(s_group, ring, 0)) { in mac_group_mov_ring()
4883 mip->mi_name, (void *)ring); in mac_group_mov_ring()
5966 mac_ring_t *ring, mac_ring_t **rings, int nrings) in mac_reclaim_ring_from_grp() argument
5968 mac_group_t *group = (mac_group_t *)ring->mr_gh; in mac_reclaim_ring_from_grp()
6010 if (mac_group_mov_ring(mip, defgrp, ring) != 0) { in mac_reclaim_ring_from_grp()
6015 ASSERT(ring->mr_gh == (mac_group_handle_t)defgrp); in mac_reclaim_ring_from_grp()
6020 if (ring == (mac_ring_t *)mip->mi_default_tx_ring) { in mac_reclaim_ring_from_grp()
6134 if (mac_group_mov_ring(mip, defgrp, ring) != 0) { in mac_reclaim_ring_from_grp()
6141 ASSERT(ring->mr_gh == (mac_group_handle_t)defgrp); in mac_reclaim_ring_from_grp()
6157 mac_ring_t **rings, *ring; in i_mac_group_allocate_rings() local
6183 ring = rings[i]; in i_mac_group_allocate_rings()
6184 if (ring->mr_gh != (mac_group_handle_t)src_group || in i_mac_group_allocate_rings()
6185 ring == (mac_ring_t *)mip->mi_default_tx_ring) { in i_mac_group_allocate_rings()
6187 ring, rings, nrings) != 0) { in i_mac_group_allocate_rings()
6205 for (ring = src_group->mrg_rings; ring != NULL; in i_mac_group_allocate_rings()
6206 ring = ring->mr_next) { in i_mac_group_allocate_rings()
6208 ring->mr_index == 0) { in i_mac_group_allocate_rings()
6212 ring == (mac_ring_t *)mip->mi_default_tx_ring) { in i_mac_group_allocate_rings()
6215 rings[i++] = ring; in i_mac_group_allocate_rings()
6219 ASSERT(ring != NULL); in i_mac_group_allocate_rings()
6635 mac_ring_t *ring; in mac_release_rx_group() local
6646 for (ring = group->mrg_rings; ring != NULL; ring = ring->mr_next) { in mac_release_rx_group()
6647 if (ring->mr_classify_type == MAC_HW_CLASSIFIER) { in mac_release_rx_group()
6653 ring->mr_srs = NULL; in mac_release_rx_group()
6656 ring->mr_state == MR_INUSE); in mac_release_rx_group()
6657 if (ring->mr_state == MR_INUSE) { in mac_release_rx_group()
6658 mac_stop_ring(ring); in mac_release_rx_group()
6659 ring->mr_flag = 0; in mac_release_rx_group()
6670 mac_ring_t *ring; in mac_release_rx_group() local
6676 while ((ring = group->mrg_rings) != NULL) { in mac_release_rx_group()
6678 ring); in mac_release_rx_group()
7120 mac_ring_t *ring; in mac_release_tx_group() local
7127 for (ring = grp->mrg_rings; ring != NULL; in mac_release_tx_group()
7128 ring = ring->mr_next) { in mac_release_tx_group()
7129 ASSERT(mac_tx_srs_ring_present(srs, ring)); in mac_release_tx_group()
7132 mac_tx_srs_get_soft_ring(srs, ring)); in mac_release_tx_group()
7133 mac_tx_srs_del_ring(srs, ring); in mac_release_tx_group()
7146 while ((ring = grp->mrg_rings) != NULL) in mac_release_tx_group()
7147 (void) mac_group_mov_ring(mip, defgrp, ring); in mac_release_tx_group()
7163 mac_ring_t *ring; in mac_tx_dismantle_soft_rings() local
7175 for (ring = fgrp->mrg_rings; ring != NULL; in mac_tx_dismantle_soft_rings()
7176 ring = ring->mr_next) { in mac_tx_dismantle_soft_rings()
7177 ASSERT(mac_tx_srs_ring_present(tx_srs, ring)); in mac_tx_dismantle_soft_rings()
7180 ring)); in mac_tx_dismantle_soft_rings()
7181 mac_tx_srs_del_ring(tx_srs, ring); in mac_tx_dismantle_soft_rings()
7245 mac_ring_t *ring; in mac_tx_switch_group() local
7259 ring = fgrp->mrg_rings; in mac_tx_switch_group()
7261 if (ring->mr_state == MR_INUSE && in mac_tx_switch_group()
7262 ring != in mac_tx_switch_group()
7264 mac_stop_ring(ring); in mac_tx_switch_group()
7265 ring->mr_flag = 0; in mac_tx_switch_group()
7267 ring = ring->mr_next; in mac_tx_switch_group()
7513 mac_ring_t *ring; in mac_group_ring_modify() local
7554 ring = group->mrg_rings; in mac_group_ring_modify()
7559 next = ring->mr_next; in mac_group_ring_modify()
7560 rv = mac_group_mov_ring(mip, defgrp, ring); in mac_group_ring_modify()
7569 rings[j++] = ring; in mac_group_ring_modify()
7570 ring = next; in mac_group_ring_modify()