Lines Matching refs:ring

89 viona_worker_rx(viona_vring_t *ring, viona_link_t *link)  in viona_worker_rx()  argument
91 (void) thread_vsetname(curthread, "viona_rx_%p", ring); in viona_worker_rx()
93 ASSERT(MUTEX_HELD(&ring->vr_lock)); in viona_worker_rx()
94 ASSERT3U(ring->vr_state, ==, VRS_RUN); in viona_worker_rx()
96 viona_ring_disable_notify(ring); in viona_worker_rx()
99 if (vmm_drv_lease_expired(ring->vr_lease)) { in viona_worker_rx()
107 ring->vr_state_flags |= VRSF_RENEW; in viona_worker_rx()
108 mutex_exit(&ring->vr_lock); in viona_worker_rx()
110 mutex_enter(&ring->vr_lock); in viona_worker_rx()
112 if (!viona_ring_lease_renew(ring)) { in viona_worker_rx()
115 ring->vr_state_flags &= ~VRSF_RENEW; in viona_worker_rx()
124 (void) cv_wait_sig(&ring->vr_cv, &ring->vr_lock); in viona_worker_rx()
125 } while (!vring_need_bail(ring)); in viona_worker_rx()
127 ring->vr_state = VRS_STOP; in viona_worker_rx()
134 mutex_exit(&ring->vr_lock); in viona_worker_rx()
136 mutex_enter(&ring->vr_lock); in viona_worker_rx()
142 if (ring->vr_lease != NULL) { in viona_worker_rx()
143 viona_ring_enable_notify(ring); in viona_worker_rx()
206 viona_recv_plain(viona_vring_t *ring, const mblk_t *mp, size_t msz) in viona_recv_plain() argument
216 const uint32_t features = ring->vr_link->l_features; in viona_recv_plain()
221 n = vq_popchain(ring, iov, VTNET_MAXSEGS, &cookie, &pages); in viona_recv_plain()
260 VIONA_PROBE5(too_short, viona_vring_t *, ring, in viona_recv_plain()
263 VIONA_RING_STAT_INCR(ring, too_short); in viona_recv_plain()
290 vq_pushchain(ring, copied, cookie); in viona_recv_plain()
294 VIONA_PROBE3(bad_rx_frame, viona_vring_t *, ring, uint16_t, cookie, in viona_recv_plain()
296 VIONA_RING_STAT_INCR(ring, bad_rx_frame); in viona_recv_plain()
299 vq_pushchain(ring, MAX(copied, MIN_BUF_SIZE + hdr_sz), cookie); in viona_recv_plain()
304 viona_recv_merged(viona_vring_t *ring, const mblk_t *mp, size_t msz) in viona_recv_merged() argument
316 const uint32_t features = ring->vr_link->l_features; in viona_recv_merged()
320 n = vq_popchain(ring, iov, VTNET_MAXSEGS, &cookie, &hdr_pages); in viona_recv_merged()
323 VIONA_PROBE2(no_space, viona_vring_t *, ring, mblk_t *, mp); in viona_recv_merged()
324 VIONA_RING_STAT_INCR(ring, no_space); in viona_recv_merged()
393 n = vq_popchain(ring, iov, VTNET_MAXSEGS, &cookie, in viona_recv_merged()
424 VIONA_PROBE5(too_short, viona_vring_t *, ring, in viona_recv_merged()
427 VIONA_RING_STAT_INCR(ring, too_short); in viona_recv_merged()
455 VIONA_PROBE3(rx_merge_underrun, viona_vring_t *, ring, in viona_recv_merged()
457 VIONA_RING_STAT_INCR(ring, rx_merge_underrun); in viona_recv_merged()
461 VIONA_PROBE3(rx_merge_overrun, viona_vring_t *, ring, in viona_recv_merged()
463 VIONA_RING_STAT_INCR(ring, rx_merge_overrun); in viona_recv_merged()
467 VIONA_PROBE3(bad_rx_frame, viona_vring_t *, ring, in viona_recv_merged()
469 VIONA_RING_STAT_INCR(ring, bad_rx_frame); in viona_recv_merged()
478 vq_pushchain_many(ring, buf_idx + 1, uelem); in viona_recv_merged()
483 viona_rx_common(viona_vring_t *ring, mblk_t *mp, boolean_t is_loopback) in viona_rx_common() argument
485 viona_link_t *link = ring->vr_link; in viona_rx_common()
510 viona_hook(link, ring, &mp, B_FALSE) != 0) { in viona_rx_common()
556 VIONA_PROBE3(rx_pad_short, viona_vring_t *, ring, in viona_rx_common()
558 VIONA_RING_STAT_INCR(ring, rx_pad_short); in viona_rx_common()
566 err = viona_recv_merged(ring, mp, size); in viona_rx_common()
568 err = viona_recv_plain(ring, mp, size); in viona_rx_common()
614 viona_intr_ring(ring, B_FALSE); in viona_rx_common()
638 viona_vring_t *ring = (viona_vring_t *)arg; in viona_rx_classified() local
641 if (ring->vr_state != VRS_RUN || in viona_rx_classified()
642 (ring->vr_state_flags & VRSF_RENEW) != 0) { in viona_rx_classified()
647 viona_rx_common(ring, mp, is_loopback); in viona_rx_classified()
654 viona_vring_t *ring = (viona_vring_t *)arg; in viona_rx_mcast() local
655 mac_handle_t mh = ring->vr_link->l_mh; in viona_rx_mcast()
660 if (ring->vr_state != VRS_RUN || in viona_rx_mcast()
661 (ring->vr_state_flags & VRSF_RENEW) != 0) { in viona_rx_mcast()
702 VIONA_RING_STAT_INCR(ring, rx_mcast_check); in viona_rx_mcast()
718 viona_rx_common(ring, mp_mcast_only, is_loopback); in viona_rx_mcast()
725 viona_vring_t *ring = &link->l_vrings[VIONA_VQ_RX]; in viona_rx_set() local
735 mac_rx_set(link->l_mch, viona_rx_classified, ring); in viona_rx_set()
737 viona_rx_mcast, ring, &link->l_mph, in viona_rx_set()
744 viona_rx_classified, ring, &link->l_mph, in viona_rx_set()
753 mac_rx_set(link->l_mch, viona_rx_classified, ring); in viona_rx_set()
758 mac_rx_set(link->l_mch, viona_rx_classified, ring); in viona_rx_set()