]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
iwn(4): (partially) rewrite A-MPDU Tx path
authoravos <avos@FreeBSD.org>
Wed, 16 Jan 2019 12:33:06 +0000 (12:33 +0000)
committeravos <avos@FreeBSD.org>
Wed, 16 Jan 2019 12:33:06 +0000 (12:33 +0000)
commit97c057b459aa3ee01f44030c1550fbe219214f1e
tree624172a74fd6fc27be494c4dd831faa8f007bfde
parent776282ee219ae41a9add9988f2fbfe46a58a0567
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
sys/dev/iwn/if_iwn.c
sys/dev/iwn/if_iwn_debug.h
sys/dev/iwn/if_iwnreg.h
sys/dev/iwn/if_iwnvar.h