HomeFreeBSD

if_genet: don't load DMA mapping when tx_queue is full

Description

if_genet: don't load DMA mapping when tx_queue is full

gen_encap() always calls bus_dmamap_load_mbuf_sg() into 'map' (which is
the current tx_queue). If the tx_queue is full, it will load with a
'map' that already has a currently active mapping. This violates the
busdma(9) KPI.

Checking for a full queue and returning ENOBUFS will allow
gen_start_locked() to set the IFF_DRV_OACTIVE faster without having to
needlessly check if the mbuf will fit (it won't).

PR: 256482
Reviewed by: mhorne
MFC after: 1 week
Submitted by: ghuckriede@blackberry.com

Details

Provenance
mhorneAuthored on Thu, Jun 27, 5:26 PM
Parents
rG3703e1a73e0e: tcp: improve error handling in syncache_socket()
Branches
Unknown
Tags
Unknown