Add QCA vendor interface support for Spatial Reuse (SR) feature
Add a new vendor sub-command to implement Spatial Reuse feature. Userspace enables SR feature with specific configuration parameters. The driver/firmware upon receiving the command, enables the SR feature if it is supported by the currently connected AP. The driver may reject the command if it cannot enable the SR with the configured parameters. The driver sends events to userspace to indicate when SR feature is enabled or disabled internally. Userspace can also query SR feature related parameters and statistics from the driver/firmware as needed. Signed-off-by: Rachit Kankane <quic_rkankane@quicinc.com> Signed-off-by: Aleti Nageshwar Reddy <quic_anageshw@quicinc.com>
This commit is contained in:
parent
1f39f85b72
commit
e1105bab89
1 changed files with 264 additions and 0 deletions
|
@ -841,6 +841,17 @@ enum qca_radiotap_vendor_ids {
|
|||
*
|
||||
* The attributes used with this command are defined in
|
||||
* enum qca_wlan_vendor_attr_sar_capability.
|
||||
*
|
||||
* @QCA_NL80211_VENDOR_SUBCMD_SR: Subcommand used to implement Spatial Reuse
|
||||
* (SR) feature. This command is used by userspace to configure SR
|
||||
* parameters to the driver and to get the SR related parameters and
|
||||
* statistics with synchronous responses from the driver.
|
||||
* The driver also uses this command to send asynchronous events to
|
||||
* userspace to indicate suspend/resume of SR feature and changes
|
||||
* in SR parameters.
|
||||
*
|
||||
* The attributes used with this command are defined in
|
||||
* enum qca_wlan_vendor_attr_sr.
|
||||
*/
|
||||
enum qca_nl80211_vendor_subcmds {
|
||||
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
|
||||
|
@ -1044,6 +1055,7 @@ enum qca_nl80211_vendor_subcmds {
|
|||
QCA_NL80211_VENDOR_SUBCMD_COAP_OFFLOAD = 217,
|
||||
QCA_NL80211_VENDOR_SUBCMD_SCS_RULE_CONFIG = 218,
|
||||
QCA_NL80211_VENDOR_SUBCMD_GET_SAR_CAPABILITY = 219,
|
||||
QCA_NL80211_VENDOR_SUBCMD_SR = 220,
|
||||
};
|
||||
|
||||
/* Compatibility defines for previously used subcmd names.
|
||||
|
@ -13297,4 +13309,256 @@ enum qca_wlan_vendor_attr_sar_capability {
|
|||
QCA_WLAN_VENDOR_ATTR_SAR_CAPABILITY_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_vendor_attr_sr_stats - Attributes for Spatial Reuse statistics.
|
||||
* These statistics are sent from the driver in a response when userspace
|
||||
* queries to get the statistics using the operation
|
||||
* %QCA_WLAN_SR_OPERATION_GET_STATS. These statistics are reset
|
||||
* by the driver when the SR feature is enabled, when the driver receives
|
||||
* %QCA_WLAN_SR_OPERATION_CLEAR_STATS operation, or when disconnected.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_OPPORTUNITIES_COUNT: u32 attribute.
|
||||
* Mandatory only when non-SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of non-SRG TX opportunities.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_PPDU_TRIED_COUNT: u32 attribute.
|
||||
* Mandatory only when non-SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of non-SRG PPDUs tried to transmit.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_PPDU_SUCCESS_COUNT: u32 attribute.
|
||||
* Mandatory only when non-SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of non-SRG PPDUs successfully transmitted.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_OPPORTUNITIES_COUNT: u32 attribute.
|
||||
* Mandatory only when SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of SRG TX opportunities.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_PPDU_TRIED_COUNT: u32 attribute.
|
||||
* Mandatory only when SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of SRG PPDUs tried to transmit.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_PPDU_SUCCESS_COUNT: u32 attribute.
|
||||
* Mandatory only when SRG is supported by the AP and optional otherwise.
|
||||
* This represents the number of SRG PPDUs successfully transmitted.
|
||||
*/
|
||||
enum qca_wlan_vendor_attr_sr_stats {
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_INVALID = 0,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_OPPORTUNITIES_COUNT = 1,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_PPDU_TRIED_COUNT = 2,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_NON_SRG_TX_PPDU_SUCCESS_COUNT = 3,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_OPPORTUNITIES_COUNT = 4,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_PPDU_TRIED_COUNT = 5,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_SRG_TX_PPDU_SUCCESS_COUNT = 6,
|
||||
|
||||
/* Keep last */
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_AFTER_LAST,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_MAX =
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_sr_reason_code - Defines the different reason codes used in
|
||||
* Spatial Reuse feature.
|
||||
*
|
||||
* @QCA_WLAN_SR_REASON_CODE_ROAMING: The SR feature is disabled/enabled due to
|
||||
* roaming to an AP that doesn't support/supports SR feature, respectively.
|
||||
*
|
||||
* @QCA_WLAN_SR_REASON_CODE_CONCURRENCY: The SR feature is disabled/enabled due
|
||||
* to change in concurrent interfaces that are supported by the driver.
|
||||
*/
|
||||
enum qca_wlan_sr_reason_code {
|
||||
QCA_WLAN_SR_REASON_CODE_ROAMING = 0,
|
||||
QCA_WLAN_SR_REASON_CODE_CONCURRENCY = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_sr_operation - Defines the different types of SR operations.
|
||||
* The values are used inside attribute %QCA_WLAN_VENDOR_ATTR_SR_OPERATION.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_SR_ENABLE: Userspace sends this operation to the
|
||||
* driver to enable the Spatial Reuse feature. Attributes
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_PD_THRESHOLD and
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_PD_THRESHOLD are used with this
|
||||
* operation.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_SR_DISABLE: Userspace sends this operation to the
|
||||
* driver to disable the Spatial Reuse feature.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_SR_SUSPEND: The driver uses this operation in an
|
||||
* asynchronous event sent to userspace when the SR feature is disabled.
|
||||
* The disable reason is encoded in QCA_WLAN_VENDOR_ATTR_SR_PARAMS_REASON_CODE
|
||||
* and sent along with the asynchronous event.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_SR_RESUME: The driver uses this operation in an
|
||||
* asynchronous event when the SR feature is enabled again after the SR feature
|
||||
* was suspended by the driver earlier. The enable reason is
|
||||
* encoded in QCA_WLAN_VENDOR_ATTR_SR_PARAMS_REASON_CODE. Attributes used are
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_PD_THRESHOLD and
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_PD_THRESHOLD.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_PSR_AND_NON_SRG_OBSS_PD_PROHIBIT: This operation is
|
||||
* used to prohibit PSR-based spatial reuse and non-SRG OBSS PD-based spatial
|
||||
* reuse transmissions. Userspace sends this operation to the driver.
|
||||
* The driver/firmware upon receiving this operation shall prohibit PSR-based
|
||||
* spatial reuse and non-SRG OBSS PD-based spatial reuse transmissions.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_PSR_AND_NON_SRG_OBSS_PD_ALLOW: This operation is
|
||||
* used to allow PSR-based spatial reuse and non-SRG OBSS PD-based spatial
|
||||
* reuse transmissions. Userspace sends this operation to the driver.
|
||||
* The driver/firmware upon receiving this operation shall allow PSR-based
|
||||
* spatial reuse and non-SRG OBSS PD-based spatial reuse transmissions.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_GET_STATS: Userspace sends this operation to the
|
||||
* driver to get the SR statistics and the driver sends a synchronous response
|
||||
* with the attributes defined in enum qca_wlan_vendor_attr_sr_stats using the
|
||||
* nested attribute %QCA_WLAN_VENDOR_ATTR_SR_STATS.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_CLEAR_STATS: Userspace sends this operation to the
|
||||
* driver to clear the SR statistics and upon receiving this operation
|
||||
* the driver/firmware shall clear the SR statistics.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_GET_PARAMS: Userspace sends this operation to the
|
||||
* driver to get the SR parameters and the driver sends the synchronous response
|
||||
* with the following required attributes:
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MIN_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MAX_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_MAX_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_HESIGA_VAL15_ENABLE,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_DISALLOW.
|
||||
*
|
||||
* @QCA_WLAN_SR_OPERATION_UPDATE_PARAMS: The driver uses this operation in an
|
||||
* asynchronous event to userspace to update any changes in SR parameters.
|
||||
* The following attributes are used with this operation:
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MIN_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MAX_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_MAX_OFFSET,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_HESIGA_VAL15_ENABLE,
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_DISALLOW.
|
||||
*/
|
||||
enum qca_wlan_sr_operation {
|
||||
QCA_WLAN_SR_OPERATION_SR_ENABLE = 0,
|
||||
QCA_WLAN_SR_OPERATION_SR_DISABLE = 1,
|
||||
QCA_WLAN_SR_OPERATION_SR_SUSPEND = 2,
|
||||
QCA_WLAN_SR_OPERATION_SR_RESUME = 3,
|
||||
QCA_WLAN_SR_OPERATION_PSR_AND_NON_SRG_OBSS_PD_PROHIBIT = 4,
|
||||
QCA_WLAN_SR_OPERATION_PSR_AND_NON_SRG_OBSS_PD_ALLOW = 5,
|
||||
QCA_WLAN_SR_OPERATION_GET_STATS = 6,
|
||||
QCA_WLAN_SR_OPERATION_CLEAR_STATS = 7,
|
||||
QCA_WLAN_SR_OPERATION_GET_PARAMS = 8,
|
||||
QCA_WLAN_SR_OPERATION_UPDATE_PARAMS = 9,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_vendor_attr_sr_params - Defines attributes for SR configuration
|
||||
* parameters used by attribute %QCA_WLAN_VENDOR_ATTR_SR_PARAMS.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_HESIGA_VAL15_ENABLE: Flag attribute.
|
||||
* This attribute is optionally set in response to
|
||||
* %QCA_WLAN_SR_OPERATION_GET_PARAMS and in request when operation is set to
|
||||
* %QCA_WLAN_SR_OPERATION_PSR_AND_NON_SRG_OBSS_PD_PROHIBIT. Refer IEEE Std
|
||||
* 802.11ax-2021 Figure 9-788r-SR Control field format to understand more
|
||||
* about HESIGA_Spatial_reuse_value15_allowed.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_DISALLOW: Flag attribute.
|
||||
* This attribute is used in response to %QCA_WLAN_SR_OPERATION_GET_PARAMS
|
||||
* operation. This indicates whether non-SRG OBSS PD SR transmissions are
|
||||
* allowed or not at non-AP STAs that are associated with the AP. If present
|
||||
* non-SRG OBSS PD SR transmissions are not allowed else are allowed.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MIN_OFFSET: Optional u8
|
||||
* attribute. This attribute is used in response to
|
||||
* %QCA_WLAN_SR_OPERATION_GET_PARAMS operation. This indicates the SRG OBSS PD
|
||||
* Min Offset field which contains an unsigned integer that is added to -82 dBm
|
||||
* to generate the value of the SRG OBSS PD Min parameter.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MAX_OFFSET: Optional u8
|
||||
* attribute. This attribute is used in response to
|
||||
* %QCA_WLAN_SR_OPERATION_GET_PARAMS operation. This indicates the SRG OBSS PD
|
||||
* Max Offset field which contains an unsigned integer that is added to -82 dBm
|
||||
* to generate the value of the SRG OBSS PD Max parameter.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_MAX_OFFSET: Optional u8
|
||||
* attribute. This attribute is used in response to
|
||||
* %QCA_WLAN_SR_OPERATION_GET_PARAMS operation. This indicates the Non-SRG OBSS
|
||||
* PD Max Offset field which contains an unsigned integer that is added to -82
|
||||
* dBm to generate the value of the Non-SRG OBSS PD Max parameter.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_PD_THRESHOLD: s32 attribute (in dBm).
|
||||
* Userspace optionally sends this attribute with
|
||||
* %QCA_WLAN_SR_OPERATION_SR_ENABLE operation to the driver to specify the
|
||||
* preferred SRG PD threshold. The driver shall send this attribute to
|
||||
* userspace in SR resume event to indicate the PD threshold being used for SR.
|
||||
* When there is change in SRG PD threshold (for example, due to roaming, etc.)
|
||||
* the driver shall indicate the userspace the newly configured SRG PD threshold
|
||||
* using an asynchronous event.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_PD_THRESHOLD: s32 attribute (in dBm).
|
||||
* Userspace optionally sends this attribute with
|
||||
* %QCA_WLAN_SR_OPERATION_SR_ENABLE operation to the driver to specify the
|
||||
* preferred non-SRG PD threshold. The driver shall send this attribute to
|
||||
* userspace in SR resume event to indicate the PD threshold being used for SR.
|
||||
* When there is change in non-SRG PD threshold (for example, due to roaming,
|
||||
* etc.) the driver shall indicate the userspace the newly configured non-SRG PD
|
||||
* threshold using an asynchronous event.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS_REASON_CODE: u32 attribute. The possible
|
||||
* values are defined in enum qca_wlan_sr_reason_code. This
|
||||
* attribute is used with %QCA_WLAN_SR_OPERATION_SR_RESUME and
|
||||
* %QCA_WLAN_SR_OPERATION_SR_SUSPEND operations.
|
||||
*/
|
||||
enum qca_wlan_vendor_attr_sr_params {
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_INVALID = 0,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_HESIGA_VAL15_ENABLE = 1,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_DISALLOW = 2,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MIN_OFFSET = 3,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_OBSS_PD_MAX_OFFSET = 4,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_OBSS_PD_MAX_OFFSET = 5,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_SRG_PD_THRESHOLD = 6,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_NON_SRG_PD_THRESHOLD = 7,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_REASON_CODE = 8,
|
||||
|
||||
/* keep last */
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_AFTER_LAST,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_MAX =
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_vendor_attr_sr - Defines the attributes used by the vendor
|
||||
* command QCA_NL80211_VENDOR_SUBCMD_SR.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_OPERATION: Mandatory u8 attribute for all requests
|
||||
* from userspace to the driver. Possible values are defined in enum
|
||||
* qca_wlan_sr_operation.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_PARAMS: Nested attribute, contains the SR
|
||||
* configuration parameters. The possible attributes inside this attribute are
|
||||
* defined in enum qca_wlan_vendor_attr_sr_params.
|
||||
* This attribute is used when QCA_WLAN_VENDOR_ATTR_SR_OPERATION is set to
|
||||
* %QCA_WLAN_SR_OPERATION_SR_ENABLE in requests from userspace to the driver and
|
||||
* also in response from the driver to userspace when the response is sent for
|
||||
* %QCA_WLAN_SR_OPERATION_GET_PARAMS.
|
||||
* The driver uses this attribute in asynchronous events in which the operation
|
||||
* is set to %QCA_WLAN_SR_OPERATION_SR_RESUME,
|
||||
* %QCA_WLAN_SR_OPERATION_SR_SUSPEND or %QCA_WLAN_SR_OPERATION_UPDATE_PARAMS.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_SR_STATS: Nested attribute, contains the SR
|
||||
* statistics. These attributes used inside this are defined in enum
|
||||
* qca_wlan_vendor_attr_sr_stats.
|
||||
* This attribute is used in response from the driver to a command in which
|
||||
* %QCA_WLAN_VENDOR_ATTR_SR_OPERATION is set to
|
||||
* %QCA_WLAN_SR_OPERATION_GET_STATS.
|
||||
*/
|
||||
enum qca_wlan_vendor_attr_sr {
|
||||
QCA_WLAN_VENDOR_ATTR_SR_INVALID = 0,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_OPERATION = 1,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_PARAMS = 2,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_STATS = 3,
|
||||
|
||||
/* Keep last */
|
||||
QCA_WLAN_VENDOR_ATTR_SR_AFTER_LAST,
|
||||
QCA_WLAN_VENDOR_ATTR_SR_MAX =
|
||||
QCA_WLAN_VENDOR_ATTR_SR_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
#endif /* QCA_VENDOR_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue