HomeFreeBSD

iwn(4): (partially) rewrite A-MPDU Tx path

Description

iwn(4): (partially) rewrite A-MPDU Tx path

Generic Tx stats fixes:

  • do not try to parse "aggregation status" for single frames; send them

to iwn_tx_done() instead;

  • try to attach mbuf / node reference pair to reported BA events;

allows to fix reported status for ieee80211_tx_complete() and ifnet counters
(previously all A-MPDU frames were counted as failed - see PR 210211);
requires few more firmware bug workarounds;

  • preserve short / long retry counters for wlan_amrr(4)

(disabled for now - causes significant performance degradation).

  • Add new IWN_DEBUG_AMPDU debug category.
  • Add one more check into iwn_tx_data() to prevent aggregation ring

overflow.

  • Workaround 'seqno % 256' != 'current Tx slot' case (until D9195 is not

in the tree).

  • Improve watchdog timer updates (previously watchdog check was omitted

when at least one frame was transmitted).

  • Stop Tx when memory leak in currently used ring was detected (unlikely

to happen).

  • Few other minor fixes.

Was previously tested with:

  • Intel 6205, STA mode (Tx aggregation behaves much better now).
  • Intel 4965AGN, STA mode (still unstable).

PR: 192641, 210211
Reviewed by: adrian, dhw
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D10728

Details

Provenance
avosAuthored on
Reviewer
adrian
Differential Revision
D10728: iwn: (partially) rewrite A-MPDU Tx path
Parents
rS343093: Implement dlopenat(3).
Branches
Unknown
Tags
Unknown