Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville...
[linux-drm-fsl-dcu.git] / drivers / net / wireless / zd1211rw / zd_mac.c
index 1dd3f766ff49f32b8e3f407c47879b87f3d1edc1..61c7916b76565e7f496330c950a4c99c6b7986f3 100644 (file)
@@ -32,8 +32,8 @@
 
 static void ieee_init(struct ieee80211_device *ieee);
 static void softmac_init(struct ieee80211softmac_device *sm);
-static void set_rts_cts_work(void *d);
-static void set_basic_rates_work(void *d);
+static void set_rts_cts_work(struct work_struct *work);
+static void set_basic_rates_work(struct work_struct *work);
 
 static void housekeeping_init(struct zd_mac *mac);
 static void housekeeping_enable(struct zd_mac *mac);
@@ -50,8 +50,8 @@ int zd_mac_init(struct zd_mac *mac,
        memset(mac, 0, sizeof(*mac));
        spin_lock_init(&mac->lock);
        mac->netdev = netdev;
-       INIT_WORK(&mac->set_rts_cts_work, set_rts_cts_work, mac);
-       INIT_WORK(&mac->set_basic_rates_work, set_basic_rates_work, mac);
+       INIT_DELAYED_WORK(&mac->set_rts_cts_work, set_rts_cts_work);
+       INIT_DELAYED_WORK(&mac->set_basic_rates_work, set_basic_rates_work);
 
        ieee_init(ieee);
        softmac_init(ieee80211_priv(netdev));
@@ -407,9 +407,10 @@ static void try_enable_tx(struct zd_mac *mac)
        spin_unlock_irqrestore(&mac->lock, flags);
 }
 
-static void set_rts_cts_work(void *d)
+static void set_rts_cts_work(struct work_struct *work)
 {
-       struct zd_mac *mac = d;
+       struct zd_mac *mac =
+               container_of(work, struct zd_mac, set_rts_cts_work.work);
        unsigned long flags;
        u8 rts_rate;
        unsigned int short_preamble;
@@ -428,9 +429,10 @@ static void set_rts_cts_work(void *d)
        try_enable_tx(mac);
 }
 
-static void set_basic_rates_work(void *d)
+static void set_basic_rates_work(struct work_struct *work)
 {
-       struct zd_mac *mac = d;
+       struct zd_mac *mac =
+               container_of(work, struct zd_mac, set_basic_rates_work.work);
        unsigned long flags;
        u16 basic_rates;
 
@@ -508,12 +510,13 @@ static void bssinfo_change(struct net_device *netdev, u32 changes)
        if (need_set_rts_cts && !mac->updating_rts_rate) {
                mac->updating_rts_rate = 1;
                netif_stop_queue(mac->netdev);
-               queue_work(zd_workqueue, &mac->set_rts_cts_work);
+               queue_delayed_work(zd_workqueue, &mac->set_rts_cts_work, 0);
        }
        if (need_set_rates && !mac->updating_basic_rates) {
                mac->updating_basic_rates = 1;
                netif_stop_queue(mac->netdev);
-               queue_work(zd_workqueue, &mac->set_basic_rates_work);
+               queue_delayed_work(zd_workqueue, &mac->set_basic_rates_work,
+                                  0);
        }
        spin_unlock_irqrestore(&mac->lock, flags);
 }
@@ -1225,9 +1228,10 @@ struct iw_statistics *zd_mac_get_wireless_stats(struct net_device *ndev)
 
 #define LINK_LED_WORK_DELAY HZ
 
-static void link_led_handler(void *p)
+static void link_led_handler(struct work_struct *work)
 {
-       struct zd_mac *mac = p;
+       struct zd_mac *mac =
+               container_of(work, struct zd_mac, housekeeping.link_led_work.work);
        struct zd_chip *chip = &mac->chip;
        struct ieee80211softmac_device *sm = ieee80211_priv(mac->netdev);
        int is_associated;
@@ -1248,7 +1252,7 @@ static void link_led_handler(void *p)
 
 static void housekeeping_init(struct zd_mac *mac)
 {
-       INIT_WORK(&mac->housekeeping.link_led_work, link_led_handler, mac);
+       INIT_DELAYED_WORK(&mac->housekeeping.link_led_work, link_led_handler);
 }
 
 static void housekeeping_enable(struct zd_mac *mac)