]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Vendor command to configure concurrent STA connection policies
authorSunil Dutt <usdutt@codeaurora.org>
Wed, 17 Mar 2021 15:53:45 +0000 (08:53 -0700)
committerJouni Malinen <j@w1.fi>
Mon, 19 Apr 2021 21:54:00 +0000 (00:54 +0300)
Introduce a QCA vendor command to configure the concurrent connection
policies when multiple STA interfaces are (getting) active.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/common/qca-vendor.h

index 32c93bb84d54ca84843e5220a08cf00d6ae564df..4a56e4c31eac8cf40132f26377d7d9bede66ae2a 100644 (file)
@@ -700,6 +700,10 @@ enum qca_radiotap_vendor_ids {
  *     used with this event are defined in enum
  *     qca_wlan_vendor_attr_mbssid_tx_vdev_status.
  *
+ * @QCA_NL80211_VENDOR_SUBCMD_CONCURRENT_MULTI_STA_POLICY: Vendor command to
+ *     configure the concurrent session policies when multiple STA interfaces
+ *     are (getting) active. The attributes used by this command are defined
+ *     in enum qca_wlan_vendor_attr_concurrent_sta_policy.
  */
 enum qca_nl80211_vendor_subcmds {
        QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@@ -886,6 +890,7 @@ enum qca_nl80211_vendor_subcmds {
        QCA_NL80211_VENDOR_SUBCMD_UPDATE_SSID = 194,
        QCA_NL80211_VENDOR_SUBCMD_WIFI_FW_STATS = 195,
        QCA_NL80211_VENDOR_SUBCMD_MBSSID_TX_VDEV_STATUS = 196,
+       QCA_NL80211_VENDOR_SUBCMD_CONCURRENT_MULTI_STA_POLICY = 197,
 };
 
 enum qca_wlan_vendor_attr {
@@ -2399,6 +2404,26 @@ enum qca_wlan_vendor_attr_config {
         */
        QCA_WLAN_VENDOR_ATTR_CONFIG_RX_NSS = 78,
 
+       /*
+        * 8-bit unsigned value. This attribute, when set, indicates whether the
+        * specified interface is the primary STA interface when there are more
+        * than one STA interfaces concurrently active.
+        *
+        * This configuration helps the firmware/hardware to support certain
+        * features (e.g., roaming) on this primary interface, if the same
+        * cannot be supported on the concurrent STA interfaces simultaneously.
+        *
+        * This configuration is only applicable for a single STA interface on
+        * a device and gives the priority for it only over other concurrent STA
+        * interfaces.
+        *
+        * If the device is a multi wiphy/soc, this configuration applies to a
+        * single STA interface across the wiphys.
+        *
+        * 1-Enable (is the primary STA), 0-Disable (is not the primary STA)
+        */
+       QCA_WLAN_VENDOR_ATTR_CONFIG_CONCURRENT_STA_PRIMARY = 79,
+
        /* keep last */
        QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
        QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =
@@ -10708,6 +10733,58 @@ enum qca_wlan_vendor_attr_mbssid_tx_vdev_status {
        QCA_WLAN_VENDOR_ATTR_MBSSID_TX_VDEV_STATUS_AFTER_LAST - 1,
 };
 
+/**
+ * enum qca_wlan_concurrent_sta_policy_config - Concurrent STA policies
+ *
+ * @QCA_WLAN_CONCURRENT_STA_POLICY_PREFER_PRIMARY: Preference to the primary
+ * STA interface has to be given while selecting the connection policies
+ * (e.g., BSSID, band, TX/RX chains, etc.) for the subsequent STA interface.
+ * An interface is set as primary through the attribute
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_CONCURRENT_STA_PRIMARY. This policy is not
+ * applicable if the primary interface has not been set earlier.
+ *
+ * The intention is not to downgrade the primary STA performance, such as:
+ * - Do not reduce the number of TX/RX chains of primary connection.
+ * - Do not optimize DBS vs. MCC/SCC, if DBS ends up reducing the number of
+ *   chains.
+ * - If using MCC, should set the MCC duty cycle of the primary connection to
+ *   be higher than the secondary connection.
+ *
+ * @QCA_WLAN_CONCURRENT_STA_POLICY_UNBIASED: The connection policies for the
+ * subsequent STA connection shall be chosen to balance with the existing
+ * concurrent STA's performance.
+ * Such as
+ * - Can choose MCC or DBS mode depending on the MCC efficiency and hardware
+ *   capability.
+ * - If using MCC, set the MCC duty cycle of the primary connection to be equal
+ *   to the secondary.
+ * - Prefer BSSID candidates which will help provide the best "overall"
+ *   performance for all the STA connections.
+ */
+enum qca_wlan_concurrent_sta_policy_config {
+       QCA_WLAN_CONCURRENT_STA_POLICY_PREFER_PRIMARY = 0,
+       QCA_WLAN_CONCURRENT_STA_POLICY_UNBIASED = 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_concurrent_sta_policy - Defines attributes
+ * used by QCA_NL80211_VENDOR_SUBCMD_CONCURRENT_MULTI_STA_POLICY vendor command.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_CONFIG:
+ * u8 attribute. Configures the concurrent STA policy configuration.
+ * Possible values are defined in enum qca_wlan_concurrent_sta_policy_config.
+ */
+enum qca_wlan_vendor_attr_concurrent_sta_policy {
+       QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_INVALID = 0,
+       QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_CONFIG = 1,
+
+       /* keep last */
+       QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_AFTER_LAST,
+       QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_MAX =
+       QCA_WLAN_VENDOR_ATTR_CONCURRENT_STA_POLICY_AFTER_LAST - 1,
+
+};
+
 /**
  * enum qca_sta_connect_fail_reason_codes - Defines values carried
  * by QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_CONNECT_FAIL_REASON_CODE vendor