nl80211: Disallow setting of HT for channel 14
This patch disables setting of HT20 and more for channel 14 because the channel is only for IEEE 802.11b. The patch for net/wireless/util.c was unit-tested. The patch for net/wireless/chan.c was tested with iw command. Before this patch. $ sudo iw dev <ifname> set channel 14 HT20 $ After this patch. $ sudo iw dev <ifname> set channel 14 HT20 kernel reports: invalid channel definition command failed: Invalid argument (-22) $ Signed-off-by: Masashi Honma <masashi.honma@gmail.com> Link: https://lore.kernel.org/r/20191021075045.2719-1-masashi.honma@gmail.com [clean up the code, use != instead of equivalent >] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
6f74a55d49
commit
ec649fed66
|
@ -204,6 +204,11 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef)
|
|||
return false;
|
||||
}
|
||||
|
||||
/* channel 14 is only for IEEE 802.11b */
|
||||
if (chandef->center_freq1 == 2484 &&
|
||||
chandef->width != NL80211_CHAN_WIDTH_20_NOHT)
|
||||
return false;
|
||||
|
||||
if (cfg80211_chandef_is_edmg(chandef) &&
|
||||
!cfg80211_edmg_chandef_valid(chandef))
|
||||
return false;
|
||||
|
|
|
@ -1559,7 +1559,8 @@ bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef,
|
|||
}
|
||||
|
||||
if (freq == 2484) {
|
||||
if (chandef->width > NL80211_CHAN_WIDTH_40)
|
||||
/* channel 14 is only for IEEE 802.11b */
|
||||
if (chandef->width != NL80211_CHAN_WIDTH_20_NOHT)
|
||||
return false;
|
||||
|
||||
*op_class = 82; /* channel 14 */
|
||||
|
|
Loading…
Reference in New Issue