diff options
-rw-r--r-- | net/mac80211/cfg.c | 33 | ||||
-rw-r--r-- | net/mac80211/main.c | 5 |
2 files changed, 5 insertions, 33 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 7693ebc77596..581438255d7e 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -19,33 +19,6 @@ | |||
19 | #include "rate.h" | 19 | #include "rate.h" |
20 | #include "mesh.h" | 20 | #include "mesh.h" |
21 | 21 | ||
22 | static bool nl80211_type_check(enum nl80211_iftype type) | ||
23 | { | ||
24 | switch (type) { | ||
25 | case NL80211_IFTYPE_ADHOC: | ||
26 | case NL80211_IFTYPE_STATION: | ||
27 | case NL80211_IFTYPE_MONITOR: | ||
28 | #ifdef CONFIG_MAC80211_MESH | ||
29 | case NL80211_IFTYPE_MESH_POINT: | ||
30 | #endif | ||
31 | case NL80211_IFTYPE_AP: | ||
32 | case NL80211_IFTYPE_AP_VLAN: | ||
33 | case NL80211_IFTYPE_WDS: | ||
34 | return true; | ||
35 | default: | ||
36 | return false; | ||
37 | } | ||
38 | } | ||
39 | |||
40 | static bool nl80211_params_check(enum nl80211_iftype type, | ||
41 | struct vif_params *params) | ||
42 | { | ||
43 | if (!nl80211_type_check(type)) | ||
44 | return false; | ||
45 | |||
46 | return true; | ||
47 | } | ||
48 | |||
49 | static int ieee80211_add_iface(struct wiphy *wiphy, char *name, | 22 | static int ieee80211_add_iface(struct wiphy *wiphy, char *name, |
50 | enum nl80211_iftype type, u32 *flags, | 23 | enum nl80211_iftype type, u32 *flags, |
51 | struct vif_params *params) | 24 | struct vif_params *params) |
@@ -55,9 +28,6 @@ static int ieee80211_add_iface(struct wiphy *wiphy, char *name, | |||
55 | struct ieee80211_sub_if_data *sdata; | 28 | struct ieee80211_sub_if_data *sdata; |
56 | int err; | 29 | int err; |
57 | 30 | ||
58 | if (!nl80211_params_check(type, params)) | ||
59 | return -EINVAL; | ||
60 | |||
61 | err = ieee80211_if_add(local, name, &dev, type, params); | 31 | err = ieee80211_if_add(local, name, &dev, type, params); |
62 | if (err || type != NL80211_IFTYPE_MONITOR || !flags) | 32 | if (err || type != NL80211_IFTYPE_MONITOR || !flags) |
63 | return err; | 33 | return err; |
@@ -85,9 +55,6 @@ static int ieee80211_change_iface(struct wiphy *wiphy, | |||
85 | if (ieee80211_sdata_running(sdata)) | 55 | if (ieee80211_sdata_running(sdata)) |
86 | return -EBUSY; | 56 | return -EBUSY; |
87 | 57 | ||
88 | if (!nl80211_params_check(type, params)) | ||
89 | return -EINVAL; | ||
90 | |||
91 | ret = ieee80211_if_change_type(sdata, type); | 58 | ret = ieee80211_if_change_type(sdata, type); |
92 | if (ret) | 59 | if (ret) |
93 | return ret; | 60 | return ret; |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 28415de5f476..80db5ea02052 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -622,6 +622,11 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
622 | /* mac80211 always supports monitor */ | 622 | /* mac80211 always supports monitor */ |
623 | local->hw.wiphy->interface_modes |= BIT(NL80211_IFTYPE_MONITOR); | 623 | local->hw.wiphy->interface_modes |= BIT(NL80211_IFTYPE_MONITOR); |
624 | 624 | ||
625 | #ifndef CONFIG_MAC80211_MESH | ||
626 | /* mesh depends on Kconfig, but drivers should set it if they want */ | ||
627 | local->hw.wiphy->interface_modes &= ~BIT(NL80211_IFTYPE_MESH_POINT); | ||
628 | #endif | ||
629 | |||
625 | if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) | 630 | if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) |
626 | local->hw.wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; | 631 | local->hw.wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM; |
627 | else if (local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC) | 632 | else if (local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC) |