Fix iwx_ampdu_rx_stop() for multiple Rx BA sessions.
authorstsp <stsp@openbsd.org>
Sat, 14 May 2022 05:42:39 +0000 (05:42 +0000)
committerstsp <stsp@openbsd.org>
Sat, 14 May 2022 05:42:39 +0000 (05:42 +0000)
commit75506a782fbb62dfa3f334415005a421dd373318
tree87b0982161a309e08b908c16071dd969becf838d
parent4487cc5a9622d40fb74f2df5cb026438772af5a5
Fix iwx_ampdu_rx_stop() for multiple Rx BA sessions.

Marking a TID in the bitmask needs |=, not the = operator, duh.
As a result our ba_task only stopped one session even though multiple
sessions were supposed to be stopped. Now driver and firmware had
become out of sync in their tracking of Rx BA session state, and
firmware crashed with sysassert 0x00004472 when the driver later
attempted to start an already active Rx BA session again.

Problem reported by Anton Kasimov.
Thanks to Johannes Berg from Intel who looked up the meaning
of sysassert code 0x00004472 for me.
sys/dev/pci/if_iwx.c