wlcore: flush tx on CHANGE_CHANNEL
authorEliad Peller <eliad@wizery.com>
Tue, 15 May 2012 13:46:56 +0000 (16:46 +0300)
committerLuciano Coelho <coelho@ti.com>
Tue, 5 Jun 2012 17:24:31 +0000 (20:24 +0300)
On CHANGE_CHANNEL indication, we should flush all the
queued tx frames, so they will be sent on the correct
(current) channel.

Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/main.c

index c08df33..b0607f6 100644 (file)
@@ -2557,8 +2557,9 @@ static int wl1271_op_config(struct ieee80211_hw *hw, u32 changed)
         * frames, such as the deauth. To make sure those frames reach the air,
         * wait here until the TX queue is fully flushed.
         */
-       if ((changed & IEEE80211_CONF_CHANGE_IDLE) &&
-           (conf->flags & IEEE80211_CONF_IDLE))
+       if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) ||
+           ((changed & IEEE80211_CONF_CHANGE_IDLE) &&
+            (conf->flags & IEEE80211_CONF_IDLE)))
                wl1271_tx_flush(wl);
 
        mutex_lock(&wl->mutex);