Lines Matching defs:kring

346 	struct netmap_kring *kring;
350 kring = na->tx_rings;
352 if (kring[i].nkr_ft) {
353 free(kring[i].nkr_ft, M_DEVBUF);
354 kring[i].nkr_ft = NULL; /* protect from freeing twice */
367 struct netmap_kring *kring;
377 kring = na->tx_rings;
393 kring[i].nkr_ft = ft;
1031 * Grab packets from a kring, move them into the ft structure
1037 nm_bdg_preflush(struct netmap_kring *kring, u_int end)
1040 (struct netmap_vp_adapter*)kring->na;
1041 struct netmap_ring *ring = kring->ring;
1043 u_int ring_nr = kring->ring_id;
1044 u_int j = kring->nr_hwcur, lim = kring->nkr_num_slots - 1;
1059 ft = kring->nkr_ft;
1076 kring->name, j, ft[ft_i].ft_len);
1264 D("invalid kring, cur %d tail %d lease %d lease_idx %d lim %d", k->nr_hwcur, k->nr_hwtail, k->nkr_hwlease,
1274 /* make a lease on the kring for N positions. return the
1300 D("invalid kring %s, cur %d tail %d lease %d lease_idx %d lim %d",
1396 struct netmap_kring *kring;
1470 kring = &dst_na->up.rx_rings[dst_nr];
1471 ring = kring->ring;
1472 lim = kring->nkr_num_slots - 1;
1488 mtx_lock(&kring->q_lock);
1489 if (kring->nkr_stopped) {
1490 mtx_unlock(&kring->q_lock);
1493 my_start = j = kring->nkr_hwlease;
1494 howmany = nm_kr_space(kring, 1);
1497 lease_idx = nm_kr_lease(kring, howmany, 1);
1498 mtx_unlock(&kring->q_lock);
1574 uint32_t *p = kring->nkr_leases; /* shorthand */
1578 mtx_lock(&kring->q_lock);
1585 if (nm_next(lease_idx, lim) == kring->nkr_lease_idx) {
1588 kring->nkr_hwlease = j;
1599 update_pos = kring->nr_hwtail;
1606 while (lease_idx != kring->nkr_lease_idx &&
1616 kring->nr_hwtail = j;
1618 mtx_unlock(&kring->q_lock);
1633 mtx_unlock(&kring->q_lock);
1646 netmap_vp_txsync(struct netmap_kring *kring, int flags)
1649 (struct netmap_vp_adapter *)kring->na;
1651 u_int const lim = kring->nkr_num_slots - 1;
1652 u_int const cur = kring->rcur;
1665 done = nm_bdg_preflush(kring, cur);
1668 D("early break at %d/ %d, tail %d", done, cur, kring->nr_hwtail);
1672 kring->nr_hwcur = done;
1673 kring->nr_hwtail = nm_prev(done, lim);
1674 nm_txsync_finalize(kring);
1676 D("%s ring %d flags %d", na->up.name, kring->ring_id, flags);
1685 netmap_vp_rxsync_locked(struct netmap_kring *kring, int flags)
1687 struct netmap_adapter *na = kring->na;
1688 struct netmap_ring *ring = kring->ring;
1689 u_int nm_i, lim = kring->nkr_num_slots - 1;
1690 u_int head = nm_rxsync_prologue(kring);
1695 n = netmap_ring_reinit(kring);
1700 /* actually nothing to do here, they are already in the kring */
1703 nm_i = kring->nr_hwcur;
1710 if (addr == NETMAP_BUF_BASE(kring->na)) { /* bad buf */
1717 kring->nr_hwcur = head;
1721 nm_rxsync_finalize(kring);
1735 netmap_vp_rxsync(struct netmap_kring *kring, int flags)
1739 mtx_lock(&kring->q_lock);
1740 n = netmap_vp_rxsync_locked(kring, flags);
1741 mtx_unlock(&kring->q_lock);
1908 * and head/cur/tail are set from the kring as needed
1920 struct netmap_kring *kring, *bkring;
1951 kring = &na->rx_rings[ring_nr];
1952 ring = kring->ring;
1955 if (nm_kr_tryget(kring))
1967 * the info from the rx kring.
1970 D("%s head %d cur %d tail %d (kring %d %d %d)", na->name,
1972 kring->rhead, kring->rcur, kring->rtail);
1974 ring->head = kring->rhead;
1975 ring->cur = kring->rcur;
1976 ring->tail = kring->rtail;
1986 error = kring->nm_sync(kring, 0);
1989 if (kring->nr_hwcur == kring->nr_hwtail && netmap_verbose) {
2010 ring->head = ring->cur = kring->nr_hwtail;
2011 ring->tail = kring->rtail;
2014 error = kring->nm_sync(kring, 0);
2019 kring->nr_hwcur = kring->nr_hwtail;
2020 nm_rxsync_finalize(kring);
2024 nm_kr_put(kring);
2067 * of the kring->ring pointers
2149 * now the kring->ring pointers have not been initialized yet
2188 struct netmap_kring *kring, *hw_kring;
2196 kring = &na->rx_rings[ring_n];
2198 ring = kring->ring;
2199 lim = kring->nkr_num_slots - 1;
2203 mtx_lock(&kring->q_lock);
2205 netmap_vp_rxsync_locked(kring, flags);
2208 kring->nr_hwcur, kring->nr_hwtail, kring->nkr_hwlease,
2225 ring->tail = kring->rtail; /* restore saved value of tail, for safety */
2228 netmap_vp_rxsync_locked(kring, flags);
2231 kring->nr_hwcur, kring->nr_hwtail, kring->nkr_hwlease,
2234 mtx_unlock(&kring->q_lock);