b43: N-PHY: optimize radio switching on/off
authorRafał Miłecki <zajec5@gmail.com>
Tue, 27 May 2014 20:07:33 +0000 (22:07 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 29 May 2014 17:10:34 +0000 (13:10 -0400)
Broadcom's wl 6.30.223.141 has some optimizations for radios 0x205[67].

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_n.c

index bf27917..32538ac 100644 (file)
@@ -3742,7 +3742,9 @@ static int b43_switch_band(struct b43_wldev *dev,
        b43dbg(dev->wl, "Switching to %s GHz band\n",
               band_to_string(chan->band));
 
-       b43_software_rfkill(dev, true);
+       /* Some new devices don't need disabling radio for band switching */
+       if (!(phy->type == B43_PHYTYPE_N && phy->rev >= 3))
+               b43_software_rfkill(dev, true);
 
        phy->gmode = gmode;
        b43_phy_put_into_reset(dev);
index 98ff806..86569f6 100644 (file)
@@ -5707,10 +5707,12 @@ static void b43_nphy_op_software_rfkill(struct b43_wldev *dev,
                }
        } else {
                if (dev->phy.rev >= 7) {
-                       b43_radio_2057_init(dev);
+                       if (!dev->phy.radio_on)
+                               b43_radio_2057_init(dev);
                        b43_switch_channel(dev, dev->phy.channel);
                } else if (dev->phy.rev >= 3) {
-                       b43_radio_init2056(dev);
+                       if (!dev->phy.radio_on)
+                               b43_radio_init2056(dev);
                        b43_switch_channel(dev, dev->phy.channel);
                } else {
                        b43_radio_init2055(dev);