All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
To: Johannes Berg <johannes@sipsolutions.net>, ath11k@lists.infradead.org
Cc: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>,
	linux-wireless@vger.kernel.org
Subject: [PATCH v3 1/9] cfg80211: Add helper function to identify 6GHz PSC channel
Date: Tue, 26 May 2020 15:42:09 -0700	[thread overview]
Message-ID: <20200526224217.11119-2-pradeepc@codeaurora.org> (raw)
In-Reply-To: <20200526224217.11119-1-pradeepc@codeaurora.org>

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(+)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index fd6a973b1249..bd27020ea8c9 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -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
  *
-- 
2.17.1


_______________________________________________
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k

WARNING: multiple messages have this Message-ID (diff)
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
To: Johannes Berg <johannes@sipsolutions.net>, ath11k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org,
	Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
Subject: [PATCH v3 1/9] cfg80211: Add helper function to identify 6GHz PSC channel
Date: Tue, 26 May 2020 15:42:09 -0700	[thread overview]
Message-ID: <20200526224217.11119-2-pradeepc@codeaurora.org> (raw)
In-Reply-To: <20200526224217.11119-1-pradeepc@codeaurora.org>

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(+)

diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index fd6a973b1249..bd27020ea8c9 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -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
  *
-- 
2.17.1


  reply	other threads:[~2020-05-26 22:42 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-26 22:42 [PATCH v3 0/9] add 6GHz radio support in ath11k driver Pradeep Kumar Chitrapu
2020-05-26 22:42 ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` Pradeep Kumar Chitrapu [this message]
2020-05-26 22:42   ` [PATCH v3 1/9] cfg80211: Add helper function to identify 6GHz PSC channel Pradeep Kumar Chitrapu
2020-05-28  7:08   ` Johannes Berg
2020-05-28  7:08     ` Johannes Berg
2020-05-28  7:41     ` Pradeep Kumar Chitrapu
2020-05-28  7:41       ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 2/9] ath11k: add 6G frequency list supported by driver Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 3/9] ath11k: add support for 6GHz radio in driver Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 4/9] ath11k: Use freq instead of channel number in rx path Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 5/9] ath11k: extend peer_assoc_cmd for 6GHz band Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 6/9] ath11k: set psc channel flag when sending channel list to firmware Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 7/9] ath11k: Add 6G scan dwell time parameter in scan request command Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 8/9] ath11k: Send multiple scan_chan_list messages if required Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu
2020-05-26 22:42 ` [PATCH v3 9/9] ath11k: Add support for 6g scan hint Pradeep Kumar Chitrapu
2020-05-26 22:42   ` Pradeep Kumar Chitrapu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200526224217.11119-2-pradeepc@codeaurora.org \
    --to=pradeepc@codeaurora.org \
    --cc=ath11k@lists.infradead.org \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.