mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
cxgbe(4): Never use hardware checksumming in netmap tx.
MFC after: 1 week Sponsored by: Chelsio Communications
This commit is contained in:
parent
6fbaf6859c
commit
82694ec0c0
1 changed files with 5 additions and 10 deletions
|
|
@ -659,7 +659,7 @@ ring_nm_txq_db(struct adapter *sc, struct sge_nm_txq *nm_txq)
|
|||
*/
|
||||
static void
|
||||
cxgbe_nm_tx(struct adapter *sc, struct sge_nm_txq *nm_txq,
|
||||
struct netmap_kring *kring, int npkt, int npkt_remaining, int txcsum)
|
||||
struct netmap_kring *kring, int npkt, int npkt_remaining)
|
||||
{
|
||||
struct netmap_ring *ring = kring->ring;
|
||||
struct netmap_slot *slot;
|
||||
|
|
@ -695,13 +695,9 @@ cxgbe_nm_tx(struct adapter *sc, struct sge_nm_txq *nm_txq,
|
|||
* netmap(4) says "netmap does not use features such as
|
||||
* checksum offloading, TCP segmentation offloading,
|
||||
* encryption, VLAN encapsulation/decapsulation, etc."
|
||||
*
|
||||
* So the ncxl interfaces have tx hardware checksumming
|
||||
* disabled by default. But you can override netmap by
|
||||
* enabling IFCAP_TXCSUM on the interface manully.
|
||||
*/
|
||||
cpl->ctrl1 = txcsum ? 0 :
|
||||
htobe64(F_TXPKT_IPCSUM_DIS | F_TXPKT_L4CSUM_DIS);
|
||||
cpl->ctrl1 = htobe64(F_TXPKT_IPCSUM_DIS |
|
||||
F_TXPKT_L4CSUM_DIS);
|
||||
|
||||
usgl = (void *)(cpl + 1);
|
||||
usgl->cmd_nsge = htobe32(V_ULPTX_CMD(ULP_TX_SC_DSGL) |
|
||||
|
|
@ -815,7 +811,7 @@ cxgbe_netmap_txsync(struct netmap_kring *kring, int flags)
|
|||
struct sge_nm_txq *nm_txq = &sc->sge.nm_txq[vi->first_nm_txq + kring->ring_id];
|
||||
const u_int head = kring->rhead;
|
||||
u_int reclaimed = 0;
|
||||
int n, d, npkt_remaining, ndesc_remaining, txcsum;
|
||||
int n, d, npkt_remaining, ndesc_remaining;
|
||||
|
||||
/*
|
||||
* Tx was at kring->nr_hwcur last time around and now we need to advance
|
||||
|
|
@ -826,7 +822,6 @@ cxgbe_netmap_txsync(struct netmap_kring *kring, int flags)
|
|||
|
||||
npkt_remaining = head >= kring->nr_hwcur ? head - kring->nr_hwcur :
|
||||
kring->nkr_num_slots - kring->nr_hwcur + head;
|
||||
txcsum = ifp->if_capenable & (IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6);
|
||||
while (npkt_remaining) {
|
||||
reclaimed += reclaim_nm_tx_desc(nm_txq);
|
||||
ndesc_remaining = contiguous_ndesc_available(nm_txq);
|
||||
|
|
@ -850,7 +845,7 @@ cxgbe_netmap_txsync(struct netmap_kring *kring, int flags)
|
|||
|
||||
/* Send n packets and update nm_txq->pidx and kring->nr_hwcur */
|
||||
npkt_remaining -= n;
|
||||
cxgbe_nm_tx(sc, nm_txq, kring, n, npkt_remaining, txcsum);
|
||||
cxgbe_nm_tx(sc, nm_txq, kring, n, npkt_remaining);
|
||||
}
|
||||
MPASS(npkt_remaining == 0);
|
||||
MPASS(kring->nr_hwcur == head);
|
||||
|
|
|
|||
Loading…
Reference in a new issue