qcacmn: Add new vendor attributes to avoid coex unsafe frequencies

Add additional attributes in QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_EXT
vendor sub command to avoid usage of unsafe frequencies on wifi
interfaces sent from userspace to the driver/firmware.
The driver/firmware shall use restrictions and power cap accordingly
to restrict the usage of these frequencies on operating interface(s).

Change-Id: Ib2234137e436f1ddfe1163aed6e1d4b291f19aa8
CRs-Fixed: 3098836
This commit is contained in:
Mukul Sharma
2021-12-23 11:42:55 +05:30
committed by Madan Koyyalamudi
parent 8883f9c1c7
commit 7a88422105

View File

@@ -400,7 +400,15 @@
* This new command is alternative to existing command
* QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY since existing command/event
* is using stream of bytes instead of structured data using vendor
* attributes.
* attributes. User space sends unsafe frequency ranges to the driver using
* a nested attribute %QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_RANGE. On
* reception of this command, the driver shall check if an interface is
* operating on an unsafe frequency and the driver shall try to move to a
* safe channel when needed. If the driver is not able to find a safe
* channel the interface can keep operating on an unsafe channel with the
* TX power limit derived based on internal configurations like
* regulatory/SAR rules.
*
* @QCA_NL80211_VENDOR_SUBCMD_ADD_STA_NODE: This vendor subcommand is used to
* add the STA node details in driver/firmware. Attributes for this event
* are specified in enum qca_wlan_vendor_attr_add_sta_node_params.
@@ -10521,20 +10529,48 @@ enum qca_wlan_vendor_attr_oem_data_params {
*
* @QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_RANGE: Required
* Nested attribute containing multiple ranges with following attributes:
* QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START and
* QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END.
* QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START,
* QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END, and
* QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM.
*
* @QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START: Required (u32)
* Starting center frequency in MHz.
*
* @QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END: Required (u32)
* Ending center frequency in MHz.
*
* @QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM:
* s32 attribute, optional. It is a per frequency range attribute.
* The maximum TX power limit from user space is to be applied on an
* unrestricted interface for corresponding frequency range. It is also
* possible that the actual TX power may be even lower than this cap due to
* other considerations such as regulatory compliance, SAR, etc. In absence of
* this attribute the driver shall follow current behavior which means
* interface (SAP/P2P) function can keep operating on an unsafe channel with TX
* power derived by the driver based on regulatory/SAR during interface up.
*
* @QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_IFACES_BITMASK:
* u32 attribute, optional. Indicates all the interface types which are
* restricted for all frequency ranges provided in
* %QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START and
* %QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END.
* This attribute encapsulates bitmasks of interface types defined in
* enum nl80211_iftype. If an interface is marked as restricted the driver must
* move to a safe channel and if no safe channel is available the driver shall
* terminate that interface functionality. In absence of this attribute,
* interface (SAP/P2P) can still continue operating on an unsafe channel with
* TX power limit derived from either
* %QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM or based on
* regulatory/SAE limits if %QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM
* is not provided.
*/
enum qca_wlan_vendor_attr_avoid_frequency_ext {
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_RANGE = 1,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_START = 2,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_END = 3,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_POWER_CAP_DBM = 4,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_IFACES_BITMASK = 5,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_MAX =