cfg80211: module_param to disable HT40 in 2.4GHz band
Currently mac80211 uses ieee80211_disable_40mhz_24ghz module parameter to allow disabling 40MHz operation in the 2.4GHz band. Move this handling from mac80211 to cfg80211 so that the feature will be more generic. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0a6c9b1b66
commit
40db6c77ab
|
@ -33,12 +33,6 @@
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
#include "debugfs.h"
|
#include "debugfs.h"
|
||||||
|
|
||||||
|
|
||||||
static bool ieee80211_disable_40mhz_24ghz;
|
|
||||||
module_param(ieee80211_disable_40mhz_24ghz, bool, 0644);
|
|
||||||
MODULE_PARM_DESC(ieee80211_disable_40mhz_24ghz,
|
|
||||||
"Disable 40MHz support in the 2.4GHz band");
|
|
||||||
|
|
||||||
static struct lock_class_key ieee80211_rx_skb_queue_class;
|
static struct lock_class_key ieee80211_rx_skb_queue_class;
|
||||||
|
|
||||||
void ieee80211_configure_filter(struct ieee80211_local *local)
|
void ieee80211_configure_filter(struct ieee80211_local *local)
|
||||||
|
@ -728,18 +722,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
|
||||||
}
|
}
|
||||||
channels += sband->n_channels;
|
channels += sband->n_channels;
|
||||||
|
|
||||||
/*
|
|
||||||
* Since ieee80211_disable_40mhz_24ghz is global, we can
|
|
||||||
* modify the sband's ht data even if the driver uses a
|
|
||||||
* global structure for that.
|
|
||||||
*/
|
|
||||||
if (ieee80211_disable_40mhz_24ghz &&
|
|
||||||
band == IEEE80211_BAND_2GHZ &&
|
|
||||||
sband->ht_cap.ht_supported) {
|
|
||||||
sband->ht_cap.cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
|
|
||||||
sband->ht_cap.cap &= ~IEEE80211_HT_CAP_SGI_40;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (max_bitrates < sband->n_bitrates)
|
if (max_bitrates < sband->n_bitrates)
|
||||||
max_bitrates = sband->n_bitrates;
|
max_bitrates = sband->n_bitrates;
|
||||||
supp_ht = supp_ht || sband->ht_cap.ht_supported;
|
supp_ht = supp_ht || sband->ht_cap.ht_supported;
|
||||||
|
|
|
@ -46,6 +46,11 @@ static struct dentry *ieee80211_debugfs_dir;
|
||||||
/* for the cleanup, scan and event works */
|
/* for the cleanup, scan and event works */
|
||||||
struct workqueue_struct *cfg80211_wq;
|
struct workqueue_struct *cfg80211_wq;
|
||||||
|
|
||||||
|
static bool cfg80211_disable_40mhz_24ghz;
|
||||||
|
module_param(cfg80211_disable_40mhz_24ghz, bool, 0644);
|
||||||
|
MODULE_PARM_DESC(cfg80211_disable_40mhz_24ghz,
|
||||||
|
"Disable 40MHz support in the 2.4GHz band");
|
||||||
|
|
||||||
/* requires cfg80211_mutex to be held! */
|
/* requires cfg80211_mutex to be held! */
|
||||||
struct cfg80211_registered_device *cfg80211_rdev_by_wiphy_idx(int wiphy_idx)
|
struct cfg80211_registered_device *cfg80211_rdev_by_wiphy_idx(int wiphy_idx)
|
||||||
{
|
{
|
||||||
|
@ -450,6 +455,18 @@ int wiphy_register(struct wiphy *wiphy)
|
||||||
if (WARN_ON(!sband->n_channels || !sband->n_bitrates))
|
if (WARN_ON(!sband->n_channels || !sband->n_bitrates))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Since cfg80211_disable_40mhz_24ghz is global, we can
|
||||||
|
* modify the sband's ht data even if the driver uses a
|
||||||
|
* global structure for that.
|
||||||
|
*/
|
||||||
|
if (cfg80211_disable_40mhz_24ghz &&
|
||||||
|
band == IEEE80211_BAND_2GHZ &&
|
||||||
|
sband->ht_cap.ht_supported) {
|
||||||
|
sband->ht_cap.cap &= ~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
|
||||||
|
sband->ht_cap.cap &= ~IEEE80211_HT_CAP_SGI_40;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Since we use a u32 for rate bitmaps in
|
* Since we use a u32 for rate bitmaps in
|
||||||
* ieee80211_get_response_rate, we cannot
|
* ieee80211_get_response_rate, we cannot
|
||||||
|
|
Loading…
Reference in New Issue