On Fri, 2020-04-24 at 15:41 -0700, Rajkumar Manoharan wrote: > > +static inline bool > +cfg80211_chandef_is_6ghz(const struct cfg80211_chan_def *chandef) > +{ > + return (chandef->center_freq1 > 5940 && chandef->center_freq1 < 7105); > +} Seems like this > +++ b/net/wireless/chan.c > @@ -19,6 +19,29 @@ static bool cfg80211_valid_60g_freq(u32 freq) > return freq >= 58320 && freq <= 70200; > } > > +static bool cfg80211_is_6ghz_freq(u32 freq) > +{ > + return (freq > 5940 && freq < 7105); > +} should use this, by also exposing it, or something. > +static enum nl80211_chan_width cfg80211_chan_to_bw_6ghz(u8 idx) > +{ > + /* channels: 1, 5, 9, 13... */ > + if ((idx & 0x3) == 0x1) > + return NL80211_CHAN_WIDTH_20; > + /* channels 3, 11, 19... */ > + if ((idx & 0x7) == 0x3) > + return NL80211_CHAN_WIDTH_40; > + /* channels 7, 23, 39.. */ > + if ((idx & 0xf) == 0x7) > + return NL80211_CHAN_WIDTH_80; > + /* channels 15, 47, 79...*/ > + if ((idx & 0x1f) == 0xf) > + return NL80211_CHAN_WIDTH_160; > + > + return NL80211_CHAN_WIDTH_20; > +} We haven't really done that for anything else - is that really necessary? > +static bool cfg80211_6ghz_chandef_valid(const struct cfg80211_chan_def *chandef) > +{ > + enum nl80211_chan_width bw; > + int chan_idx; > + > + if (!cfg80211_is_6ghz_freq(chandef->center_freq1)) > + return false; this is kinda pointless, > @@ -213,6 +255,10 @@ bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) > !cfg80211_edmg_chandef_valid(chandef)) > return false; > > + if (cfg80211_chandef_is_6ghz(chandef) && > + !cfg80211_6ghz_chandef_valid(chandef)) > + return false; You only get there if it was in range ... Not sure about this whole patch, it seems a bit pointless? johannes