]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
AP: Add configuration options for 6 GHz TPE Tx power
authorIlan Peer <ilan.peer@intel.com>
Fri, 22 Dec 2023 09:04:18 +0000 (11:04 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 22 Dec 2023 16:06:49 +0000 (18:06 +0200)
Add configuration options for setting the Tx Power value
in the Transmit Power Envelope for 6 GHz:

- The Tx power value for default client where the transmit
  power interpretation is "Regulatory Client EIRP PSD"
- The Tx power value for subordinate client where the transmit
  power interpretation is "Regulatory Client EIRP PSD"

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
hostapd/config_file.c
hostapd/hostapd.conf
src/ap/ap_config.c
src/ap/ap_config.h
src/ap/ieee802_11.c

index 18aab8e509beceb95cc3d6139dcbb7e0dfccca3d..7c15ff5707f979cfdbe1323966faf42c9b77644b 100644 (file)
@@ -3681,6 +3681,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
                                   line);
                        return 1;
                }
+       } else if (os_strcmp(buf, "reg_def_cli_eirp_psd") == 0) {
+               conf->reg_def_cli_eirp_psd = atoi(pos);
+       } else if (os_strcmp(buf, "reg_sub_cli_eirp_psd") == 0) {
+               conf->reg_sub_cli_eirp_psd = atoi(pos);
        } else if (os_strcmp(buf, "he_oper_chwidth") == 0) {
                conf->he_oper_chwidth = atoi(pos);
        } else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) {
index 542489a397792f4f5e6f5505f2145090ce843d0e..747e5400b5d444e7c54d7f1d79e044c7fa3ac65e 100644 (file)
@@ -989,6 +989,13 @@ wmm_ac_vo_acm=0
 # See IEEE P802.11-REVme/D4.0, Table E-12 (Regulatory Info subfield encoding)
 # for more details.
 #he_6ghz_reg_pwr_type=0
+#
+# 6 GHz Maximum Tx Power used in Transmit Power Envelope elements, where the
+# "Transmit Power Interpretation" is set to "Regulatory client EIRP PSD".
+# For Maximum Transmit Power Category subfield encoding set to default (0):
+#reg_def_cli_eirp_psd=-1
+# For Maximum Transmit Power Category subfield encoding set to subordinate (1):
+#reg_sub_cli_eirp_psd=-1
 
 # Unsolicited broadcast Probe Response transmission settings
 # This is for the 6 GHz band only. If the interval is set to a non-zero value,
index cc1f37694eb72f30c39f687907b369d44d93c3ab..a86887930f9f87548adf64fdd5e6673eaf87bf4d 100644 (file)
@@ -282,6 +282,8 @@ struct hostapd_config * hostapd_config_defaults(void)
        conf->he_6ghz_rx_ant_pat = 1;
        conf->he_6ghz_tx_ant_pat = 1;
        conf->he_6ghz_reg_pwr_type = HE_REG_INFO_6GHZ_AP_TYPE_VLP;
+       conf->reg_def_cli_eirp_psd = -1;
+       conf->reg_sub_cli_eirp_psd = -1;
 #endif /* CONFIG_IEEE80211AX */
 
        /* The third octet of the country string uses an ASCII space character
index 794b48b827d2867bed1728d3d45c29aef7399699..f145425b7306fab86aeff7eb939d9c41a9251fbe 100644 (file)
@@ -1149,6 +1149,10 @@ struct hostapd_config {
        u8 he_6ghz_rx_ant_pat;
        u8 he_6ghz_tx_ant_pat;
        u8 he_6ghz_reg_pwr_type;
+
+       int reg_def_cli_eirp_psd;
+       int reg_sub_cli_eirp_psd;
+
        bool require_he;
 #endif /* CONFIG_IEEE80211AX */
 
index 1703d8317a8b3f4c9e4113429fc6097a5a2acbd0..867229ea1ec79351e34efb70cb4277093e0bf109 100644 (file)
@@ -7067,7 +7067,11 @@ u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid)
                tx_pwr_intrpn = REGULATORY_CLIENT_EIRP_PSD;
 
                /* Default Transmit Power Envelope for Global Operating Class */
-               tx_pwr = REG_PSD_MAX_TXPOWER_FOR_DEFAULT_CLIENT * 2;
+               if (hapd->iconf->reg_def_cli_eirp_psd != -1)
+                       tx_pwr = hapd->iconf->reg_def_cli_eirp_psd;
+               else
+                       tx_pwr = REG_PSD_MAX_TXPOWER_FOR_DEFAULT_CLIENT * 2;
+
                eid = hostapd_add_tpe_info(eid, tx_pwr_count, tx_pwr_intrpn,
                                           REG_DEFAULT_CLIENT, tx_pwr);
 
@@ -7076,7 +7080,10 @@ u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid)
                if (iconf->he_6ghz_reg_pwr_type ==
                    HE_REG_INFO_6GHZ_AP_TYPE_INDOOR) {
                        /* TODO: Extract PSD limits from channel data */
-                       tx_pwr = REG_PSD_MAX_TXPOWER_FOR_SUBORDINATE_CLIENT * 2;
+                       if (hapd->iconf->reg_sub_cli_eirp_psd != -1)
+                               tx_pwr = hapd->iconf->reg_sub_cli_eirp_psd;
+                       else
+                               tx_pwr = REG_PSD_MAX_TXPOWER_FOR_SUBORDINATE_CLIENT * 2;
                        eid = hostapd_add_tpe_info(eid, tx_pwr_count,
                                                   tx_pwr_intrpn,
                                                   REG_SUBORDINATE_CLIENT,