diff options
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 58 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.h | 30 |
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 |
