summaryrefslogtreecommitdiff
path: root/net/wireless/core.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-06-10 23:41:43 -0700
committerDavid S. Miller <davem@davemloft.net>2009-06-10 23:41:43 -0700
commit84503ddd65e804ccdeedee3f307b40d80ff793e6 (patch)
treec7b805f441b1d8cb2e86b8411cf2302ff46186b4 /net/wireless/core.c
parent51611a120e8120290152edd7d0020d22a7f4b4a3 (diff)
parent2f0accc13520b2644b85f80aedce10d10d88b0ca (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'net/wireless/core.c')
-rw-r--r--net/wireless/core.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c
index 3b74b88e10a3..d5850292b3df 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -395,21 +395,23 @@ int wiphy_register(struct wiphy *wiphy)
/* check and set up bitrates */
ieee80211_set_bitrate_flags(wiphy);
- mutex_lock(&cfg80211_mutex);
-
- /* set up regulatory info */
- wiphy_update_regulatory(wiphy, NL80211_REGDOM_SET_BY_CORE);
-
res = device_add(&drv->wiphy.dev);
if (res)
- goto out_unlock;
+ return res;
res = rfkill_register(drv->rfkill);
if (res)
goto out_rm_dev;
+ mutex_lock(&cfg80211_mutex);
+
+ /* set up regulatory info */
+ wiphy_update_regulatory(wiphy, NL80211_REGDOM_SET_BY_CORE);
+
list_add(&drv->list, &cfg80211_drv_list);
+ mutex_unlock(&cfg80211_mutex);
+
/* add to debugfs */
drv->wiphy.debugfsdir =
debugfs_create_dir(wiphy_name(&drv->wiphy),
@@ -430,13 +432,10 @@ int wiphy_register(struct wiphy *wiphy)
cfg80211_debugfs_drv_add(drv);
- res = 0;
- goto out_unlock;
+ return 0;
out_rm_dev:
device_del(&drv->wiphy.dev);
- out_unlock:
- mutex_unlock(&cfg80211_mutex);
return res;
}
EXPORT_SYMBOL(wiphy_register);