Add QCA vendor command to query transmit power information

Add a new QCA subcommand QCA_NL80211_VENDOR_SUBCMD_REGULATORY_TPC_INFO
and related attributes qca_wlan_vendor_attr_tpc_links,
qca_wlan_vendor_attr_tpc definition to query transmit power information
on STA interface from the driver for a connected AP.

The information includes regulatory max transmit power limit, AP local
power constraint advertised from AP's Beacon and Probe Response frames.
For PSD power mode, the information includes PSD power levels for each
subchannel of operating bandwidth. The information is driver calculated
power limits based on current regulatory domain, AP local power
constraint and other IEs. The information will be set to target. Target
will decide final TX power based on this and chip specific power
conformance test limits (CTL), and SAR limits.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Liangwei Dong 2023-11-17 15:35:20 +08:00 committed by Jouni Malinen
parent 9c2d6c4232
commit 5a47bbc36b

View file

@ -1024,6 +1024,20 @@ enum qca_radiotap_vendor_ids {
*
* The attributes used with this subcommand are defined in
* enum qca_wlan_vendor_attr_tx_latency.
*
* @QCA_NL80211_VENDOR_SUBCMD_REGULATORY_TPC_INFO: Vendor command is used to
* query transmit power information on STA interface from the driver for a
* connected AP. The attributes included in response are defined in
* enum qca_wlan_vendor_attr_tpc_links. In case of MLO STA, multiple links
* TPC info may be returned. The information includes regulatory maximum
* transmit power limit, AP local power constraint advertised from AP's
* Beacon and Probe Response frames. For PSD power mode, the information
* includes PSD power levels for each subchannel of operating bandwidth.
* The information is driver calculated power limits based on the current
* regulatory domain, AP local power constraint, and other IEs. The
* information will be set to target. Target will decide the final TX power
* based on this and chip specific power conformance test limits (CTL), and
* SAR limits.
*/
enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@ -1244,6 +1258,7 @@ enum qca_nl80211_vendor_subcmds {
/* 234 - reserved for QCA */
QCA_NL80211_VENDOR_SUBCMD_SDWF_PHY_OPS = 235,
QCA_NL80211_VENDOR_SUBCMD_SDWF_DEV_OPS = 236,
QCA_NL80211_VENDOR_SUBCMD_REGULATORY_TPC_INFO = 237,
};
/* Compatibility defines for previously used subcmd names.
@ -16625,4 +16640,96 @@ enum qca_chan_width_update_type {
QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX_EXT = 2,
};
/**
* enum qca_wlan_vendor_attr_tpc_pwr_level - Definition of attributes
* used inside nested attribute %QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_FREQUENCY: u32 channel center
* frequency (MHz): If PSD power, carries one 20 MHz sub-channel center
* frequency. If non PSD power, carries either 20 MHz bandwidth's center
* channel frequency or 40 MHz bandwidth's center channel frequency
* (or 80/160 MHz bandwidth's center channel frequency).
*
* @QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_TX_POWER: s8 transmit power limit (dBm).
* If PSD power, carries PSD power value of the
* QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_FREQUENCY mentioned sub-channel.
* If non PSD power, carries EIRP power value of bandwidth mentioned
* by QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_FREQUENCY center frequency.
*/
enum qca_wlan_vendor_attr_tpc_pwr_level {
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_FREQUENCY = 1,
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_TX_POWER = 2,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_MAX =
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_tpc - Definition of link attributes
* used inside nested attribute %QCA_WLAN_VENDOR_ATTR_TPC_LINKS.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_BSSID: 6-bytes AP BSSID.
* For MLO STA, AP BSSID indicates the AP's link address.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_PSD_POWER: PSD power flag
* Indicates using PSD power mode if this flag is present.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_EIRP_POWER: s8 Regulatory EIRP power
* value in dBm
*
* @QCA_WLAN_VENDOR_ATTR_TPC_POWER_TYPE_6GHZ: u8 power type of 6 GHz
* AP, refer to Table E-12-Regulatory Info subfield encoding in
* IEEE P802.11-REVme/D4.0. Only present if link is connected to 6 GHz AP.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_AP_CONSTRAINT_POWER: u8 Local Power Constraint
* (dBm) advertised by AP in Power Constraint element, refer to
* IEEE Std 802.11-2020, 9.4.2.13 Power Constraint element.
*
* @QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL: A nested attribute containing
* attributes defined by enum qca_wlan_vendor_attr_tpc_pwr_level.
* If PSD power, each power level describes each 20 MHz subchannel PSD
* power value. If non PSD power, each power level describes each supported
* bandwidth's EIRP power value (up to Max bandwidth of AP operating on),
* each level attribute contains corresponding bandwidth's center channel
* frequency and its EIRP power value.
*/
enum qca_wlan_vendor_attr_tpc {
QCA_WLAN_VENDOR_ATTR_TPC_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TPC_BSSID = 1,
QCA_WLAN_VENDOR_ATTR_TPC_PSD_POWER = 2,
QCA_WLAN_VENDOR_ATTR_TPC_EIRP_POWER = 3,
QCA_WLAN_VENDOR_ATTR_TPC_POWER_TYPE_6GHZ = 4,
QCA_WLAN_VENDOR_ATTR_TPC_AP_CONSTRAINT_POWER = 5,
QCA_WLAN_VENDOR_ATTR_TPC_PWR_LEVEL = 6,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TPC_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_TPC_MAX =
QCA_WLAN_VENDOR_ATTR_TPC_AFTER_LAST - 1,
};
/**
* enum qca_wlan_vendor_attr_tpc_links - Definition of attributes
* for %QCA_NL80211_VENDOR_SUBCMD_REGULATORY_TPC_INFO subcommand
*
* @QCA_WLAN_VENDOR_ATTR_TPC_LINKS: A nested attribute containing
* per-link TPC information of all the active links of MLO STA.
* For non MLO STA, only one link TPC information will be returned
* for connected AP in this nested attribute.
* The attributes used inside this nested attributes are defined
* in enum qca_wlan_vendor_attr_tpc.
*/
enum qca_wlan_vendor_attr_tpc_links {
QCA_WLAN_VENDOR_ATTR_TPC_LINKS_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_TPC_LINKS = 1,
/* keep last */
QCA_WLAN_VENDOR_ATTR_TPC_LINKS_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_TPC_LINKS_MAX =
QCA_WLAN_VENDOR_ATTR_TPC_AFTER_LAST - 1,
};
#endif /* QCA_VENDOR_H */