From: Rajkumar Manoharan <rmanohar@codeaurora.org> To: johannes@sipsolutions.net, kvalo@codeaurora.org Cc: linux-wireless@vger.kernel.org, ath11k@lists.infradead.org, Rajkumar Manoharan <rmanohar@codeaurora.org> Subject: [PATCH v3 03/11] nl80211: add HE 6 GHz Band Capability support Date: Wed, 13 May 2020 12:44:57 -0700 [thread overview] Message-ID: <1589399105-25472-3-git-send-email-rmanohar@codeaurora.org> (raw) In-Reply-To: <1589399105-25472-1-git-send-email-rmanohar@codeaurora.org> Define new structures for HE 6 GHz band capabilities as per IEEE P802.11ax/D6.0, 9.4.2.261 HE 6 GHz Band Capabilities element and 6 GHz Operation Information field of HE operation element (IEEE P802.11ax/D6.0, Figure 9-787k). Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> --- include/linux/ieee80211.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 16268ef1cbcc..77462dff6db3 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -1632,6 +1632,44 @@ struct ieee80211_he_mcs_nss_supp { } __packed; /** + * enum ieee80211_he_6ghz_chanwidth - HE 6 GHz channel width + * @IEEE80211_HE_6GHZ_CHANWIDTH_20MHZ: 20 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_40MHZ: 40 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_80MHZ: 80 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_80P80MHZ: 160 or 80+80 MHz bandwidth + */ +enum ieee80211_he_6ghz_chanwidth { + IEEE80211_HE_6GHZ_CHANWIDTH_20MHZ = 0, + IEEE80211_HE_6GHZ_CHANWIDTH_40MHZ = 1, + IEEE80211_HE_6GHZ_CHANWIDTH_80MHZ = 2, + IEEE80211_HE_6GHZ_CHANWIDTH_160MHZ_80P80MHZ = 3, +}; + +/** + * struct ieee80211_he_oper_6ghz_op_info - 6 GHz Operation Information + * + * This structure is defined as described in IEEE P802.11ax/D6.0, + * Figure 9-787k—6 GHz Operation Information field. + * + * @primary_chan: The channel number of the primary channel in the 6 GHz band. + * @control: First two bits defines channel width field indicates the BSS + * channel width and is set to 0 for 20 MHz, 1 for 40 MHz, 2 for 80 MHz, + * and 3 for 80+80 or 160 MHz. + * @center_freq_seg0_idx: Channel center frequency index for the 20 MHz, + * 40 MHz, or 80 MHz, or 80+80 MHz. + * @center_freq_seg1_idx: Channel center frequency index of the 160 MHz. + * @min_rate: Minimum rate, in units of 1 Mb/s, that the non-AP STA is allowed + * to use for sending PPDUs. + */ +struct ieee80211_he_oper_6ghz_op_info { + u8 primary_chan; + u8 control; + u8 center_freq_seg0_idx; + u8 center_freq_seg1_idx; + u8 min_rate; +} __packed; + +/** * struct ieee80211_he_operation - HE capabilities element * * This structure is the "HE operation element" fields as @@ -1682,6 +1720,15 @@ struct ieee80211_mu_edca_param_set { struct ieee80211_he_mu_edca_param_ac_rec ac_vo; } __packed; +/** + * struct ieee80211_he_6ghz_band_cap - HE 6 GHz Band Capabilities element + * + * This structure is defined as described in IEEE P802.11ax/D6.0, 9.4.2.261. + */ +struct ieee80211_he_6ghz_band_cap { + __le16 capab; +} __packed; + /* 802.11ac VHT Capabilities */ #define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 #define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 @@ -1982,6 +2029,15 @@ int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap, #define IEEE80211_TX_RX_MCS_NSS_SUPP_TX_BITMAP_MASK 0x07c0 #define IEEE80211_TX_RX_MCS_NSS_SUPP_RX_BITMAP_MASK 0xf800 +/* 802.11ax HE 6 GHz Band Capability */ +#define IEEE80211_HE_6GHZ_CAP_MIN_MPDU_START_SPACE_MASK GENMASK(2, 0) +#define IEEE80211_HE_6GHZ_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK GENMASK(5, 3) +#define IEEE80211_HE_6GHZ_CAP_MAX_MPDU_LENGTH_MASK GENMASK(7, 6) +#define IEEE80211_HE_6GHZ_CAP_SMPS_MASK GENMASK(10, 9) +#define IEEE80211_HE_6GHZ_CAP_RD_RESP BIT(11) +#define IEEE80211_HE_6GHZ_CAP_RX_ANTENNA_PATTERN BIT(12) +#define IEEE80211_HE_6GHZ_CAP_TX_ANTENNA_PATTERN BIT(13) + /* TX/RX HE MCS Support field Highest MCS subfield encoding */ enum ieee80211_he_highest_mcs_supported_subfield_enc { HIGHEST_MCS_SUPPORTED_MCS7 = 0, @@ -2059,6 +2115,7 @@ ieee80211_he_ppe_size(u8 ppe_thres_hdr, const u8 *phy_cap_info) #define IEEE80211_HE_OPERATION_BSS_COLOR_OFFSET 24 #define IEEE80211_HE_OPERATION_PARTIAL_BSS_COLOR 0x40000000 #define IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED 0x80000000 +#define IEEE80211_HE_OPERATION_6GHZ_OP_INFO_CTRL_CHAN_WIDTH 0x3 /* * ieee80211_he_oper_size - calculate 802.11ax HE Operations IE size -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Rajkumar Manoharan <rmanohar@codeaurora.org> To: johannes@sipsolutions.net, kvalo@codeaurora.org Cc: linux-wireless@vger.kernel.org, ath11k@lists.infradead.org, Rajkumar Manoharan <rmanohar@codeaurora.org> Subject: [PATCH v3 03/11] nl80211: add HE 6 GHz Band Capability support Date: Wed, 13 May 2020 12:44:57 -0700 [thread overview] Message-ID: <1589399105-25472-3-git-send-email-rmanohar@codeaurora.org> (raw) In-Reply-To: <1589399105-25472-1-git-send-email-rmanohar@codeaurora.org> Define new structures for HE 6 GHz band capabilities as per IEEE P802.11ax/D6.0, 9.4.2.261 HE 6 GHz Band Capabilities element and 6 GHz Operation Information field of HE operation element (IEEE P802.11ax/D6.0, Figure 9-787k). Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org> --- include/linux/ieee80211.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 16268ef1cbcc..77462dff6db3 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h @@ -1632,6 +1632,44 @@ struct ieee80211_he_mcs_nss_supp { } __packed; /** + * enum ieee80211_he_6ghz_chanwidth - HE 6 GHz channel width + * @IEEE80211_HE_6GHZ_CHANWIDTH_20MHZ: 20 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_40MHZ: 40 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_80MHZ: 80 MHz bandwidth + * @IEEE80211_HE_6GHZ_CHANWIDTH_80P80MHZ: 160 or 80+80 MHz bandwidth + */ +enum ieee80211_he_6ghz_chanwidth { + IEEE80211_HE_6GHZ_CHANWIDTH_20MHZ = 0, + IEEE80211_HE_6GHZ_CHANWIDTH_40MHZ = 1, + IEEE80211_HE_6GHZ_CHANWIDTH_80MHZ = 2, + IEEE80211_HE_6GHZ_CHANWIDTH_160MHZ_80P80MHZ = 3, +}; + +/** + * struct ieee80211_he_oper_6ghz_op_info - 6 GHz Operation Information + * + * This structure is defined as described in IEEE P802.11ax/D6.0, + * Figure 9-787k—6 GHz Operation Information field. + * + * @primary_chan: The channel number of the primary channel in the 6 GHz band. + * @control: First two bits defines channel width field indicates the BSS + * channel width and is set to 0 for 20 MHz, 1 for 40 MHz, 2 for 80 MHz, + * and 3 for 80+80 or 160 MHz. + * @center_freq_seg0_idx: Channel center frequency index for the 20 MHz, + * 40 MHz, or 80 MHz, or 80+80 MHz. + * @center_freq_seg1_idx: Channel center frequency index of the 160 MHz. + * @min_rate: Minimum rate, in units of 1 Mb/s, that the non-AP STA is allowed + * to use for sending PPDUs. + */ +struct ieee80211_he_oper_6ghz_op_info { + u8 primary_chan; + u8 control; + u8 center_freq_seg0_idx; + u8 center_freq_seg1_idx; + u8 min_rate; +} __packed; + +/** * struct ieee80211_he_operation - HE capabilities element * * This structure is the "HE operation element" fields as @@ -1682,6 +1720,15 @@ struct ieee80211_mu_edca_param_set { struct ieee80211_he_mu_edca_param_ac_rec ac_vo; } __packed; +/** + * struct ieee80211_he_6ghz_band_cap - HE 6 GHz Band Capabilities element + * + * This structure is defined as described in IEEE P802.11ax/D6.0, 9.4.2.261. + */ +struct ieee80211_he_6ghz_band_cap { + __le16 capab; +} __packed; + /* 802.11ac VHT Capabilities */ #define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 #define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 @@ -1982,6 +2029,15 @@ int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap, #define IEEE80211_TX_RX_MCS_NSS_SUPP_TX_BITMAP_MASK 0x07c0 #define IEEE80211_TX_RX_MCS_NSS_SUPP_RX_BITMAP_MASK 0xf800 +/* 802.11ax HE 6 GHz Band Capability */ +#define IEEE80211_HE_6GHZ_CAP_MIN_MPDU_START_SPACE_MASK GENMASK(2, 0) +#define IEEE80211_HE_6GHZ_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK GENMASK(5, 3) +#define IEEE80211_HE_6GHZ_CAP_MAX_MPDU_LENGTH_MASK GENMASK(7, 6) +#define IEEE80211_HE_6GHZ_CAP_SMPS_MASK GENMASK(10, 9) +#define IEEE80211_HE_6GHZ_CAP_RD_RESP BIT(11) +#define IEEE80211_HE_6GHZ_CAP_RX_ANTENNA_PATTERN BIT(12) +#define IEEE80211_HE_6GHZ_CAP_TX_ANTENNA_PATTERN BIT(13) + /* TX/RX HE MCS Support field Highest MCS subfield encoding */ enum ieee80211_he_highest_mcs_supported_subfield_enc { HIGHEST_MCS_SUPPORTED_MCS7 = 0, @@ -2059,6 +2115,7 @@ ieee80211_he_ppe_size(u8 ppe_thres_hdr, const u8 *phy_cap_info) #define IEEE80211_HE_OPERATION_BSS_COLOR_OFFSET 24 #define IEEE80211_HE_OPERATION_PARTIAL_BSS_COLOR 0x40000000 #define IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED 0x80000000 +#define IEEE80211_HE_OPERATION_6GHZ_OP_INFO_CTRL_CHAN_WIDTH 0x3 /* * ieee80211_he_oper_size - calculate 802.11ax HE Operations IE size -- 2.7.4 _______________________________________________ ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k
next prev parent reply other threads:[~2020-05-13 19:45 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-13 19:44 [PATCH v3 01/11] cfg80211: use only HE capability to set prohibited flags in 6 GHz Rajkumar Manoharan 2020-05-13 19:44 ` Rajkumar Manoharan 2020-05-13 19:44 ` [PATCH v3 02/11] cfg80211: handle 6 GHz capability of new station Rajkumar Manoharan 2020-05-13 19:44 ` Rajkumar Manoharan 2020-05-27 14:00 ` Johannes Berg 2020-05-27 14:00 ` Johannes Berg 2020-05-27 23:24 ` Rajkumar Manoharan 2020-05-27 23:24 ` Rajkumar Manoharan 2020-05-28 7:40 ` Johannes Berg 2020-05-28 7:40 ` Johannes Berg 2020-05-13 19:44 ` Rajkumar Manoharan [this message] 2020-05-13 19:44 ` [PATCH v3 03/11] nl80211: add HE 6 GHz Band Capability support Rajkumar Manoharan 2020-05-27 14:27 ` Johannes Berg 2020-05-27 14:27 ` Johannes Berg 2020-05-27 17:39 ` Rajkumar Manoharan 2020-05-27 17:39 ` Rajkumar Manoharan 2020-05-13 19:44 ` [PATCH v3 04/11] mac80211: add HE 6 GHz Band Capabilities into parse extension Rajkumar Manoharan 2020-05-13 19:44 ` Rajkumar Manoharan 2020-05-27 14:28 ` Johannes Berg 2020-05-27 14:28 ` Johannes Berg 2020-05-13 19:44 ` [PATCH v3 05/11] mac80211: fix memory overlap due to variable length param Rajkumar Manoharan 2020-05-13 19:44 ` Rajkumar Manoharan 2020-05-27 14:28 ` Johannes Berg 2020-05-27 14:28 ` Johannes Berg 2020-05-13 19:45 ` [PATCH v3 06/11] mac80211: handle HE 6 GHz Capability in HE STA processing Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-05-27 14:43 ` Johannes Berg 2020-05-27 14:43 ` Johannes Berg 2020-05-28 8:55 ` Johannes Berg 2020-05-28 8:55 ` Johannes Berg 2020-05-28 9:43 ` Johannes Berg 2020-05-28 9:43 ` Johannes Berg 2020-05-28 13:15 ` Johannes Berg 2020-05-28 13:15 ` Johannes Berg 2020-05-13 19:45 ` [PATCH v3 07/11] mac80211: add HE 6 GHz Band Capability IE in Assoc. Request Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-05-27 14:37 ` Johannes Berg 2020-05-27 14:37 ` Johannes Berg 2020-05-28 12:20 ` Johannes Berg 2020-05-28 12:20 ` Johannes Berg 2020-05-13 19:45 ` [PATCH v3 08/11] mac80211: build HE operation with 6 GHz oper information Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-05-27 14:30 ` Johannes Berg 2020-05-27 14:30 ` Johannes Berg 2020-05-13 19:45 ` [PATCH v3 09/11] mac80211: do not allow HT/VHT IEs in 6 GHz mesh mode Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-05-13 19:45 ` [PATCH v3 10/11] mac80211: determine chantype from HE operation in 6 GHz Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-05-27 14:41 ` Johannes Berg 2020-05-27 14:41 ` Johannes Berg 2020-05-27 14:44 ` Johannes Berg 2020-05-27 14:44 ` Johannes Berg 2020-05-27 18:34 ` Rajkumar Manoharan 2020-05-27 18:34 ` Rajkumar Manoharan 2020-05-27 18:41 ` Johannes Berg 2020-05-27 18:41 ` Johannes Berg 2020-05-28 9:41 ` Johannes Berg 2020-05-28 9:41 ` Johannes Berg 2020-05-28 11:46 ` Johannes Berg 2020-05-28 11:46 ` Johannes Berg 2020-05-13 19:45 ` [PATCH v3 11/11] ath11k: build HE 6 GHz capability Rajkumar Manoharan 2020-05-13 19:45 ` Rajkumar Manoharan 2020-06-01 22:42 ` Rajkumar Manoharan 2020-06-01 22:42 ` Rajkumar Manoharan 2020-05-27 13:43 ` [PATCH v3 01/11] cfg80211: use only HE capability to set prohibited flags in 6 GHz Johannes Berg 2020-05-27 13:43 ` Johannes Berg 2020-05-27 23:32 ` Rajkumar Manoharan 2020-05-27 23:32 ` Rajkumar Manoharan 2020-05-28 7:41 ` Johannes Berg 2020-05-28 7:41 ` Johannes Berg 2020-05-28 7:42 ` Johannes Berg 2020-05-28 7:42 ` Johannes Berg -- strict thread matches above, loose matches on Subject: below -- 2020-05-09 0:12 Rajkumar Manoharan 2020-05-09 0:12 ` [PATCH v3 03/11] nl80211: add HE 6 GHz Band Capability support Rajkumar Manoharan 2020-05-09 0:12 ` Rajkumar Manoharan
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=1589399105-25472-3-git-send-email-rmanohar@codeaurora.org \ --to=rmanohar@codeaurora.org \ --cc=ath11k@lists.infradead.org \ --cc=johannes@sipsolutions.net \ --cc=kvalo@codeaurora.org \ --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: linkBe 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.