Merge "wpa_supplicant_lib: Fix integer overflow in result_copy_to_buf" into wlan-aosp.lnx.13.0
diff --git a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
index d7ea184..8fb06cb 100644
--- a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
+++ b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
@@ -6540,6 +6540,63 @@
return ret;
}
+static int wpa_driver_cfg_coex_traffic_shaping(struct i802_bss *bss, char *cmd)
+{
+ struct wpa_driver_nl80211_data *drv;
+ struct nl_msg *nlmsg;
+ struct nlattr *attr;
+ int ret;
+ u8 traffic_shaping_mode;
+
+ cmd = skip_white_space(cmd);
+ if (*cmd == '\0') {
+ wpa_printf(MSG_ERROR, "traffic shaping mode is missing");
+ return -EINVAL;
+ }
+
+ drv = bss->drv;
+ traffic_shaping_mode = get_u8_from_string(cmd, &ret);
+ if (ret < 0) {
+ wpa_printf(MSG_ERROR, "traffic shaping mode is invalid");
+ return ret;
+ }
+
+ if (traffic_shaping_mode > 1) {
+ wpa_printf(MSG_ERROR, "Invalid traffic_shaping_mode %d",
+ traffic_shaping_mode);
+ return -EINVAL;
+ }
+
+ nlmsg = prepare_vendor_nlmsg(drv, bss->ifname,
+ QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION);
+ if (!nlmsg) {
+ wpa_printf(MSG_ERROR, "Failed to allocate nlmsg for traffic_shaping_mode cmd");
+ return -ENOMEM;
+ }
+
+ attr = nla_nest_start(nlmsg, NL80211_ATTR_VENDOR_DATA);
+ if (!attr) {
+ ret = -ENOMEM;
+ wpa_printf(MSG_ERROR, "Failed to create traffic_shaping_mode cmd nl attribute");
+ goto nlmsg_fail;
+ }
+ if (nla_put_u8(nlmsg, QCA_WLAN_VENDOR_ATTR_CONFIG_COEX_TRAFFIC_SHAPING_MODE,
+ traffic_shaping_mode)) {
+ ret = -ENOMEM;
+ wpa_printf(MSG_ERROR, "Failed to put traffic_shaping_mode value");
+ goto nlmsg_fail;
+ }
+ nla_nest_end(nlmsg, attr);
+
+ ret = send_nlmsg((struct nl_sock *)drv->global->nl, nlmsg, NULL, NULL);
+ if (ret)
+ wpa_printf(MSG_ERROR, "Failed to send traffic_shaping_mode nlmsg, error:%d", ret);
+ return ret;
+nlmsg_fail:
+ nlmsg_free(nlmsg);
+ return ret;
+}
+
int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf,
size_t buf_len )
{
@@ -6900,6 +6957,13 @@
*/
cmd += 14;
return wpa_driver_ps_config_cmd(bss, cmd);
+ } else if (os_strncasecmp(cmd, "COEX_TRAFFIC_SHAPING_MODE ", 26) == 0) {
+ /* DRIVER COEX_TRAFFIC_SHAPING_MODE <mode>
+ * <mode> = 0 (All traffic shaping disabled and fixed arbitration config)
+ * <mode> = 1 (enable coex algos)
+ */
+ cmd += 26;
+ return wpa_driver_cfg_coex_traffic_shaping(bss, cmd);
} else { /* Use private command */
memset(&ifr, 0, sizeof(ifr));
memset(&priv_cmd, 0, sizeof(priv_cmd));
diff --git a/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h b/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
index aade3ae..08cb9ab 100644
--- a/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
+++ b/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
@@ -920,7 +920,9 @@
* In some implementations, MLO has multiple netdevs out of which one
* netdev is designated as primary to provide a unified interface to the
* bridge. In those implementations this event is sent on every MLO peer
- * connection.
+ * connection. User applications on an AP MLD will use this event to get
+ * info for all the links from non-AP MLD that were negotiated to be used
+ * for the ML association.
*
* The attributes used with this event are defined in
* enum qca_wlan_vendor_attr_mlo_peer_prim_netdev_event.
@@ -1016,6 +1018,12 @@
*
* Uses the attributes defined in
* enum qca_wlan_vendor_attr_tdls_disc_rsp_ext.
+ *
+ * @QCA_NL80211_VENDOR_SUBCMD_TX_LATENCY: This vendor subcommand is used to
+ * configure, retrieve, and report per-link transmit latency statistics.
+ *
+ * The attributes used with this subcommand are defined in
+ * enum qca_wlan_vendor_attr_tx_latency.
*/
enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
@@ -1232,6 +1240,7 @@
QCA_NL80211_VENDOR_SUBCMD_LINK_RECONFIG = 230,
QCA_NL80211_VENDOR_SUBCMD_TDLS_DISC_RSP_EXT = 231,
/* 232 - reserved for QCA */
+ QCA_NL80211_VENDOR_SUBCMD_TX_LATENCY = 233,
};
/* Compatibility defines for previously used subcmd names.
@@ -1444,6 +1453,23 @@
*/
QCA_WLAN_VENDOR_ATTR_SETBAND_MASK = 43,
+ /* Unsigned 8-bit used by QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES.
+ * This field describes the maximum number of links supported by the
+ * chip for MLO association.
+ * This is an optional attribute.
+ */
+ QCA_WLAN_VENDOR_ATTR_MLO_CAPABILITY_MAX_ASSOCIATION_COUNT = 44,
+
+ /* Unsigned 8-bit used by QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES.
+ * This field describes the maximum number of Simultaneous Transmit
+ * and Receive (STR) links used in Multi-Link Operation.
+ * The maximum number of STR links used can be different
+ * from the maximum number of radios supported by the chip.
+ * This is a static configuration of the chip.
+ * This is an optional attribute.
+ */
+ QCA_WLAN_VENDOR_ATTR_MLO_CAPABILITY_MAX_STR_LINK_COUNT = 45,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_MAX = QCA_WLAN_VENDOR_ATTR_AFTER_LAST - 1,
@@ -2445,9 +2471,11 @@
* used to calculate statistics like average the TSF offset or average
* number of frame leaked.
* For instance, upon Beacon frame reception:
- * current_avg = ((beacon_TSF - TBTT) * factor + previous_avg * (0x10000 - factor) ) / 0x10000
+ * current_avg = ((beacon_TSF - TBTT) * factor +
+ * previous_avg * (0x10000 - factor)) / 0x10000
* For instance, when evaluating leaky APs:
- * current_avg = ((num frame received within guard time) * factor + previous_avg * (0x10000 - factor)) / 0x10000
+ * current_avg = ((num frame received within guard time) * factor +
+ * previous_avg * (0x10000 - factor)) / 0x10000
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR = 2,
/* Unsigned 32-bit value to configure guard time, i.e., when
@@ -2576,7 +2604,10 @@
/* 32-bit unsigned value to set reorder timeout for AC_BK */
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_REORDER_TIMEOUT_BACKGROUND = 34,
/* 6-byte MAC address to point out the specific peer */
- QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC = 35,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PEER_MAC = 35,
+ /* Backward compatibility with the original name */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_PEER_MAC =
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PEER_MAC,
/* 32-bit unsigned value to set window size for specific peer */
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_BLOCKSIZE_WINLIMIT = 36,
/* 8-bit unsigned value to set the beacon miss threshold in 2.4 GHz */
@@ -3137,21 +3168,7 @@
* %QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINKS to specify the maximum
* supported channel width update type per-MLO link.
*
- * valid values:
- * 0 - The maximum allowed bandwidth change is applicable for both Tx
- * and Rx paths. The driver shall conduct OMI operation as defined
- * in 26.9 (Operating mode indication) or OMN operation as
- * defined in 11.40 (Notification of operating mode
- * changes) in IEEE P802.11-REVme/D2.0 with AP to indicate the
- * change in the maximum allowed operating bandwidth.
- * 1 - Limit the change in maximum allowed bandwidth only to Tx path.
- * In this case the driver doesn't need to conduct OMI/OMN
- * operation since %QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH is
- * expected to be less than the current connection maximum
- * negotiated bandwidth.
- * For example: Negotiated maximum bandwidth is 160 MHz and the new
- * maximum bandwidth configured is 80 MHz, now the driver limits
- * the maximum bandwidth to 80 MHz only in the Tx path.
+ * Uses enum qca_chan_width_update_type values.
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE = 96,
@@ -3235,6 +3252,52 @@
*/
QCA_WLAN_VENDOR_ATTR_CONFIG_OPM_SPEC_WAKE_INTERVAL = 102,
+ /*
+ * 16-bit unsigned value to configure TX max A-MPDU count.
+ *
+ * For STA interface, this attribute is applicable only in connected
+ * state, peer MAC address is not required to be provided.
+ *
+ * For AP interface, this attribute is applicable only in started
+ * state and one of the associated peer STAs must be specified with
+ * QCA_WLAN_VENDOR_ATTR_CONFIG_PEER_MAC. If this is for an ML
+ * association, the peer MAC address provided is the link address of
+ * the non-AP MLD.
+ *
+ * This attribute runtime configures the TX maximum aggregation size.
+ * The value must be in range of 1 to BA window size for the specific
+ * peer.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PEER_AMPDU_CNT = 103,
+
+ /*
+ * 8-bit unsigned value to configure TID-to-link mapping negotiation
+ * type.
+ * Uses enum qca_wlan_ttlm_negotiation_support values.
+ *
+ * This value applies to the complete AP/non-AP MLD interface, and the
+ * MLD advertises it within the Basic Multi-Link element in the
+ * association frames. If a new value is configured during an active
+ * connection, it will take effect in the subsequent associations and
+ * is not reset during disconnection.
+ *
+ * This attribute is used for testing purposes.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_TTLM_NEGOTIATION_SUPPORT = 104,
+
+ /* 8-bit unsigned value.
+ *
+ * This attribute configures a traffic shaping mode
+ * applied during coex scenarios.
+ * By default all coex traffic shaping modes are enabled,
+ * i.e., shape WLAN traffic based on coex traffic pattern and priority.
+ * To shape traffic, STA may enter in power save mode
+ * and AP may send CTS-to-self frame.
+ *
+ * Uses enum qca_coex_traffic_shaping_mode values.
+ */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_COEX_TRAFFIC_SHAPING_MODE = 105,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =
@@ -4360,16 +4423,16 @@
* statistics depending on the peer_mac.
*/
enum qca_wlan_ll_stats_clr_req_bitmap {
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO = BIT(0),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_CCA = BIT(1),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_CHANNELS = BIT(2),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_SCAN = BIT(3),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE = BIT(4),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_TXRATE = BIT(5),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_AC = BIT(6),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO = BIT(0),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_CCA = BIT(1),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_CHANNELS = BIT(2),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_RADIO_SCAN = BIT(3),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE = BIT(4),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_TXRATE = BIT(5),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_AC = BIT(6),
QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_CONTENTION = BIT(7),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_ALL_PEER = BIT(8),
- QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_PER_PEER = BIT(9),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_ALL_PEER = BIT(8),
+ QCA_WLAN_LL_STATS_CLR_REQ_BITMAP_IFACE_PER_PEER = BIT(9),
};
enum qca_wlan_vendor_attr_ll_stats_clr {
@@ -4410,8 +4473,8 @@
enum qca_wlan_ll_stats_get_req_bitmap {
QCA_WLAN_LL_STATS_GET_REQ_BITMAP_RADIO = BIT(0),
QCA_WLAN_LL_STATS_GET_REQ_BITMAP_IFACE = BIT(1),
- QCA_WLAN_LL_STATS_GET_REQ_BITMAP_ALL_PEER = BIT(2),
- QCA_WLAN_LL_STATS_GET_REQ_BITMAP_PER_PEER = BIT(3),
+ QCA_WLAN_LL_STATS_GET_REQ_BITMAP_ALL_PEER = BIT(2),
+ QCA_WLAN_LL_STATS_GET_REQ_BITMAP_PER_PEER = BIT(3),
};
enum qca_wlan_vendor_attr_ll_stats_get {
@@ -5280,7 +5343,10 @@
* due to poor RSSI of the connected AP.
* @QCA_ROAM_TRIGGER_REASON_BETTER_RSSI: Set if the roam has to be triggered
* upon finding a BSSID with a better RSSI than the connected BSSID.
- * Here the RSSI of the current BSSID need not be poor.
+ * Also, set if the roam has to be triggered due to the high RSSI of the
+ * current connected AP (better than
+ * QCA_ATTR_ROAM_CONTROL_CONNECTED_HIGH_RSSI_OFFSET). Here the RSSI of
+ * the current BSSID need not be poor.
* @QCA_ROAM_TRIGGER_REASON_PERIODIC: Set if the roam has to be triggered
* by triggering a periodic scan to find a better AP to roam.
* @QCA_ROAM_TRIGGER_REASON_DENSE: Set if the roam has to be triggered
@@ -5623,7 +5689,11 @@
* @QCA_ATTR_ROAM_CONTROL_CONNECTED_RSSI_THRESHOLD: Signed 32-bit value in dBm,
* signifying the RSSI threshold of the current connected AP, indicating
* the driver to trigger roam only when the current connected AP's RSSI
- * is less than this threshold.
+ * is less than this threshold. The RSSI threshold through this attribute
+ * is only used by the STA when the connected AP asks it to roam through
+ * a BTM request. Based on this threshold, the STA can either honor or
+ * reject the AP's request to roam, and notify the status to the AP in a
+ * BTM response.
*
* @QCA_ATTR_ROAM_CONTROL_CANDIDATE_RSSI_THRESHOLD: Signed 32-bit value in dBm,
* signifying the RSSI threshold of the candidate AP, indicating
@@ -5758,12 +5828,50 @@
* discovered.
* The default behavior if this flag is not specified is to include all
* the supported 6 GHz PSC frequencies in the roam full scan.
+ *
+ * @QCA_ATTR_ROAM_CONTROL_CONNECTED_LOW_RSSI_THRESHOLD: Signed 32-bit value
+ * in dBm.
+ * This attribute configures the low RSSI threshold of the connected AP,
+ * based on which the STA can start looking for the neighbor APs and
+ * trigger the roam eventually. STA keeps monitoring for the connected
+ * AP's RSSI and will start scanning for neighboring APs once the RSSI
+ * falls below this threshold. This attribute differs from
+ * QCA_ATTR_ROAM_CONTROL_CONNECTED_RSSI_THRESHOLD where the configured
+ * threshold is used only when the connected AP asks the STA to roam
+ * through a BTM request.
+ *
+ * @QCA_ATTR_ROAM_CONTROL_CANDIDATE_ROAM_RSSI_DIFF: Unsigned 8-bit value.
+ * This attribute signifies the RSSI difference threshold between the
+ * connected AP and the new candidate AP. This parameter influences the
+ * STA to roam to the new candidate only when its RSSI is better than
+ * the current connected one by this threshold.
+ * This parameter configures the roam behavior among the 2.4/5/6 GHz bands.
+ *
+ * @QCA_ATTR_ROAM_CONTROL_6GHZ_CANDIDATE_ROAM_RSSI_DIFF: Unsigned 8-bit value.
+ * This attribute signifies the RSSI difference threshold between the
+ * connected AP in the 2.4/5 GHz bands and the new candidate AP in the
+ * 6 GHz band. This parameter influences the STA to roam to the new 6 GHz
+ * candidate only when its RSSI is better than the current connected one
+ * by this threshold. This threshold overrides
+ * QCA_ATTR_ROAM_CONTROL_CANDIDATE_ROAM_RSSI_DIFF for the roam from 2.4/5
+ * GHz to 6 GHz alone with the intention to have a different value to roam
+ * to the preferred 6 GHz band.
+ *
+ * @QCA_ATTR_ROAM_CONTROL_CONNECTED_HIGH_RSSI_OFFSET: Unsigned 8-bit value.
+ * This attribute signifies the RSSI offset that is added to low RSSI
+ * threshold (QCA_ATTR_ROAM_CONTROL_CONNECTED_LOW_RSSI_THRESHOLD) to imply
+ * high RSSI threshold. STA is expected to trigger roam if the current
+ * connected AP's RSSI gets above this high RSSI threshold. STA's roam
+ * attempt on high RSSI threshold aims to find candidates from other
+ * better Wi-Fi bands. E.g., STA would initially connect to a 2.4 GHz BSSID
+ * and would migrate to 5/6 GHz when it comes closer to the AP (high RSSI
+ * for 2.4 GHz BSS).
*/
enum qca_vendor_attr_roam_control {
QCA_ATTR_ROAM_CONTROL_ENABLE = 1,
QCA_ATTR_ROAM_CONTROL_STATUS = 2,
QCA_ATTR_ROAM_CONTROL_CLEAR_ALL = 3,
- QCA_ATTR_ROAM_CONTROL_FREQ_LIST_SCHEME= 4,
+ QCA_ATTR_ROAM_CONTROL_FREQ_LIST_SCHEME = 4,
QCA_ATTR_ROAM_CONTROL_SCAN_PERIOD = 5,
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_PERIOD = 6,
QCA_ATTR_ROAM_CONTROL_TRIGGERS = 7,
@@ -5787,6 +5895,10 @@
QCA_ATTR_ROAM_CONTROL_HO_DELAY_FOR_RX = 25,
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_NO_REUSE_PARTIAL_SCAN_FREQ = 26,
QCA_ATTR_ROAM_CONTROL_FULL_SCAN_6GHZ_ONLY_ON_PRIOR_DISCOVERY = 27,
+ QCA_ATTR_ROAM_CONTROL_CONNECTED_LOW_RSSI_THRESHOLD = 28,
+ QCA_ATTR_ROAM_CONTROL_CANDIDATE_ROAM_RSSI_DIFF = 29,
+ QCA_ATTR_ROAM_CONTROL_6GHZ_CANDIDATE_ROAM_RSSI_DIFF = 30,
+ QCA_ATTR_ROAM_CONTROL_CONNECTED_HIGH_RSSI_OFFSET = 31,
/* keep last */
QCA_ATTR_ROAM_CONTROL_AFTER_LAST,
@@ -8438,6 +8550,30 @@
* This attribute is used and optional for ndp indication.
*/
QCA_WLAN_VENDOR_ATTR_NDP_SERVICE_ID = 31,
+ /* Unsigned 8-bit value for Cipher Suite capabilities.
+ * u8 attribute.
+ * This attribute is used and optional in ndp request, ndp response,
+ * ndp indication, and ndp confirm.
+ * This attribute is used to indicate the Capabilities field of Cipher
+ * Suite Information attribute (CSIA) of NDP frames as defined in
+ * Wi-Fi Aware Specification v4.0, 9.5.21.2, Table 122.
+ * Firmware can accept or ignore any of the capability bits.
+ */
+ QCA_WLAN_VENDOR_ATTR_NDP_CSIA_CAPABILITIES = 32,
+ /* Indicate that GTK protection is required for NDP.
+ * NLA_FLAG attribute.
+ * This attribute can be used in ndp request, ndp response, ndp
+ * indication, and ndp confirm.
+ * GTK protection required is indicated in the NDPE attribute of NAN
+ * action frame (NAF) during NDP negotiation as defined in
+ * Wi-Fi Aware Specification v4.0, 9.5.16.2.
+ * If the device and peer supports GTKSA and if GTK protection required
+ * bit is set in NDPE IE, devices will share GTK to each other in SKDA
+ * of Data Path Security Confirm and Data Path Security Install frames
+ * of NDP negotiation to send and receive protected group addressed data
+ * frames from each other.
+ */
+ QCA_WLAN_VENDOR_ATTR_NDP_GTK_REQUIRED = 33,
/* keep last */
QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_AFTER_LAST,
@@ -9090,6 +9226,31 @@
};
/**
+ * enum qca_wlan_ttlm_negotiation_support: TID-To-Link Mapping Negotiation
+ * support
+ * @QCA_WLAN_TTLM_DISABLE: TTLM disabled
+ * @QCA_WLAN_TTLM_SAME_LINK_SET: Mapping of all TIDs to the same link set,
+ * both DL and UL
+ * @QCA_WLAN_TTLM_SAME_DIFF_LINK_SET: Mapping of each TID to the same or
+ * different link set
+ */
+enum qca_wlan_ttlm_negotiation_support {
+ QCA_WLAN_TTLM_DISABLE = 0,
+ QCA_WLAN_TTLM_SAME_LINK_SET = 1,
+ QCA_WLAN_TTLM_SAME_DIFF_LINK_SET = 2,
+};
+
+/**
+ * enum qca_coex_traffic_shaping_mode: Coex traffic shaping mode
+ * @QCA_COEX_TRAFFIC_SHAPING_MODE_DISABLE: Coex policies disabled
+ * @QCA_COEX_TRAFFIC_SHAPING_MODE_ENABLE: All coex policies enabled
+ */
+enum qca_coex_traffic_shaping_mode {
+ QCA_COEX_TRAFFIC_SHAPING_MODE_DISABLE = 0,
+ QCA_COEX_TRAFFIC_SHAPING_MODE_ENABLE = 1,
+};
+
+/**
* enum qca_wlan_vendor_attr_omi_tx: Represents attributes for HE and
* EHT operating mode control transmit request. These attributes are
* sent as part of QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_OMI_TX and
@@ -9814,6 +9975,16 @@
*/
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_EHT_MLO_LINK_POWER_SAVE = 71,
+ /* 8-bit unsigned value to configure the MLD ID of the BSS whose link
+ * info is requested in the ML Probe Request frame. In the MLO-MBSSID
+ * testcase, STA can request information of non-Tx BSS through Tx BSS
+ * by configuring non-Tx BSS MLD ID within the ML probe request that
+ * is transmitted via host initiated scan request.
+ *
+ * This attribute is used for testing purposes.
+ */
+ QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_MLD_ID_ML_PROBE_REQ = 72,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_MAX =
@@ -11841,6 +12012,12 @@
*/
QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_AUTH_ALGO = 2,
+ /*
+ * This flag attribute is set if the node being added is an
+ * MLD STA node.
+ */
+ QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_IS_ML = 3,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_PARAM_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_PARAM_MAX =
@@ -12091,7 +12268,7 @@
* the disconnected state.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_POWER_5G_MCS0: u32, used in the
- * STA mode. This represents the Target power in dBm for for transmissions done
+ * STA mode. This represents the Target power in dBm for transmissions done
* to the AP in 5 GHz at MCS0 rate. This data is maintained per connect session.
* Represents the count of last connected session, when queried in the
* disconnected state.
@@ -12429,7 +12606,7 @@
};
/**
- * enum qca_wlan_tspec_ack_policy - MAC acknowledgement policy in TSPEC
+ * enum qca_wlan_tspec_ack_policy - MAC acknowledgment policy in TSPEC
* As what is defined in IEEE Std 802.11-2016, Table 9-141.
*
* Values for %QCA_WLAN_VENDOR_ATTR_CONFIG_TSPEC_ACK_POLICY.
@@ -13506,6 +13683,38 @@
QCA_WLAN_VENDOR_ATTR_ROAM_STATS_FRAME_INFO = 43,
/* Attribute used for padding for 64-bit alignment */
QCA_WLAN_VENDOR_ATTR_ROAM_STATS_PAD = 44,
+ /* 6-byte MAC address used by the driver to send roam stats information
+ * of the original AP BSSID. The original AP is the connected AP before
+ * roam happens, regardless of the roam resulting in success or failure.
+ * This attribute is only present when
+ * QCA_WLAN_VENDOR_ATTR_ROAM_STATS_ROAM_STATUS has a value of
+ * 0 (success) or 1 (failure).
+ * For non-MLO scenario, it indicates the original connected AP BSSID.
+ * For MLO scenario, it indicates the original BSSID of the link
+ * for which the reassociation occurred during the roam.
+ */
+ QCA_WLAN_VENDOR_ATTR_ROAM_STATS_ORIGINAL_BSSID = 45,
+ /* 6-byte MAC address used by the driver to send roam stats information
+ * of the roam candidate AP BSSID when roam failed. This is only present
+ * when QCA_WLAN_VENDOR_ATTR_ROAM_STATS_ROAM_STATUS has a value of
+ * 1 (failure). If the firmware updates more than one candidate AP BSSID
+ * to the driver, the driver only fills the last candidate AP BSSID and
+ * reports it to user space.
+ * For non-MLO scenario, it indicates the last candidate AP BSSID.
+ * For MLO scenario, it indicates the AP BSSID which may be the primary
+ * link BSSID or a nonprimary link BSSID.
+ */
+ QCA_WLAN_VENDOR_ATTR_ROAM_STATS_CANDIDATE_BSSID = 46,
+ /* 6-byte MAC address used by the driver to send roam stats information
+ * of the roamed AP BSSID when roam succeeds. This is only present when
+ * QCA_WLAN_VENDOR_ATTR_ROAM_STATS_ROAM_STATUS has a value of
+ * 0 (success).
+ * For non-MLO scenario, it indicates the new AP BSSID to which has
+ * been successfully roamed.
+ * For MLO scenario, it indicates the new AP BSSID of the link on
+ * which the reassociation occurred during the roam.
+ */
+ QCA_WLAN_VENDOR_ATTR_ROAM_STATS_ROAMED_BSSID = 47,
/* keep last */
QCA_WLAN_VENDOR_ATTR_ROAM_STATS_AFTER_LAST,
@@ -13927,7 +14136,7 @@
/* keep last */
QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_AFTER_LAST,
QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_MAX =
- QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_AFTER_LAST -1,
+ QCA_WLAN_VENDOR_ATTR_ROAM_EVENTS_AFTER_LAST - 1,
};
/**
@@ -15054,12 +15263,25 @@
* MLD MAC address of the peer.
* @QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_PRIM_IFINDEX: u32 attribute,
* used to pass ifindex of the primary netdev.
+ * @QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_MLD_IFINDEX: u32 attribute,
+ * used to pass ifindex of the MLD netdev.
+ * @QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_NUM_LINKS: u8 attribute,
+ * used to indicate the number of links that the non-AP MLD negotiated to be
+ * used in the ML connection.
+ * @QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_LINK_INFO: Nested
+ * attribute, contains information regarding links of the non-AP MLD.
+ * User applications need to know all the links of a non-AP MLD that are
+ * participating in the ML association. The possible attributes inside this
+ * attribute are defined in enum qca_wlan_vendor_attr_mlo_link_info.
*/
enum qca_wlan_vendor_attr_mlo_peer_prim_netdev_event {
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_MACADDR = 1,
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_MLD_MAC_ADDR = 2,
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_PRIM_IFINDEX = 3,
+ QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_MLD_IFINDEX = 4,
+ QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_NUM_LINKS = 5,
+ QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_LINK_INFO = 6,
/* keep last */
QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_AFTER_LAST,
@@ -15068,6 +15290,27 @@
};
/**
+ * enum qca_wlan_vendor_attr_mlo_link_info - Defines attributes for
+ * non-AP MLD link parameters used by the attribute
+ * %QCA_WLAN_VENDOR_ATTR_MLO_PEER_PRIM_NETDEV_EVENT_LINK_INFO.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_IFINDEX: u32 attribute, used
+ * to pass the netdev ifindex of the non-AP MLD link.
+ * @QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_MACADDR: 6 byte MAC address of
+ * the non-AP MLD link.
+ */
+enum qca_wlan_vendor_attr_mlo_link_info {
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_IFINDEX = 1,
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_MACADDR = 2,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_MAX =
+ QCA_WLAN_VENDOR_ATTR_MLO_LINK_INFO_AFTER_LAST - 1,
+};
+
+/**
* enum qca_wlan_vendor_attr_afc_freq_psd_info: This enum is used with
* nested attributes QCA_WLAN_VENDOR_ATTR_AFC_RESP_FREQ_PSD_INFO and
* QCA_WLAN_VENDOR_ATTR_AFC_EVENT_FREQ_RANGE_LIST to update the frequency range
@@ -15795,7 +16038,6 @@
* A bitmap of the removed setup links link IDs.
*/
enum qca_wlan_vendor_attr_link_reconfig {
-
QCA_WLAN_VENDOR_ATTR_LINK_RECONFIG_INVALID = 0,
QCA_WLAN_VENDOR_ATTR_LINK_RECONFIG_AP_MLD_ADDR = 1,
QCA_WLAN_VENDOR_ATTR_LINK_RECONFIG_REMOVED_LINKS = 2,
@@ -16037,9 +16279,9 @@
* @QCA_WLAN_VENDOR_OPM_MODE_DISABLE: OPM Disabled
* @QCA_WLAN_VENDOR_OPM_MODE_ENABLE: OPM Enabled
* @QCA_WLAN_VENDOR_OPM_MODE_USER_DEFINED: User defined mode which allows user
- * to configure power save inactivity timeout and speculative wake up
- * interval through %QCA_WLAN_VENDOR_ATTR_CONFIG_OPM_ITO and
- * %QCA_WLAN_VENDOR_ATTR_CONFIG_OPM_SPEC_WAKE_INTERVAL attributes.
+ * to configure power save inactivity timeout and speculative wake up
+ * interval through %QCA_WLAN_VENDOR_ATTR_CONFIG_OPM_ITO and
+ * %QCA_WLAN_VENDOR_ATTR_CONFIG_OPM_SPEC_WAKE_INTERVAL attributes.
*/
enum qca_wlan_vendor_opm_mode {
@@ -16048,4 +16290,293 @@
QCA_WLAN_VENDOR_OPM_MODE_USER_DEFINED = 2,
};
+/*
+ * enum qca_wlan_vendor_tx_latency_type - Represents the possible latency
+ * types.
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_TYPE_DRIVER: Per MSDU latency
+ * from: An MSDU is presented to the driver
+ * to: the MSDU is queued into TCL SRNG
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_TYPE_RING: Per MSDU latency
+ * from: the MSDU is queued into TCL SRNG
+ * to: the MSDU is released by the driver
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_TYPE_HW: Per MSDU latency
+ * from: the MSDU is presented to the hardware
+ * to: the MSDU is released by the hardware
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_TYPE_CCA: Per PPDU latency
+ * The time spent on Clear Channel Assessment, the maximum value is 50000 (us)
+ * from: A PPDU is presented to the hardware LMAC
+ * to: over-the-air transmission is started for the PPDU
+ */
+enum qca_wlan_vendor_tx_latency_type {
+ QCA_WLAN_VENDOR_TX_LATENCY_TYPE_DRIVER = 0,
+ QCA_WLAN_VENDOR_TX_LATENCY_TYPE_RING = 1,
+ QCA_WLAN_VENDOR_TX_LATENCY_TYPE_HW = 2,
+ QCA_WLAN_VENDOR_TX_LATENCY_TYPE_CCA = 3,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_tx_latency_bucket - Definition of attributes
+ * used inside nested attributes
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKETS and
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_STAT_BUCKETS.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE: u8 attribute.
+ * Indicates the latency type.
+ * See enum qca_wlan_vendor_tx_latency_type for the supported types.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_GRANULARITY: u32 attribute.
+ * Indicates the granularity (in microseconds) of the distribution for the
+ * type (specified by %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE), the value
+ * must be positive.
+ * If %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE is
+ * %QCA_WLAN_VENDOR_TX_LATENCY_TYPE_CCA, the value must be an integer multiple
+ * of 1000, and the maximum allowed value is 15000 (us).
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AVERAGE: u32 attribute.
+ * Indicates the average of the latency (in microseconds) for the type
+ * (specified by %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE) within a cycle.
+ * If there is no transmitted MSDUs/MPDUs during a cycle, this average is 0;
+ * otherwise, it represents the quotient of <accumulated latency of the
+ * transmitted MSDUs/MPDUs in a cycle> divided by <the number of the transmitted
+ * MSDUs/MPDUs in a cycle>.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_DISTRIBUTION:
+ * Array of u32, 4 elements in total, represents the latency distribution for
+ * the type (specified by %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE).
+ * Each element holds the count of MSDUs/PPDUs (according to the latency type)
+ * within a range:
+ * element[0]: latency >= 0 && latency < granularity
+ * element[1]: latency >= granularity && latency < granularity * 2
+ * element[2]: latency >= granularity * 2 && latency < granularity * 3
+ * element[3]: latency >= granularity * 3
+ */
+enum qca_wlan_vendor_attr_tx_latency_bucket {
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE = 1,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_GRANULARITY = 2,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AVERAGE = 3,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_DISTRIBUTION = 4,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_MAX =
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_tx_latency_link - Definition of attributes
+ * used inside nested attribute %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE: 6-byte MAC address.
+ * Indicates link MAC address of the remote peer. For example, when running
+ * in station mode, it's the BSSID of the link; while when running in AP
+ * mode, it's the link MAC address of the remote station.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_STAT_BUCKETS:
+ * Array of nested attribute.
+ * Represents the transmit latency statistics for the link specified by
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE.
+ * Each entry represents the statistics for one of the types defined in
+ * enum qca_wlan_vendor_tx_latency_type.
+ * Each defined type has and must have one entry.
+ * See enum qca_wlan_vendor_attr_tx_latency_bucket for nested attributes.
+ */
+enum qca_wlan_vendor_attr_tx_latency_link {
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE = 1,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_STAT_BUCKETS = 2,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAX =
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_wlan_vendor_tx_latency_action - Represents the possible actions
+ * for %QCA_NL80211_VENDOR_SUBCMD_TX_LATENCY.
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_ACTION_DISABLE:
+ * Disable transmit latency monitoring.
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_ACTION_ENABLE:
+ * Enable transmit latency monitoring.
+ *
+ * @QCA_WLAN_VENDOR_TX_LATENCY_ACTION_GET:
+ * Get transmit latency statistics of the last cycle (period is specified by
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIOD).
+ */
+enum qca_wlan_vendor_tx_latency_action {
+ QCA_WLAN_VENDOR_TX_LATENCY_ACTION_DISABLE = 0,
+ QCA_WLAN_VENDOR_TX_LATENCY_ACTION_ENABLE = 1,
+ QCA_WLAN_VENDOR_TX_LATENCY_ACTION_GET = 2,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_tx_latency - Definition of attributes used by
+ * %QCA_NL80211_VENDOR_SUBCMD_TX_LATENCY to configure, retrieve, and report
+ * per-link transmit latency statistics.
+ *
+ * There are 6 uses of %QCA_NL80211_VENDOR_SUBCMD_TX_LATENCY:
+ * 1) used as a command to enable the feature
+ * Precondition(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION is
+ * %QCA_WLAN_VENDOR_TX_LATENCY_ACTION_ENABLE
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIOD,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKETS with nested attributes
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_GRANULARITY.
+ * Notes:
+ * The driver will monitor the transmit latency for the active links
+ * and save the statistics for each cycle (period is set by
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIOD) when the feature is enabled.
+ * Set flag %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIODIC_REPORT if periodical
+ * report is required.
+ *
+ * 2) used as a command to disable the feature
+ * Precondition(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION is
+ * %QCA_WLAN_VENDOR_TX_LATENCY_ACTION_DISABLE
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION
+ *
+ * 3) used as a command to retrieve the statistics for all the active links on
+ * the requested interface
+ * Precondition(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION is
+ * QCA_WLAN_VENDOR_TX_LATENCY_ACTION_GET and
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS is NOT present.
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION
+ * Notes:
+ * The driver returns failure directly if the feature is not enabled or
+ * there is no active link.
+ * The driver returns the statistics of the last cycle in the case of
+ * success.
+ *
+ * 4) used as a command to retrieve the statistics for the specified links
+ * Precondition(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION is
+ * QCA_WLAN_VENDOR_TX_LATENCY_ACTION_GET and
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS is present.
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS, with nested attribute
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE.
+ * Notes:
+ * The driver returns failure directly if the feature is not enabled or
+ * any of the links (specified by %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS)
+ * does not exist or is not in active state.
+ *
+ * 5) used as a command response for #3 or #4
+ * Precondition(s):
+ * Userspace issues command #3 or #4, and the driver gets corresponding
+ * statistics successfully.
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS, with nested attributes
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_STAT_BUCKETS with nested
+ * attributes %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_GRANULARITY,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AVERAGE and
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_DISTRIBUTION.
+ *
+ * 6) used as an asynchronous event to report the statistics periodically
+ * Precondition(s):
+ * Userspace set flag %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIODIC_REPORT in
+ * #1.
+ * One or more links are in active state.
+ * Mandatory attribute(s):
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS, with nested attributes
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_MAC_REMOTE,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINK_STAT_BUCKETS with nested
+ * attributes %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_TYPE,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_GRANULARITY,
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_AVERAGE and
+ * %QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKET_DISTRIBUTION.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_INVALID: Invalid attribute
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION: u32 attribute.
+ * Action to take in this vendor command.
+ * See enum qca_wlan_vendor_tx_latency_action for supported actions.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIODIC_REPORT: Flag attribute.
+ * Enable (flag attribute present) - The driver needs to report transmit latency
+ * statistics at the end of each statistical period.
+ * Disable (flag attribute not present) - The driver doesn't need to report
+ * transmit latency statistics periodically.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIOD: u32 attribute.
+ * Indicates statistical period for transmit latency in terms of milliseconds,
+ * the minimal allowed value is 100 and the maximum allowed value is 60000.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKETS: Array of nested attribute.
+ * Each entry represents the latency buckets configuration for one of the types
+ * defined in enum qca_wlan_vendor_tx_latency_type.
+ * Each defined type has and must have one entry.
+ * See enum qca_wlan_vendor_attr_tx_latency_bucket for the list of
+ * supported attributes.
+ *
+ * @QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS: Array of nested attribute.
+ * Information of the links, each entry represents for one link.
+ * See enum qca_wlan_vendor_attr_tx_latency_link for the list of
+ * supported attributes for each entry.
+ */
+enum qca_wlan_vendor_attr_tx_latency {
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_INVALID = 0,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_ACTION = 1,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIODIC_REPORT = 2,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_PERIOD = 3,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_BUCKETS = 4,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_LINKS = 5,
+
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_MAX =
+ QCA_WLAN_VENDOR_ATTR_TX_LATENCY_AFTER_LAST - 1,
+};
+
+/**
+ * enum qca_chan_width_update_type - Represents the possible values for
+ * %QCA_WLAN_VENDOR_ATTR_CONFIG_CHAN_WIDTH_UPDATE_TYPE.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX: The maximum allowed bandwidth change is
+ * applicable for both Tx and Rx paths. The driver shall conduct OMI operation
+ * as defined in 26.9 (Operating mode indication) or OMN operation as defined in
+ * 11.40 (Notification of operating mode changes) in IEEE P802.11-REVme/D2.0
+ * with AP to indicate the change in the maximum allowed operating bandwidth.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_ONLY: Limit the change in maximum allowed
+ * bandwidth only to Tx path. In this case the driver doesn't need to conduct
+ * OMI/OMN operation since %QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH is
+ * expected to be less than the current connection maximum negotiated bandwidth.
+ * For example: Negotiated maximum bandwidth is 160 MHz and the new maximum
+ * bandwidth configured is 80 MHz, now the driver limits the maximum bandwidth
+ * to 80 MHz only in the Tx path.
+ *
+ * @QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX_EXT: This is similar to
+ * %QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX but the driver doesn't change current
+ * phymode bandwidth to avoid interoperability issues with APs which don't
+ * handle the maximum bandwidth change indication correctly.
+ * For example: Negotiated maximum bandwidth is 40 MHz and the new maximum
+ * bandwidth configured is 20 MHz, now the driver indicates the change in
+ * maximum allowed bandwidth to the AP and limits the bandwidth to 20 MHz in the
+ * Tx path but keeps the phymode bandwidth as 40 MHz. This will avoid
+ * interoperability issues with APs which still use 40 MHz for sending the
+ * frames though it received maximum allowed bandwidth indication as 20 MHz
+ * from the STA.
+ */
+enum qca_chan_width_update_type {
+ QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX = 0,
+ QCA_CHAN_WIDTH_UPDATE_TYPE_TX_ONLY = 1,
+ QCA_CHAN_WIDTH_UPDATE_TYPE_TX_RX_EXT = 2,
+};
+
#endif /* QCA_VENDOR_H */