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, "reg_def_cli_eirp") == 0) {
+ conf->reg_def_cli_eirp = 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) {
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;
+ conf->reg_def_cli_eirp = -1;
#endif /* CONFIG_IEEE80211AX */
/* The third octet of the country string uses an ASCII space character
int reg_def_cli_eirp_psd;
int reg_sub_cli_eirp_psd;
+ /*
+ * This value should be used when regulatory client EIRP PSD values
+ * advertised by an AP that is an SP AP or an indoor SP AP are
+ * insufficient to ensure that regulatory client limits on total EIRP
+ * are always met for all transmission bandwidths within the bandwidth
+ * of the AP’s BSS.
+ */
+ int reg_def_cli_eirp;
+
bool require_he;
#endif /* CONFIG_IEEE80211AX */
hapd->iconf->he_6ghz_reg_pwr_type ==
HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP)
buflen += 4;
+
+ /* An additional Transmit Power Envelope element for
+ * default client with unit interpretation of regulatory
+ * client EIRP */
+ if (hapd->iconf->reg_def_cli_eirp != -1 &&
+ (hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_SP ||
+ hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP))
+ buflen += 4;
}
}
#endif /* CONFIG_IEEE80211AX */
hapd->iconf->he_6ghz_reg_pwr_type ==
HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP)
total_len += 4;
+
+ /* An additional Transmit Power Envelope element for
+ * default client with unit interpretation of regulatory
+ * client EIRP */
+ if (hapd->iconf->reg_def_cli_eirp != -1 &&
+ (hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_SP ||
+ hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP))
+ total_len += 4;
}
#endif /* CONFIG_IEEE80211AX */
hapd->iconf->he_6ghz_reg_pwr_type ==
HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP)
tail_len += 4;
+
+ /* An additional Transmit Power Envelope element for
+ * default client with unit interpretation of regulatory
+ * client EIRP */
+ if (hapd->iconf->reg_def_cli_eirp != -1 &&
+ (hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_SP ||
+ hapd->iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP))
+ tail_len += 4;
}
}
#endif /* CONFIG_IEEE80211AX */
tx_pwr);
}
+ if (iconf->reg_def_cli_eirp != -1 &&
+ (iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_SP ||
+ iconf->he_6ghz_reg_pwr_type ==
+ HE_REG_INFO_6GHZ_AP_TYPE_INDOOR_SP))
+ eid = hostapd_add_tpe_info(
+ eid, tx_pwr_count, REGULATORY_CLIENT_EIRP,
+ REG_DEFAULT_CLIENT,
+ hapd->iconf->reg_def_cli_eirp);
+
return eid;
}
#endif /* CONFIG_IEEE80211AX */