Lines Matching refs:kring

193 	struct netmap_kring **kring;
197 kring = na->tx_rings;
199 if (kring[i]->nkr_ft) {
200 nm_os_free(kring[i]->nkr_ft);
201 kring[i]->nkr_ft = NULL; /* protect from freeing twice */
214 struct netmap_kring **kring;
224 kring = na->tx_rings;
240 kring[i]->nkr_ft = ft;
476 * Grab packets from a kring, move them into the ft structure
482 nm_vale_preflush(struct netmap_kring *kring, u_int end)
485 (struct netmap_vp_adapter*)kring->na;
486 struct netmap_ring *ring = kring->ring;
488 u_int ring_nr = kring->ring_id;
489 u_int j = kring->nr_hwcur, lim = kring->nkr_num_slots - 1;
504 ft = kring->nkr_ft;
521 (void *)(uintptr_t)slot->ptr : NMB_O(kring, slot);
523 slot->len > NETMAP_BUF_SIZE(&na->up) - nm_get_offset(kring, slot))) {
526 kring->name, j, ft[ft_i].ft_len);
686 nm_prerr("invalid kring, cur %d tail %d lease %d lease_idx %d lim %d",
697 /* make a lease on the kring for N positions. return the
726 nm_prerr("invalid kring %s, cur %d tail %d lease %d lease_idx %d lim %d",
829 struct netmap_kring *kring;
907 kring = dst_na->up.rx_rings[dst_nr];
908 ring = kring->ring;
910 if (unlikely(ring == NULL || kring->nr_mode != NKR_NETMAP_ON))
912 lim = kring->nkr_num_slots - 1;
918 kring->nm_notify(kring, NAF_FORCE_RECLAIM);
928 mtx_lock(&kring->q_lock);
929 if (kring->nkr_stopped) {
930 mtx_unlock(&kring->q_lock);
933 my_start = j = kring->nkr_hwlease;
934 howmany = nm_kr_space(kring, 1);
937 lease_idx = nm_kr_lease(kring, howmany, 1);
938 mtx_unlock(&kring->q_lock);
983 dstoff = nm_get_offset(kring, slot);
1003 dstoff = nm_get_offset(kring, slot);
1017 nm_write_offset(kring, slot, dstoff);
1030 uint32_t *p = kring->nkr_leases; /* shorthand */
1034 mtx_lock(&kring->q_lock);
1041 if (nm_next(lease_idx, lim) == kring->nkr_lease_idx) {
1044 kring->nkr_hwlease = j;
1055 update_pos = kring->nr_hwtail;
1062 while (lease_idx != kring->nkr_lease_idx &&
1072 kring->nr_hwtail = j;
1074 mtx_unlock(&kring->q_lock);
1075 kring->nm_notify(kring, 0);
1089 mtx_unlock(&kring->q_lock);
1102 netmap_vale_vp_txsync(struct netmap_kring *kring, int flags)
1105 (struct netmap_vp_adapter *)kring->na;
1107 u_int const lim = kring->nkr_num_slots - 1;
1108 u_int const head = kring->rhead;
1121 done = nm_vale_preflush(kring, head);
1124 nm_prerr("early break at %d/ %d, tail %d", done, head, kring->nr_hwtail);
1128 kring->nr_hwcur = done;
1129 kring->nr_hwtail = nm_prev(done, lim);
1131 nm_prinf("%s ring %d flags %d", na->up.name, kring->ring_id, flags);