On 2020-04-29 07:26, Johannes Berg wrote:
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.
Sure. Export this and remove the above one.
+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?
Hmm.. to check whether give center_freq1 chan_idx is allowed to operate
in given bandwidth.
Similar to center_idx_to_bw_6ghz of hostapd, this API is used to chandef
bw.
[...]
@@ -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?
Don't we have to check chandef bw? If not, I will drop the change.
-Rajkumar