48 lines
1.9 KiB
Diff
48 lines
1.9 KiB
Diff
|
The patch "wext: refactor" by Johannes Berg refactored
|
||
|
wext code so that new kernels no longer get the wext
|
||
|
handlers through struct netdevice, instead they get
|
||
|
it through the struct wiphy which is cfg80211 specific.
|
||
|
|
||
|
For old kernels this means you get not wext handlers
|
||
|
anymore when backporting code, this adds the wext handler
|
||
|
back to the netdevice wireless_handlers to let compat
|
||
|
users use wext again.
|
||
|
|
||
|
We do this for every kernel version because the struct wiphy
|
||
|
is changing from kernel version to version. At least the
|
||
|
struct from kernel 2.6.33 and 2.6.34 are incompatible and
|
||
|
the kernel would dereference some wrong type in the struct
|
||
|
and oops. The old interface is not affected by this. This
|
||
|
will cause that CONFIG_CFG80211_WEXT still depends on
|
||
|
CONFIG_WIRELESS_EXT in compat-wireless.
|
||
|
|
||
|
--- a/net/wireless/core.c
|
||
|
+++ b/net/wireless/core.c
|
||
|
@@ -385,10 +385,6 @@ struct wiphy *wiphy_new(const struct cfg
|
||
|
INIT_LIST_HEAD(&rdev->bss_list);
|
||
|
INIT_WORK(&rdev->scan_done_wk, __cfg80211_scan_done);
|
||
|
INIT_WORK(&rdev->sched_scan_results_wk, __cfg80211_sched_scan_results);
|
||
|
-#ifdef CONFIG_CFG80211_WEXT
|
||
|
- rdev->wiphy.wext = &cfg80211_wext_handler;
|
||
|
-#endif
|
||
|
-
|
||
|
device_initialize(&rdev->wiphy.dev);
|
||
|
rdev->wiphy.dev.class = &ieee80211_class;
|
||
|
rdev->wiphy.dev.platform_data = rdev;
|
||
|
@@ -841,6 +837,15 @@ static int cfg80211_netdev_notifier_call
|
||
|
wdev->sme_state = CFG80211_SME_IDLE;
|
||
|
mutex_unlock(&rdev->devlist_mtx);
|
||
|
#ifdef CONFIG_CFG80211_WEXT
|
||
|
+#ifdef CONFIG_WIRELESS_EXT
|
||
|
+ if (!dev->wireless_handlers)
|
||
|
+ dev->wireless_handlers = &cfg80211_wext_handler;
|
||
|
+#else
|
||
|
+ printk_once(KERN_WARNING "cfg80211: wext will not work because "
|
||
|
+ "kernel was compiled with CONFIG_WIRELESS_EXT=n. "
|
||
|
+ "Tools using wext interface, like iwconfig will "
|
||
|
+ "not work.\n");
|
||
|
+#endif
|
||
|
wdev->wext.default_key = -1;
|
||
|
wdev->wext.default_mgmt_key = -1;
|
||
|
wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;
|