Lines Matching refs:kring

430 generic_netmap_tx_clean(struct netmap_kring *kring)  in generic_netmap_tx_clean()  argument
432 u_int const lim = kring->nkr_num_slots - 1; in generic_netmap_tx_clean()
433 u_int nm_i = nm_next(kring->nr_hwtail, lim); in generic_netmap_tx_clean()
434 u_int hwcur = kring->nr_hwcur; in generic_netmap_tx_clean()
436 struct mbuf **tx_pool = kring->tx_pool; in generic_netmap_tx_clean()
443 tx_pool[nm_i] = m = netmap_get_mbuf(NETMAP_BUF_SIZE(kring->na)); in generic_netmap_tx_clean()
472 kring->nr_hwtail = nm_prev(nm_i, lim); in generic_netmap_tx_clean()
473 ND("tx completed [%d] -> hwtail %d", n, kring->nr_hwtail); in generic_netmap_tx_clean()
485 generic_tx_event_middle(struct netmap_kring *kring, u_int hwcur) in generic_tx_event_middle() argument
487 u_int n = kring->nkr_num_slots; in generic_tx_event_middle()
488 u_int ntc = nm_next(kring->nr_hwtail, n-1); in generic_tx_event_middle()
515 generic_set_tx_event(struct netmap_kring *kring, u_int hwcur) in generic_set_tx_event() argument
520 if (nm_next(kring->nr_hwtail, kring->nkr_num_slots -1) == hwcur) { in generic_set_tx_event()
523 e = generic_tx_event_middle(kring, hwcur); in generic_set_tx_event()
525 m = kring->tx_pool[e]; in generic_set_tx_event()
532 kring->tx_pool[e] = NULL; in generic_set_tx_event()
550 generic_netmap_txsync(struct netmap_kring *kring, int flags) in generic_netmap_txsync() argument
552 struct netmap_adapter *na = kring->na; in generic_netmap_txsync()
554 struct netmap_ring *ring = kring->ring; in generic_netmap_txsync()
556 u_int const lim = kring->nkr_num_slots - 1; in generic_netmap_txsync()
557 u_int const head = kring->rhead; in generic_netmap_txsync()
558 u_int ring_nr = kring->ring_id; in generic_netmap_txsync()
569 nm_i = kring->nr_hwcur; in generic_netmap_txsync()
583 m = kring->tx_pool[nm_i]; in generic_netmap_txsync()
586 kring->tx_pool[nm_i] = m = netmap_get_mbuf(NETMAP_BUF_SIZE(na)); in generic_netmap_txsync()
602 tx_ret, nm_i, head, kring->nr_hwtail); in generic_netmap_txsync()
617 generic_set_tx_event(kring, nm_i); in generic_netmap_txsync()
618 if (generic_netmap_tx_clean(kring)) { /* space now available */ in generic_netmap_txsync()
630 kring->nr_hwcur = nm_i; /* not head, we could break early */ in generic_netmap_txsync()
636 if (flags & NAF_FORCE_RECLAIM || nm_kr_txempty(kring)) { in generic_netmap_txsync()
642 generic_set_tx_event(kring, nm_i); in generic_netmap_txsync()
644 ND("tx #%d, hwtail = %d", n, kring->nr_hwtail); in generic_netmap_txsync()
646 generic_netmap_tx_clean(kring); in generic_netmap_txsync()
648 nm_txsync_finalize(kring); in generic_netmap_txsync()
707 generic_netmap_rxsync(struct netmap_kring *kring, int flags) in generic_netmap_rxsync() argument
709 struct netmap_ring *ring = kring->ring; in generic_netmap_rxsync()
710 struct netmap_adapter *na = kring->na; in generic_netmap_rxsync()
713 u_int const lim = kring->nkr_num_slots - 1; in generic_netmap_rxsync()
714 u_int const head = nm_rxsync_prologue(kring); in generic_netmap_rxsync()
715 int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR; in generic_netmap_rxsync()
718 return netmap_ring_reinit(kring); in generic_netmap_rxsync()
727 uint16_t slot_flags = kring->nkr_slot_flags; in generic_netmap_rxsync()
728 u_int stop_i = nm_prev(kring->nr_hwcur, lim); in generic_netmap_rxsync()
730 nm_i = kring->nr_hwtail; /* first empty slot in the receive ring */ in generic_netmap_rxsync()
738 return netmap_ring_reinit(kring); in generic_netmap_rxsync()
745 m = mbq_safe_dequeue(&kring->rx_queue); in generic_netmap_rxsync()
756 kring->nr_hwtail = nm_i; in generic_netmap_rxsync()
759 kring->nr_kflags &= ~NKR_PENDINTR; in generic_netmap_rxsync()
766 nm_i = kring->nr_hwcur; in generic_netmap_rxsync()
775 kring->nr_hwcur = head; in generic_netmap_rxsync()
778 nm_rxsync_finalize(kring); in generic_netmap_rxsync()