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