summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAgrawal, Ashish <ashishka@codeaurora.org>2016-10-27 14:55:30 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-11-01 03:02:56 -0700
commit8da27fbe86206f2608b94cb1cfe24c85ecbf9928 (patch)
tree0d1261710e6013e2d578c808f6afed6d60ff3235
parentfc7f5987cbe970aacf7dc88413e2337379007e17 (diff)
qcacld-3.0: Vendor attribute for setting TX fail count threshold
qcacld-2.0 to qcacld-3.0 propagation Vendor attribute for setting TX fail count threshold. This attribute is part of QCA_NL80211_VENDOR_SUBCMD_SET_WIFI_CONFIGURATION. Change-Id: Iba2a6d4c04809041489ff8c32aeb17c9dafbc4a5 CRs-Fixed: 1045760
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c16
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.h4
2 files changed, 20 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 58f8109a831c..e2e97b276f3d 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -3914,6 +3914,7 @@ wlan_hdd_wifi_config_policy[QCA_WLAN_VENDOR_ATTR_CONFIG_MAX + 1] = {
[QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY] = {.type = NLA_U8 },
[QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY] = {.type = NLA_U8 },
[QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY] = {.type = NLA_U8 },
+ [QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT] = {.type = NLA_U32 },
};
/**
@@ -3986,6 +3987,7 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
QDF_STATUS qdf_status;
uint8_t retry, delay;
int param_id;
+ uint32_t tx_fail_count;
ENTER_DEV(dev);
@@ -4146,6 +4148,20 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
delay, PDEV_CMD);
}
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT]) {
+ tx_fail_count = nla_get_u32(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT]);
+ if (tx_fail_count) {
+ status = sme_update_tx_fail_cnt_threshold(hdd_ctx->hHal,
+ adapter->sessionId, tx_fail_count);
+ if (QDF_STATUS_SUCCESS != status) {
+ hdd_info("sme_update_tx_fail_cnt_threshold (err=%d)",
+ status);
+ return -EINVAL;
+ }
+ }
+ }
+
if (vendor_ie_present && access_policy_present) {
if (access_policy == QCA_ACCESS_POLICY_DENY_UNLESS_LISTED) {
access_policy =
diff --git a/core/hdd/src/wlan_hdd_cfg80211.h b/core/hdd/src/wlan_hdd_cfg80211.h
index 5cdaad826294..4fc72be584c5 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.h
+++ b/core/hdd/src/wlan_hdd_cfg80211.h
@@ -2405,6 +2405,9 @@ enum qca_ignore_assoc_disallowed {
* power save config to turn off/on qpower
* @QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED: Ignore Assoc Disallowed
* [MBO]
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT: Unsigned 32-bit value to
+ * configure the number of unicast TX fail packet count.
+ * The peer is disconnected once this threshold is reached.
* @QCA_WLAN_VENDOR_ATTR_CONFIG_LAST: last config
* @QCA_WLAN_VENDOR_ATTR_CONFIG_MAX: max config
*/
@@ -2476,6 +2479,7 @@ enum qca_wlan_vendor_config {
/* Unsigned 8-bit, for setting qpower dynamically */
QCA_WLAN_VENDOR_ATTR_CONFIG_QPOWER = 25,
QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED = 26,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_TX_FAIL_COUNT,
/* keep last */
QCA_WLAN_VENDOR_ATTR_CONFIG_LAST,
QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =