hn_tx_ring
struct hn_tx_ring *txr = &sc->hn_tx_ring[i];
hn_get_txswq_depth(const struct hn_tx_ring *txr)
((sc)->hn_tx_ring[0].hn_csum_assist & HN_CSUM_IP_MASK)
((sc)->hn_tx_ring[0].hn_csum_assist & HN_CSUM_IP6_MASK)
struct hn_tx_ring *txr;
int qdepth = hn_get_txswq_depth(&sc->hn_tx_ring[0]);
if_sethwassist(ifp, sc->hn_tx_ring[0].hn_csum_assist);
hn_txdesc_dmamap_load(struct hn_tx_ring *txr, struct hn_txdesc *txd,
hn_txdesc_put(struct hn_tx_ring *txr, struct hn_txdesc *txd)
hn_txdesc_get(struct hn_tx_ring *txr)
hn_tx_ring_pending(struct hn_tx_ring *txr)
hn_txeof(struct hn_tx_ring *txr)
struct hn_tx_ring *txr;
hn_chan_rollup(struct hn_rx_ring *rxr, struct hn_tx_ring *txr)
hn_flush_txagg(if_t ifp, struct hn_tx_ring *txr)
hn_try_txagg(if_t ifp, struct hn_tx_ring *txr, struct hn_txdesc *txd,
hn_encap(if_t ifp, struct hn_tx_ring *txr, struct hn_txdesc *txd,
hn_txpkt(if_t ifp, struct hn_tx_ring *txr, struct hn_txdesc *txd)
struct hn_tx_ring *);
if (sc->hn_tx_ring[0].hn_chim_size > sc->hn_chim_szmax)
sc->hn_tx_ring[i].hn_oactive = 0;
static void hn_tx_ring_destroy(struct hn_tx_ring *);
sc->hn_tx_ring[i].hn_oactive = 0;
static void hn_txdesc_gc(struct hn_tx_ring *,
static int hn_encap(if_t, struct hn_tx_ring *,
static int hn_txpkt(if_t, struct hn_tx_ring *,
chim_size = sc->hn_tx_ring[0].hn_chim_size;
static bool hn_tx_ring_pending(struct hn_tx_ring *);
static void hn_tx_ring_qflush(struct hn_tx_ring *);
struct hn_tx_ring *txr;
struct hn_tx_ring *, struct hn_txdesc *,
txr = &sc->hn_tx_ring[i];
txr = &sc->hn_tx_ring[i];
static int hn_get_txswq_depth(const struct hn_tx_ring *);
struct hn_tx_ring *txr;
txr = &sc->hn_tx_ring[0];
txr = &sc->hn_tx_ring[i];
static int hn_txpkt_sglist(struct hn_tx_ring *,
static int hn_txpkt_chim(struct hn_tx_ring *,
pkts = sc->hn_tx_ring[0].hn_agg_pktmax;
align = sc->hn_tx_ring[0].hn_agg_align;
static int hn_xmit(struct hn_tx_ring *, int);
static void hn_xmit_txeof(struct hn_tx_ring *);
static int hn_start_locked(struct hn_tx_ring *, int);
static void hn_start_txeof(struct hn_tx_ring *);
rxr->hn_txr = &sc->hn_tx_ring[i];
struct hn_tx_ring *txr = &sc->hn_tx_ring[id];
struct hn_tx_ring *txr = txd->txr;
hn_txdesc_gc(struct hn_tx_ring *txr, struct hn_txdesc *txd)
hn_tx_ring_destroy(struct hn_tx_ring *txr)
sc->hn_tx_ring = malloc(sizeof(struct hn_tx_ring) * sc->hn_tx_ring_cnt,
__offsetof(struct hn_tx_ring, hn_no_txdescs),
__offsetof(struct hn_tx_ring, hn_send_failed),
__offsetof(struct hn_tx_ring, hn_txdma_failed),
__offsetof(struct hn_tx_ring, hn_flush_failed),
__offsetof(struct hn_tx_ring, hn_tx_collapsed),
__offsetof(struct hn_tx_ring, hn_tx_chimney),
__offsetof(struct hn_tx_ring, hn_tx_chimney_tried),
CTLFLAG_RD, &sc->hn_tx_ring[0].hn_txdesc_cnt, 0,
__offsetof(struct hn_tx_ring, hn_direct_tx_size),
__offsetof(struct hn_tx_ring, hn_sched_tx),
CTLFLAG_RD, &sc->hn_tx_ring[0].hn_agg_szmax, 0,
sc->hn_tx_ring[i].hn_chim_size = chim_size;
sc->hn_tx_ring[i].hn_csum_assist = csum_assist;
sc->hn_tx_ring[i].hn_tx_flags |= HN_TX_FLAG_HASHVAL;
hn_tx_ring_destroy(&sc->hn_tx_ring[i]);
free(sc->hn_tx_ring, M_DEVBUF);
sc->hn_tx_ring = NULL;
struct hn_tx_ring *txr = xtxr;
hn_start_locked(struct hn_tx_ring *txr, int len)
KASSERT(txr == &sc->hn_tx_ring[0], ("not the first TX ring"));
struct hn_tx_ring *txr = &sc->hn_tx_ring[0];
struct hn_tx_ring *txr = xtxr;
hn_start_txeof(struct hn_tx_ring *txr)
KASSERT(txr == &sc->hn_tx_ring[0], ("not the first TX ring"));
hn_xmit(struct hn_tx_ring *txr, int len)
struct hn_tx_ring *txr;
txr = &sc->hn_tx_ring[idx];
hn_tx_ring_qflush(struct hn_tx_ring *txr)
hn_tx_ring_qflush(&sc->hn_tx_ring[i]);
hn_xmit_txeof(struct hn_tx_ring *txr)
struct hn_tx_ring *txr = xtxr;
struct hn_tx_ring *txr = xtxr;
struct hn_tx_ring *txr = NULL;
txr = &sc->hn_tx_ring[idx];
struct hn_tx_ring *txr = &sc->hn_tx_ring[idx];
KASSERT((sc->hn_tx_ring[i].hn_tx_flags &
hn_txpkt_sglist(struct hn_tx_ring *txr, struct hn_txdesc *txd)
hn_txpkt_chim(struct hn_tx_ring *txr, struct hn_txdesc *txd)
struct hn_tx_ring *txr;
txr = &sc->hn_tx_ring[i];
txr = &sc->hn_tx_ring[i];
struct hn_tx_ring *txr = &sc->hn_tx_ring[i];
hn_tx_ring_qflush(&sc->hn_tx_ring[i]);
struct hn_tx_ring *txr = &sc->hn_tx_ring[i];
void (*hn_txeof)(struct hn_tx_ring *);
int (*hn_sendpkt)(struct hn_tx_ring *, struct hn_txdesc *);
struct hn_tx_ring *hn_tx_ring;
struct hn_tx_ring;
struct hn_tx_ring *hn_txr;