AP: Add configuration options for 6 GHz TPE Tx power

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>
This commit is contained in:
Ilan Peer 2023-12-22 11:04:18 +02:00 committed by Jouni Malinen
parent ada9083ac4
commit 7065e5242a
5 changed files with 26 additions and 2 deletions

View file

@ -3681,6 +3681,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
line); line);
return 1; 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) { } else if (os_strcmp(buf, "he_oper_chwidth") == 0) {
conf->he_oper_chwidth = atoi(pos); conf->he_oper_chwidth = atoi(pos);
} else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) { } else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) {

View file

@ -989,6 +989,13 @@ wmm_ac_vo_acm=0
# See IEEE P802.11-REVme/D4.0, Table E-12 (Regulatory Info subfield encoding) # See IEEE P802.11-REVme/D4.0, Table E-12 (Regulatory Info subfield encoding)
# for more details. # for more details.
#he_6ghz_reg_pwr_type=0 #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 # Unsolicited broadcast Probe Response transmission settings
# This is for the 6 GHz band only. If the interval is set to a non-zero value, # This is for the 6 GHz band only. If the interval is set to a non-zero value,

View file

@ -282,6 +282,8 @@ struct hostapd_config * hostapd_config_defaults(void)
conf->he_6ghz_rx_ant_pat = 1; conf->he_6ghz_rx_ant_pat = 1;
conf->he_6ghz_tx_ant_pat = 1; conf->he_6ghz_tx_ant_pat = 1;
conf->he_6ghz_reg_pwr_type = HE_REG_INFO_6GHZ_AP_TYPE_VLP; 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 */ #endif /* CONFIG_IEEE80211AX */
/* The third octet of the country string uses an ASCII space character /* The third octet of the country string uses an ASCII space character

View file

@ -1149,6 +1149,10 @@ struct hostapd_config {
u8 he_6ghz_rx_ant_pat; u8 he_6ghz_rx_ant_pat;
u8 he_6ghz_tx_ant_pat; u8 he_6ghz_tx_ant_pat;
u8 he_6ghz_reg_pwr_type; u8 he_6ghz_reg_pwr_type;
int reg_def_cli_eirp_psd;
int reg_sub_cli_eirp_psd;
bool require_he; bool require_he;
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */

View file

@ -7067,7 +7067,11 @@ u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid)
tx_pwr_intrpn = REGULATORY_CLIENT_EIRP_PSD; tx_pwr_intrpn = REGULATORY_CLIENT_EIRP_PSD;
/* Default Transmit Power Envelope for Global Operating Class */ /* Default Transmit Power Envelope for Global Operating Class */
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; tx_pwr = REG_PSD_MAX_TXPOWER_FOR_DEFAULT_CLIENT * 2;
eid = hostapd_add_tpe_info(eid, tx_pwr_count, tx_pwr_intrpn, eid = hostapd_add_tpe_info(eid, tx_pwr_count, tx_pwr_intrpn,
REG_DEFAULT_CLIENT, tx_pwr); REG_DEFAULT_CLIENT, tx_pwr);
@ -7076,6 +7080,9 @@ u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid)
if (iconf->he_6ghz_reg_pwr_type == if (iconf->he_6ghz_reg_pwr_type ==
HE_REG_INFO_6GHZ_AP_TYPE_INDOOR) { HE_REG_INFO_6GHZ_AP_TYPE_INDOOR) {
/* TODO: Extract PSD limits from channel data */ /* TODO: Extract PSD limits from channel data */
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; tx_pwr = REG_PSD_MAX_TXPOWER_FOR_SUBORDINATE_CLIENT * 2;
eid = hostapd_add_tpe_info(eid, tx_pwr_count, eid = hostapd_add_tpe_info(eid, tx_pwr_count,
tx_pwr_intrpn, tx_pwr_intrpn,