b43: b43_op_config: set channel info before switching band
authorRafał Miłecki <zajec5@gmail.com>
Sat, 31 May 2014 18:49:37 +0000 (20:49 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 19 Jun 2014 19:49:13 +0000 (15:49 -0400)
Band switching code needs to know what channel we switch to.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/phy_common.c

index 59aa4fdb2aebe73cde3e5c48a160c203a571fe78..5e4eed37e3ce2faea6dfaf38c49941b79372727b 100644 (file)
@@ -3808,6 +3808,7 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
        b43_mac_suspend(dev);
 
        if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
+               phy->channel = conf->chandef.chan->hw_value;
                if (conf_is_ht(conf))
                        phy->is_40mhz = conf_is_ht40_minus(conf) ||
                                        conf_is_ht40_plus(conf);
@@ -3822,7 +3823,7 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
                /* Switch to the requested channel.
                 * The firmware takes care of races with the TX handler.
                 */
-               b43_switch_channel(dev, conf->chandef.chan->hw_value);
+               b43_switch_channel(dev, phy->channel);
        }
 
        if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS)
index 3bfb795f6a6d88fea96e4fabbbca6d6bee816eed..b465011c14ea9c4cb813628788ba55cfab3d5d73 100644 (file)
@@ -424,7 +424,6 @@ int b43_switch_channel(struct b43_wldev *dev, unsigned int new_channel)
        if (err)
                goto err_restore_cookie;
 
-       dev->phy.channel = new_channel;
        /* Wait for the radio to tune to the channel and stabilize. */
        msleep(8);