]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ieee80211: add power type definition for 6 GHz
authorWen Gong <wgong@codeaurora.org>
Fri, 24 Sep 2021 10:00:47 +0000 (06:00 -0400)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 27 Sep 2021 11:14:35 +0000 (13:14 +0200)
6 GHz regulatory domains introduces different modes for 6 GHz AP
operations: Low Power Indoor (LPI), Standard Power (SP) and Very
Low Power (VLP). 6 GHz STAs could be operated as either Regular or
Subordinate clients. Define the flags for power type
of AP and STATION mode.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Link: https://lore.kernel.org/r/20210924100052.32029-2-wgong@codeaurora.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/linux/ieee80211.h
include/net/mac80211.h

index 694264503119d4c394cc9868477856726044a9bd..420dea9aa648eafff8fbbdea5aa84833fa98798c 100644 (file)
@@ -1988,6 +1988,44 @@ int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap,
                              int mcs, bool ext_nss_bw_capable,
                              unsigned int max_vht_nss);
 
+/**
+ * enum ieee80211_ap_reg_power - regulatory power for a Access Point
+ *
+ * @IEEE80211_REG_UNSET_AP: Access Point has no regulatory power mode
+ * @IEEE80211_REG_LPI: Indoor Access Point
+ * @IEEE80211_REG_SP: Standard power Access Point
+ * @IEEE80211_REG_VLP: Very low power Access Point
+ * @IEEE80211_REG_AP_POWER_AFTER_LAST: internal
+ * @IEEE80211_REG_AP_POWER_MAX: maximum value
+ */
+enum ieee80211_ap_reg_power {
+       IEEE80211_REG_UNSET_AP,
+       IEEE80211_REG_LPI_AP,
+       IEEE80211_REG_SP_AP,
+       IEEE80211_REG_VLP_AP,
+       IEEE80211_REG_AP_POWER_AFTER_LAST,
+       IEEE80211_REG_AP_POWER_MAX =
+               IEEE80211_REG_AP_POWER_AFTER_LAST - 1,
+};
+
+/**
+ * enum ieee80211_client_reg_power - regulatory power for a client
+ *
+ * @IEEE80211_REG_UNSET_CLIENT: Client has no regulatory power mode
+ * @IEEE80211_REG_DEFAULT_CLIENT: Default Client
+ * @IEEE80211_REG_SUBORDINATE_CLIENT: Subordinate Client
+ * @IEEE80211_REG_CLIENT_POWER_AFTER_LAST: internal
+ * @IEEE80211_REG_CLIENT_POWER_MAX: maximum value
+ */
+enum ieee80211_client_reg_power {
+       IEEE80211_REG_UNSET_CLIENT,
+       IEEE80211_REG_DEFAULT_CLIENT,
+       IEEE80211_REG_SUBORDINATE_CLIENT,
+       IEEE80211_REG_CLIENT_POWER_AFTER_LAST,
+       IEEE80211_REG_CLIENT_POWER_MAX =
+               IEEE80211_REG_CLIENT_POWER_AFTER_LAST - 1,
+};
+
 /* 802.11ax HE MAC capabilities */
 #define IEEE80211_HE_MAC_CAP0_HTC_HE                           0x01
 #define IEEE80211_HE_MAC_CAP0_TWT_REQ                          0x02
index af0fc13cea3499e60e910adfcd98033d258ec937..8923a9fc41269b37fab5a3303b535d788957051b 100644 (file)
@@ -632,6 +632,7 @@ struct ieee80211_fils_discovery {
  * @s1g: BSS is S1G BSS (affects Association Request format).
  * @beacon_tx_rate: The configured beacon transmit rate that needs to be passed
  *     to driver when rate control is offloaded to firmware.
+ * @power_type: power type of BSS for 6 GHz
  */
 struct ieee80211_bss_conf {
        const u8 *bssid;
@@ -702,6 +703,7 @@ struct ieee80211_bss_conf {
        u32 unsol_bcast_probe_resp_interval;
        bool s1g;
        struct cfg80211_bitrate_mask beacon_tx_rate;
+       enum ieee80211_ap_reg_power power_type;
 };
 
 /**