summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c58
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.h30
2 files changed, 88 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index da29cff9a74c..d4517ef32b32 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -3889,6 +3889,11 @@ wlan_hdd_wifi_config_policy[QCA_WLAN_VENDOR_ATTR_CONFIG_MAX + 1] = {
[QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND] = {.type = NLA_U8 },
[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION] = {.type = NLA_U8 },
[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION] = {.type = NLA_U8 },
+ [QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY] = {.type = NLA_U8 },
+ [QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY] = {.type = NLA_U8 },
+ [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 },
};
/**
@@ -3959,6 +3964,8 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
uint8_t *scan_ie;
struct sir_set_tx_rx_aggregation_size request;
QDF_STATUS qdf_status;
+ uint8_t retry, delay;
+ int param_id;
ENTER_DEV(dev);
@@ -4068,6 +4075,57 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
access_policy);
}
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY]) {
+ retry = nla_get_u8(tb[
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY]);
+ retry = retry > CFG_NON_AGG_RETRY_MAX ?
+ CFG_NON_AGG_RETRY_MAX : retry;
+ param_id = WMI_PDEV_PARAM_NON_AGG_SW_RETRY_TH;
+ ret_val = wma_cli_set_command(adapter->sessionId, param_id,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY]) {
+ retry = nla_get_u8(tb[QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY]);
+ retry = retry > CFG_AGG_RETRY_MAX ?
+ CFG_AGG_RETRY_MAX : retry;
+
+ /* Value less than CFG_AGG_RETRY_MIN has side effect to t-put */
+ retry = ((retry > 0) && (retry < CFG_AGG_RETRY_MIN)) ?
+ CFG_AGG_RETRY_MIN : retry;
+ param_id = WMI_PDEV_PARAM_AGG_SW_RETRY_TH;
+ ret_val = wma_cli_set_command(adapter->sessionId, param_id,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY]) {
+ retry = nla_get_u8(tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY]);
+ retry = retry > CFG_MGMT_RETRY_MAX ?
+ CFG_MGMT_RETRY_MAX : retry;
+ param_id = WMI_PDEV_PARAM_MGMT_RETRY_LIMIT;
+ ret_val = wma_cli_set_command(adapter->sessionId, param_id,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY]) {
+ retry = nla_get_u8(tb[QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY]);
+ retry = retry > CFG_CTRL_RETRY_MAX ?
+ CFG_CTRL_RETRY_MAX : retry;
+ param_id = WMI_PDEV_PARAM_CTRL_RETRY_LIMIT;
+ ret_val = wma_cli_set_command(adapter->sessionId, param_id,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY]) {
+ delay = nla_get_u8(tb[
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY]);
+ delay = delay > CFG_PROPAGATION_DELAY_MAX ?
+ CFG_PROPAGATION_DELAY_MAX : delay;
+ param_id = WMI_PDEV_PARAM_PROPAGATION_DELAY;
+ ret_val = wma_cli_set_command(adapter->sessionId, param_id,
+ delay, PDEV_CMD);
+ }
+
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 2c9a81cfed79..602bef0c651c 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.h
+++ b/core/hdd/src/wlan_hdd_cfg80211.h
@@ -2325,6 +2325,13 @@ enum qca_wlan_vendor_acs_hw_mode {
QCA_ACS_MODE_IEEE80211ANY,
};
+#define CFG_NON_AGG_RETRY_MAX (31)
+#define CFG_AGG_RETRY_MAX (31)
+#define CFG_MGMT_RETRY_MAX (31)
+#define CFG_CTRL_RETRY_MAX (31)
+#define CFG_PROPAGATION_DELAY_MAX (63)
+#define CFG_AGG_RETRY_MIN (5)
+
/**
* enum qca_access_policy - access control policy
*
@@ -2370,6 +2377,13 @@ enum qca_ignore_assoc_disallowed {
* Tx aggregation size (8-bit unsigned value)
* @QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION:
* Rx aggregation size (8-bit unsigned value)
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY:
+ * Non aggregrate/11g sw retry threshold
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY: aggregrate sw retry threshold
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY: management frame sw retry threshold
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY: control frame sw retry threshold
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY:
+ * propagation delay for 2G/5G band (units in us)
* @QCA_WLAN_VENDOR_ATTR_CONFIG_SCAN_DEFAULT_IES: Update the default scan IEs
* @QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND:
* Unsigned 32-bit value attribute for generic commands
@@ -2406,6 +2420,22 @@ enum qca_wlan_vendor_config {
QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION,
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION,
+ /* 8-bit unsigned value to configure the Non aggregrate/11g sw
+ * retry threshold (0 disable, 31 max). */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY,
+ /* 8-bit unsigned value to configure the aggregrate sw
+ * retry threshold (0 disable, 31 max). */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY,
+ /* 8-bit unsigned value to configure the MGMT frame
+ * retry threshold (0 disable, 31 max). */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY,
+ /* 8-bit unsigned value to configure the CTRL frame
+ * retry threshold (0 disable, 31 max). */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY,
+ /* 8-bit unsigned value to configure the propagation delay for
+ * 2G/5G band (0~63, units in us) */
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY,
+
/* Attribute used to set scan default IEs to the driver.
*
* These IEs can be used by scan operations that will be initiated by