freebsd-skq/sys/dev/iwn
Andriy Voskoboinyk 0613dc6f15 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
2019-01-16 12:33:06 +00:00
..
if_iwn_chip_cfg.h iwn: Correct Centrino Advanced-N 6235 constants 2018-06-28 21:59:45 +00:00
if_iwn_debug.h iwn(4): (partially) rewrite A-MPDU Tx path 2019-01-16 12:33:06 +00:00
if_iwn_devid.h iwn: Add the missing IWN_SDID_6035_5 subdevice 2018-06-30 04:30:08 +00:00
if_iwn_ioctl.h
if_iwn.c iwn(4): (partially) rewrite A-MPDU Tx path 2019-01-16 12:33:06 +00:00
if_iwnreg.h iwn(4): (partially) rewrite A-MPDU Tx path 2019-01-16 12:33:06 +00:00
if_iwnvar.h iwn(4): (partially) rewrite A-MPDU Tx path 2019-01-16 12:33:06 +00:00