]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/net/wireless/wl1251/main.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / net / wireless / wl1251 / main.c
index 7a8762553cdcb54470d5b430fa7019fabf6b471c..40372bac948291106197a62475b6e5faf2ba1464 100644 (file)
@@ -52,14 +52,14 @@ void wl1251_disable_interrupts(struct wl1251 *wl)
        wl->if_ops->disable_irq(wl);
 }
 
-static void wl1251_power_off(struct wl1251 *wl)
+static int wl1251_power_off(struct wl1251 *wl)
 {
-       wl->set_power(false);
+       return wl->if_ops->power(wl, false);
 }
 
-static void wl1251_power_on(struct wl1251 *wl)
+static int wl1251_power_on(struct wl1251 *wl)
 {
-       wl->set_power(true);
+       return wl->if_ops->power(wl, true);
 }
 
 static int wl1251_fetch_firmware(struct wl1251 *wl)
@@ -152,9 +152,12 @@ static void wl1251_fw_wakeup(struct wl1251 *wl)
 
 static int wl1251_chip_wakeup(struct wl1251 *wl)
 {
-       int ret = 0;
+       int ret;
+
+       ret = wl1251_power_on(wl);
+       if (ret < 0)
+               return ret;
 
-       wl1251_power_on(wl);
        msleep(WL1251_POWER_ON_SLEEP);
        wl->if_ops->reset(wl);
 
@@ -1036,6 +1039,9 @@ static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
 
        if (changed & BSS_CHANGED_BEACON) {
                beacon = ieee80211_beacon_get(hw, vif);
+               if (!beacon)
+                       goto out_sleep;
+
                ret = wl1251_cmd_template_set(wl, CMD_BEACON, beacon->data,
                                              beacon->len);