Lines Matching defs:kring

516 	struct netmap_kring *kring;
528 kring = na->rx_rings[nm_rxq->nid];
529 if ((nm_state != NM_OFF && !nm_kring_pending_off(kring)) ||
530 (nm_state == NM_OFF && nm_kring_pending_on(kring))) {
547 kring = na->rx_rings[nm_rxq->nid];
549 !nm_kring_pending_off(kring)) ||
551 nm_kring_pending_on(kring))) {
584 struct netmap_kring *kring;
597 kring = na->rx_rings[nm_rxq->nid];
598 if ((nm_state != NM_OFF && !nm_kring_pending_off(kring)) ||
599 (nm_state == NM_OFF && nm_kring_pending_on(kring))) {
629 kring = na->rx_rings[nm_rxq[j].nid];
631 !nm_kring_pending_on(kring)) ||
633 nm_kring_pending_off(kring))) {
647 kring = na->rx_rings[nm_rxq[j].nid];
649 !nm_kring_pending_on(kring)) ||
651 nm_kring_pending_off(kring))) {
691 struct netmap_kring *kring;
729 kring = na->rx_rings[nm_rxq->nid];
730 if (!nm_kring_pending_on(kring))
759 kring = na->tx_rings[nm_txq->nid];
760 if (!nm_kring_pending_on(kring))
780 struct netmap_kring *kring;
801 kring = na->tx_rings[nm_txq->nid];
802 if (!nm_kring_pending_off(kring))
814 kring->rhead = kring->rcur = kring->nr_hwcur = 0;
815 kring->rtail = kring->nr_hwtail = kring->nkr_num_slots - 1;
820 kring = na->rx_rings[nm_rxq->nid];
821 if (nm_state != NM_OFF && !nm_kring_pending_off(kring))
823 if (!nm_kring_pending_off(kring))
840 kring->rhead = kring->rcur = kring->nr_hwcur = 0;
841 kring->rtail = kring->nr_hwtail = 0;
967 struct netmap_kring *kring, int npkt, int npkt_remaining)
969 struct netmap_ring *ring = kring->ring;
971 const u_int lim = kring->nkr_num_slots - 1;
992 slot = &ring->slot[kring->nr_hwcur];
993 PNMB(kring->na, slot, &ba);
1006 usgl->addr0 = htobe64(ba + nm_get_offset(kring, slot));
1012 kring->nr_hwcur = nm_next(kring->nr_hwcur, lim);
1104 cxgbe_netmap_txsync(struct netmap_kring *kring, int flags)
1106 struct netmap_adapter *na = kring->na;
1110 struct sge_nm_txq *nm_txq = &sc->sge.nm_txq[vi->first_nm_txq + kring->ring_id];
1111 const u_int head = kring->rhead;
1116 * Tx was at kring->nr_hwcur last time around and now we need to advance
1117 * to kring->rhead. Note that the driver's pidx moves independent of
1118 * netmap's kring->nr_hwcur (pidx counts descriptors and the relation
1122 npkt_remaining = head >= kring->nr_hwcur ? head - kring->nr_hwcur :
1123 kring->nkr_num_slots - kring->nr_hwcur + head;
1145 /* Send n packets and update nm_txq->pidx and kring->nr_hwcur */
1147 cxgbe_nm_tx(sc, nm_txq, kring, n, npkt_remaining);
1150 MPASS(kring->nr_hwcur == head);
1156 if (reclaimed || flags & NAF_FORCE_RECLAIM || nm_kr_txempty(kring)) {
1158 kring->nr_hwtail += reclaimed;
1159 if (kring->nr_hwtail >= kring->nkr_num_slots)
1160 kring->nr_hwtail -= kring->nkr_num_slots;
1167 cxgbe_netmap_rxsync(struct netmap_kring *kring, int flags)
1169 struct netmap_adapter *na = kring->na;
1170 struct netmap_ring *ring = kring->ring;
1174 struct sge_nm_rxq *nm_rxq = &sc->sge.nm_rxq[vi->first_nm_rxq + kring->ring_id];
1175 u_int const head = kring->rhead;
1177 int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR;
1183 kring->nr_hwtail = atomic_load_acq_32(&nm_rxq->fl_cidx);
1184 kring->nr_kflags &= ~NKR_PENDINTR;
1194 /* Userspace done with buffers from kring->nr_hwcur to head */
1195 n = head >= kring->nr_hwcur ? head - kring->nr_hwcur :
1196 kring->nkr_num_slots - kring->nr_hwcur + head;
1212 IDXINCR(kring->nr_hwcur, n, kring->nkr_num_slots);
1333 struct netmap_kring *kring = na->rx_rings[nm_rxq->nid];
1334 struct netmap_ring *ring = kring->ring;
1376 nm_write_offset(kring, &ring->slot[fl_cidx],