HomeFreeBSD

[atheros] [if_arge] Various fixes to avoid TX stalls and bad sized packets

Description

[atheros] [if_arge] Various fixes to avoid TX stalls and bad sized packets

This is stuff I've been running for a couple years. It's inspired by changes
I found in the linux ag71xx ethernet driver.

  • Delay between stopping DMA and checking to see if it's stopped; this gives the hardware time to do its thing.
  • Non-final frames in the chain need to be a multiple of 4 bytes in size. Ensure this is the case when assembling a TX DMA list.
  • Add counters for tx/rx underflow and too-short packets.
  • Log if TX/RX DMA couldn't be stopped when resetting the MAC.
  • Add some more debugging / logging around TX/RX ring bits.

Tested:

  • AR7240, AR7241
  • AR9344 (TL-WDR3600/TL-WDR4300 APs)
  • AR9331 (Carambola 2)

Details

Provenance
adrianAuthored on May 10 2020, 3:36 AM
Parents
rG134a253edc5f: clang: Reject %n for __attribute__((format(__freebsd_kprintf__)))
Branches
Unknown
Tags
Unknown

Event Timeline