@@ -5281,6 +5281,30 @@ ieee80211_get_channel(struct wiphy *wiphy, int freq)
return ieee80211_get_channel_khz(wiphy, MHZ_TO_KHZ(freq));
}
+/**
+ * ieee80211_is_channel_psc - is 6ghz channel a Preferred Scanning Channel (PSC)
+ *
+ * @chan: struct ieee80211_channel to determine
+ * Return: True if 6ghz channel is a PSC channel. False for the rest.
+ */
+static inline bool ieee80211_is_channel_psc(struct ieee80211_channel *chan)
+{
+ if (chan->band != NL80211_BAND_6GHZ)
+ return false;
+
+ /*
+ * From IEEE P802.11ax/D6.1: The set of 20 MHz channels in the 6 GHz
+ * band, with channel center frequency, ch_a = Channel starting
+ * frequency – 55 80 × n (MHz) are referred to as preferred scanning
+ * channels (PSCs). Channel starting frequency is defined in 27.3.23.2
+ * (Channel allocation in the 6 GHz band), and n = 1, …, 15.
+ */
+ if (!(((chan->center_freq - 5950 + 55) >> 4) % 5))
+ return true;
+
+ return false;
+}
+
/**
* ieee80211_get_response_rate - get basic rate for a given rate
*
6GHz channels are divided into preferred scanning channels(PSC) and non-PSC channels. One in every four 20MHz channels is a PSC. Spec mandates to use only PSC channels as primary channels for setting up BSS on 6GHz only AP. The set of 20 MHz channels in the 6 GHz band, with channel center frequency, ch_a = Channel starting frequency – 55 + 80 × n (MHz) are referred to as preferred scanning channels (PSCs) where, n = 1, …, 15 as per IEEE P802.11ax/D6.1. This function can be used by drivers or cfg80211 when making scanning decision on 6GHz channels. Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org> --- v3: - update channel starting frequency from 5945 to 5950 as per IEEE P802.11ax/D6.1 - Define helper function and remove cahnnel flag PSC include/net/cfg80211.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)