iwlwifi: mvm: don't WARN when a legit race happens in A-MPDU
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 27 Jul 2017 12:34:12 +0000 (15:34 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Wed, 9 Aug 2017 05:53:50 +0000 (08:53 +0300)
commita600852a9d00be08c539307a42729fd46b0a654e
tree743d924ee0720822d5701a5061ac1f8de8acb75f
parent7e39a00d593133ca8fcd3eef0409685e7c895ee6
iwlwifi: mvm: don't WARN when a legit race happens in A-MPDU

When we start an Rx A-MPDU session, we first get the AddBA
request, then we send an ADD_STA command to the firmware
that will reply with a BAID which is a hardware resource
that tracks the BA session.
This BAID will appear on each and every frame that we get
from the firwmare until the A-MPDU session is torn down.
In the Rx path, we look at this BAID to manage the
reordering buffer.

This flow is inherently racy since the hardware will start
to put the BAID in the frames it receives even if the
firmware hasn't sent the response to the ADD_STA command.
This basically means that the driver can get frames with
a valid BAID that it doesn't know yet.
When that happens, the driver used to WARN.
Fix this by simply not WARN in this case. When the driver
will know abou the BAID, it will initialise the relevant
states and the next frame with a valid BAID will refresh
them.

Fixes: b915c10174fb ("iwlwifi: mvm: add reorder buffer per queue")
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c