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 c08df334b9d5af57a080b3727815fe5fc78c0f34..b0607f6e4e4ea476e73a6d353c669bb5d8731ce2 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);