Add vendor attributes to configure TX/RX NSS and chains per band

Add attributes to QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION
vendor command to configure asymmetric TX/RX NSS and chains per band.
Also document driver's response when existing attributes to configure
TX/RX NSS and chains for all the bands 2.4 GHz and 5/6 GHz are used in
the same command.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Aditya Kodukula 2024-05-07 18:04:31 -07:00 committed by Jouni Malinen
parent c484a0fca4
commit 4c0ea82700

View file

@ -59,6 +59,23 @@ enum qca_radiotap_vendor_ids {
* with a failure. They can be used to configure either symmetric NSS
* configuration (such as 2X2 or 1X1) or asymmetric configuration (such as 1X2).
*
* Per band NSS configuration - Applies to the 2.4 GHz or 5/6 GHz band
* The following attributes are used to dynamically configure the number of
* spatial streams to be used for transmitting or receiving the data in the
* 2.4 GHz band or 5/6 GHz band. All these attributes must be defined together
* to configure symmetric NSS configuration (such as 1X1 or 2X2) or asymmetric
* NSS configuration (such as 1X2). If any of the attributes is missing, the
* driver will reject the command with a failure. This configuration is allowed
* only when in connected state and will be effective until disconnected. The
* NSS value configured after the connection shall not be greater than the value
* negotiated during the connection. Any such higher value configuration shall
* be treated as invalid configuration by the driver.
*
* @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_2GHZ: Configure TX_NSS in 2.4 GHz band
* @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_2GHZ: Configure RX_NSS in 2.4 GHz band
* @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_5GHZ: Configure TX_NSS in 5 or 6 GHz band
* @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_5GHZ: Configure RX_NSS in 5 or 6 GHz band
*
* Global chain configuration - Applies to all bands (2.4 GHz and 5/6 GHz)
* The following attributes are used to dynamically configure the number of
* chains to be used for transmitting or receiving the data in the 2.4 GHz and
@ -75,6 +92,56 @@ enum qca_radiotap_vendor_ids {
* The attributes QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS and
* QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS must be defined together or the
* driver will reject the command with a failure.
*
* Per band chain configuration - Applies to the 2.4 GHz or 5/6 GHz band
* The following band specific attributes are used to dynamically configure the
* number of chains to be used for tranmissting or receiving the data in the
* 2.4 GHz or 5/6 GHz band. These attributes must be defined together or the
* driver will reject the command. This configuration is allowed only when in
* connected state and will be effective until disconnected. The driver rejects
* this configuration if the number of spatial streams being used in the
* current connection cannot be supported by this configuration.
*
* @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_2GHZ: The number of chains to be
* used for transmitting the data in the 2.4 GHz band.
* @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_2GHZ: The number of chains to be
* used for receiving the data in the 2.4 GHz band.
* @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_5GHZ: The number of chains to be
* used for transmitting the data in the 5/6 GHz band.
* @QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_5GHZ: The number of chains to be
* used for receiving the data in the 5/6 GHz band.
*
* The following scenarios capture how the driver process the configuration when
* different TX/RX NSS and chain config attributes are used in the command.
*
* Case 1: CONFIG_NSS + CONFIG_TX_NSS/RX_NSS - Only CONFIG_NSS is applied
* since only one of the TX_NSS or RX_NSS attribute is present.
*
* Case 2: CONFIG_NSS + CONFIG_TX_NSS + CONFIG_RX_NSS - Same NSS values are
* used to configure TX,RX in both the 2.4 GHz and 5/6 GHz bands.
*
* Case 3: Case 2 + NUM_TX_CHAINS + NUM_RX_CHAINS - The NSS and the number of
* chains values are used to configure TX,RX in both the 2.4 GHz and 5/6 GHz
* bands.
*
* Case 4: TX_NSS_2GHZ/TX_NSS_5GHZ + RX_NSS_2GHZ/RX_NSS_5GHZ - Since per band
* TX/RX NSS attribute is missing, the driver rejects the command.
*
* Case 5: TX_NSS_2GHZ + TX_NSS_5GHZ + RX_NSS_2GHZ + RX_NSS_5GHZ - The 2.4 GHz
* band is configured with the TX_NSS_2GHZ, RX_NSS_2GHZ values. The 5/6 GHz band
* is configured with the TX_NSS_5GHZ, RX_NSS_5GHZ values.
*
* Case 6: TX_CHAINS_2GHZ/TX_CHAINS_5GHZ + RX_CHAINS_5GHZ/RX_CHAINS_5GHZ - Since
* per band TX/RX chains attribute is missing, the driver rejects the command.
*
* Case 7: TX_CHAINS_2GHZ + TX_CHAINS_5GHZ + RX_CHAINS_5GHZ + RX_CHAINS_5GHZ -
* The 2.4 GHz band is configured with the TX_CHAINS_2GHZ, RX_CHAINS_2GHZ
* values. The 5/6 GHz band is configured with the TX_CHAINS_5GHZ,
* RX_CHAINS_5GHZ values.
*
* Case 8: Case 5 + Case 7 - Per band TX,RX NSS and chains are configured.
*
* Case 9: Case 2 + Case 8 - Per band TX,RX NSS and chains are configured.
*/
/**
@ -3508,6 +3575,30 @@ enum qca_wlan_vendor_attr_config {
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_REDUCED_POWER_SCAN_MODE = 109,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_2GHZ = 110,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_2GHZ = 111,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_TX_NSS_5GHZ = 112,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS_5GHZ = 113,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_2GHZ = 114,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_2GHZ = 115,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS_5GHZ = 116,
/* 8-bit unsigned value. Refer to TX/RX NSS and chain configurations */
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS_5GHZ = 117,
/* keep last */
QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =