Fix several issues introduced with iwm(4) Tx aggregation support.
authorstsp <stsp@openbsd.org>
Wed, 12 May 2021 10:05:57 +0000 (10:05 +0000)
committerstsp <stsp@openbsd.org>
Wed, 12 May 2021 10:05:57 +0000 (10:05 +0000)
commit53851ebce202b3ef426d872b6e134f004c0eb310
tree6ff78cbd8b63ac93bea331478da4d3c90b580367
parentf74da371592dbe1e09495f48e79e77ec170a2c46
Fix several issues introduced with iwm(4) Tx aggregation support.

Keep station queues marked as enabled until the device gets reset.
The firmware becomes unhappy if it finds some queues enabled but missing
from the station's queue mask, even across removals and re-additions of the
station which occur during re-associations and while roaming between APs.
Fixes "could not add sta (error 35)" fatal firmware errors.

When stopping a BA session, properly set the bit corresponding to the
session's TID in the node's tid_disable_ampu bitmask.

During dis- and re-associations all Tx block ack sessions are torn down,
so clear the bitmask which identifies queues with active Tx BA sessions.

Don't byte-swap values written to host-side variables.

Problems reported and fixes tested by Matthias Schmidt and kettenis@.
Additional testing by phessler@, mlarkin@, and Mikolaj Kucharski.
sys/dev/pci/if_iwm.c