wl12xx: send all pending packets on channel change
authorEliad Peller <eliad@wizery.com>
Thu, 15 Sep 2011 10:00:01 +0000 (13:00 +0300)
committerLuciano Coelho <coelho@ti.com>
Fri, 23 Sep 2011 11:38:49 +0000 (14:38 +0300)
There is a race condition between wl1271_tx_work() and the
channel switch, so make sure all the pending packets are
being sent before switching channel.

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

index a8728ae2bb025862dff7f20104773854b06d145f..62118b7988bd0acf9913c2620de46da3e226fe41 100644 (file)
@@ -2355,6 +2355,8 @@ static int wl1271_op_config(struct ieee80211_hw *hw, u32 changed)
        if (changed & IEEE80211_CONF_CHANGE_CHANNEL &&
            ((wl->band != conf->channel->band) ||
             (wl->channel != channel))) {
+               /* send all pending packets */
+               wl1271_tx_work_locked(wl);
                wl->band = conf->channel->band;
                wl->channel = channel;