wlan: Deregister with TL and flush all data packets prior to reassoc

In LFR, reassoc to a new peer STA is initiated after the expiry of
preauth-to-reassoc interval timer following a successful pre-auth.
During this interval, we continue to transmit data packets to the old
peer STA. Prior to reassoc with the new peer STA, we should deregister
with TL, and also, flush all
data packets held in wmm_tx_queue. Currently, data packets are flushed
AFTER delSta/delBss of the old peer STA which leads to an erroneous
condition if TX
thread gets scheduled immediately after delSta. Due to this, when these
packets get scheduled by TL, they are assigned the STA idx of self-sta
in BD (since the peer STA has been deleted) and get transmitted on the
new channel before the reassoc request. Since there will be no ACK on
the new channel, each packet undergoes max retransmission which takes
several seconds (at lowest basic data rate) before the transmission of
reassoc request. This leads to reassoc-timeout and roam failure.
So, the fix to address this problem is to deregister and flush all data
packets to the old peer STA as soon as we determine to reassoc (i.e.
BEFORE delSta/delBss).

Change-Id: I75477f4f39eeacd89cf4995f0810bfa15c62ec38
CRs-Fixed: 390567
1 file changed
tree: 22d471f39c70d0e6a00483ae74f0e3b77a6299db
  1. CORE/
  2. firmware_bin/
  3. riva/
  4. Kconfig
  5. Makefile