Ath5k: unify resets
[safe/jmp/linux-2.6] / drivers / net / wireless / mac80211_hwsim.c
index 8da352a..248d31a 100644 (file)
@@ -126,7 +126,7 @@ static void mac80211_hwsim_monitor_rx(struct ieee80211_hw *hw,
                                          (1 << IEEE80211_RADIOTAP_CHANNEL));
        hdr->rt_flags = 0;
        hdr->rt_rate = txrate->bitrate / 5;
-       hdr->rt_channel = data->channel->center_freq;
+       hdr->rt_channel = cpu_to_le16(data->channel->center_freq);
        flags = IEEE80211_CHAN_2GHZ;
        if (txrate->flags & IEEE80211_RATE_ERP_G)
                flags |= IEEE80211_CHAN_OFDM;
@@ -364,8 +364,7 @@ static void mac80211_hwsim_free(void)
                        struct mac80211_hwsim_data *data;
                        data = hwsim_radios[i]->priv;
                        ieee80211_unregister_hw(hwsim_radios[i]);
-                       if (!IS_ERR(data->dev))
-                               device_unregister(data->dev);
+                       device_unregister(data->dev);
                        ieee80211_free_hw(hwsim_radios[i]);
                }
        }
@@ -430,15 +429,16 @@ static int __init init_mac80211_hwsim(void)
                hwsim_radios[i] = hw;
 
                data = hw->priv;
-               data->dev = device_create(hwsim_class, NULL, 0, "hwsim%d", i);
+               data->dev = device_create_drvdata(hwsim_class, NULL, 0, hw,
+                                               "hwsim%d", i);
                if (IS_ERR(data->dev)) {
-                       printk(KERN_DEBUG "mac80211_hwsim: device_create "
+                       printk(KERN_DEBUG
+                              "mac80211_hwsim: device_create_drvdata "
                               "failed (%ld)\n", PTR_ERR(data->dev));
                        err = -ENOMEM;
-                       goto failed;
+                       goto failed_drvdata;
                }
                data->dev->driver = &mac80211_hwsim_driver;
-               dev_set_drvdata(data->dev, hw);
 
                SET_IEEE80211_DEV(hw, data->dev);
                addr[3] = i >> 8;
@@ -460,7 +460,7 @@ static int __init init_mac80211_hwsim(void)
                if (err < 0) {
                        printk(KERN_DEBUG "mac80211_hwsim: "
                               "ieee80211_register_hw failed (%d)\n", err);
-                       goto failed;
+                       goto failed_hw;
                }
 
                printk(KERN_DEBUG "%s: hwaddr %s registered\n",
@@ -478,9 +478,9 @@ static int __init init_mac80211_hwsim(void)
        rtnl_lock();
 
        err = dev_alloc_name(hwsim_mon, hwsim_mon->name);
-       if (err < 0) {
+       if (err < 0)
                goto failed_mon;
-       }
+
 
        err = register_netdevice(hwsim_mon);
        if (err < 0)
@@ -493,7 +493,14 @@ static int __init init_mac80211_hwsim(void)
 failed_mon:
        rtnl_unlock();
        free_netdev(hwsim_mon);
+       mac80211_hwsim_free();
+       return err;
 
+failed_hw:
+       device_unregister(data->dev);
+failed_drvdata:
+       ieee80211_free_hw(hw);
+       hwsim_radios[i] = NULL;
 failed:
        mac80211_hwsim_free();
        return err;