Lines Matching refs:kring

159  * All information is in the kring.
160 * Userspace wants to send packets up to the one before kring->rhead,
161 * kernel knows kring->nr_hwcur is the first unsent packet.
171 ixgbe_netmap_txsync(struct netmap_kring *kring, int flags)
173 struct netmap_adapter *na = kring->na;
175 struct netmap_ring *ring = kring->ring;
179 u_int const lim = kring->nkr_num_slots - 1;
180 u_int const head = kring->rhead;
185 u_int report_frequency = kring->nkr_num_slots >> 1;
189 struct tx_ring *txr = &adapter->tx_rings[kring->ring_id];
203 * nm_i = kring->nr_hwcur
206 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
208 * In this driver kring->nkr_hwofs >= 0, but for other
213 * If we have packets to send (kring->nr_hwcur != kring->rhead)
230 nm_i = kring->nr_hwcur;
232 nic_i = netmap_idx_k2n(kring, nm_i);
276 kring->nr_hwcur = head;
293 } else if (!nm_kr_txempty(kring)) {
311 nic_i = (nic_i < kring->nkr_num_slots / 4 ||
312 nic_i >= kring->nkr_num_slots*3/4) ?
328 IXGBE_VFTDH(kring->ring_id) : IXGBE_TDH(kring->ring_id));
329 if (unlikely(nic_i >= kring->nkr_num_slots)) {
331 nic_i -= kring->nkr_num_slots;
336 kring->nr_hwtail = nm_prev(netmap_idx_n2k(kring, nic_i), lim);
350 * On call, kring->rhead is the first packet that userspace wants
351 * to keep, and kring->rcur is the wakeup point.
352 * The kernel has previously reported packets up to kring->rtail.
358 ixgbe_netmap_rxsync(struct netmap_kring *kring, int flags)
360 struct netmap_adapter *na = kring->na;
362 struct netmap_ring *ring = kring->ring;
366 u_int const lim = kring->nkr_num_slots - 1;
367 u_int const head = kring->rhead;
368 int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR;
372 struct rx_ring *rxr = &adapter->rx_rings[kring->ring_id];
375 return netmap_ring_reinit(kring);
390 * nm_i = kring->nr_hwtail (previous)
392 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
399 nic_i = rxr->next_to_check; // or also k2n(kring->nr_hwtail)
400 nm_i = netmap_idx_n2k(kring, nic_i);
422 kring->nr_hwtail = nm_i;
424 kring->nr_kflags &= ~NKR_PENDINTR;
429 * (kring->nr_hwcur to kring->rhead excluded),
433 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
435 nm_i = kring->nr_hwcur;
437 nic_i = netmap_idx_k2n(kring, nm_i);
461 kring->nr_hwcur = head;
476 return netmap_ring_reinit(kring);