diff --git a/src/common/qca-vendor.h b/src/common/qca-vendor.h index c0e19b7a0..33e3eb90a 100644 --- a/src/common/qca-vendor.h +++ b/src/common/qca-vendor.h @@ -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 =