Lines Matching refs:kring
181 * All information is in the kring.
182 * Userspace wants to send packets up to the one before kring->rhead,
183 * kernel knows kring->nr_hwcur is the first unsent packet.
193 ixgbe_netmap_txsync(struct netmap_kring *kring, int flags)
195 struct netmap_adapter *na = kring->na;
197 struct netmap_ring *ring = kring->ring;
201 u_int const lim = kring->nkr_num_slots - 1;
202 u_int const head = kring->rhead;
207 u_int report_frequency = kring->nkr_num_slots >> 1;
211 struct tx_ring *txr = &sc->tx_rings[kring->ring_id];
225 * nm_i = kring->nr_hwcur
228 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
230 * In this driver kring->nkr_hwofs >= 0, but for other
235 * If we have packets to send (kring->nr_hwcur != kring->rhead)
252 nm_i = kring->nr_hwcur;
254 nic_i = netmap_idx_k2n(kring, nm_i);
298 kring->nr_hwcur = head;
315 } else if (!nm_kr_txempty(kring)) {
333 nic_i = (nic_i < kring->nkr_num_slots / 4 ||
334 nic_i >= kring->nkr_num_slots*3/4) ?
349 nic_i = IXGBE_READ_REG(&sc->hw, IXGBE_TDH(kring->ring_id));
350 if (nic_i >= kring->nkr_num_slots) { /* XXX can it happen ? */
354 nic_i -= kring->nkr_num_slots;
359 kring->nr_hwtail = nm_prev(netmap_idx_n2k(kring, nic_i), lim);
373 * On call, kring->rhead is the first packet that userspace wants
374 * to keep, and kring->rcur is the wakeup point.
375 * The kernel has previously reported packets up to kring->rtail.
381 ixgbe_netmap_rxsync(struct netmap_kring *kring, int flags)
383 struct netmap_adapter *na = kring->na;
385 struct netmap_ring *ring = kring->ring;
389 u_int const lim = kring->nkr_num_slots - 1;
390 u_int const head = kring->rhead;
391 int force_update = (flags & NAF_FORCE_READ) || kring->nr_kflags & NKR_PENDINTR;
395 struct rx_ring *rxr = &sc->rx_rings[kring->ring_id];
398 return netmap_ring_reinit(kring);
413 * nm_i = kring->nr_hwtail (previous)
415 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
422 nic_i = rxr->next_to_check; // or also k2n(kring->nr_hwtail)
423 nm_i = netmap_idx_n2k(kring, nic_i);
445 kring->nr_hwtail = nm_i;
447 kring->nr_kflags &= ~NKR_PENDINTR;
452 * (kring->nr_hwcur to kring->rhead excluded),
456 * nm_i == (nic_i + kring->nkr_hwofs) % ring_size
458 nm_i = kring->nr_hwcur;
460 nic_i = netmap_idx_k2n(kring, nm_i);
484 kring->nr_hwcur = head;
499 return netmap_ring_reinit(kring);