summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhang Qian <zhangq@qti.qualcomm.com>2016-06-27 17:38:02 +0800
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-13 14:53:12 +0530
commitdc061cc8037560151fb715d64d1ec345c70d07e1 (patch)
tree9497fe61d0a0fc05d9d3b9cacd32b75226bbe779
parent7f2f9ef1b5c377def771d38a86fb7970f6825462 (diff)
qcacld-2.0: Extend cfg80211 configure API
Extend cfg80211 configure API: 1. Vendor attribute for non aggregate/11g sw retry threshold. 2. Vendor attribute for aggregate sw retry threshold. 3. Vendor attribute for MGMT frame sw retry threshold. 4. Vendor attribute for CTRL frame sw retry threshold. 5. Vendor attribute for propagation delay. Change-Id: Icdcb0e83432299014fb46507bdd5978b76919ab5 CRs-Fixed: 1035577
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h13
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c63
2 files changed, 76 insertions, 0 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index 45d2bf2cc79f..86769a7d22dc 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -1567,6 +1567,13 @@ enum qca_wlan_vendor_acs_hw_mode {
* 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:
+ * propagtion delay for 2G/5G band(Units in ms)
* @QCA_WLAN_VENDOR_ATTR_CONFIG_LAST: last config
* @QCA_WLAN_VENDOR_ATTR_CONFIG_MAX: max config
*/
@@ -1581,6 +1588,12 @@ enum qca_wlan_vendor_config {
QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND,
QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION,
QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY,
+
/* keep last */
QCA_WLAN_VENDOR_ATTR_CONFIG_LAST,
QCA_WLAN_VENDOR_ATTR_CONFIG_MAX =
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 7c731a5a8488..4fa84555dbab 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -8361,6 +8361,11 @@ wlan_hdd_wifi_config_policy[QCA_WLAN_VENDOR_ATTR_CONFIG_MAX
[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},
};
/**
@@ -8452,6 +8457,8 @@ static int __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
u32 modulated_dtim;
uint16_t stats_avg_factor, tx_rate;
uint8_t set_value;
+ uint8_t retry;
+ uint8_t delay;
u32 guard_time;
u32 ftm_capab;
eHalStatus status;
@@ -8578,6 +8585,62 @@ static int __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
ret_val = -EINVAL;
}
}
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY]) {
+ retry = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY]);
+
+ /* Maximum value is 31 */
+ retry = retry > 31 ? 31 : retry;
+ ret_val = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMI_PDEV_PARAM_NON_AGG_SW_RETRY_TH,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY]) {
+ retry = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY]);
+
+ /* Maximum value is 31(0x1f), 0 disable */
+ retry = retry > 31 ? 31 : retry;
+
+ /* Value less than 5 has side effect to t-put */
+ retry = ((retry > 0) && (retry < 5)) ? 5 : retry;
+ ret_val = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMI_PDEV_PARAM_AGG_SW_RETRY_TH,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY]) {
+ retry = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_MGMT_RETRY]);
+
+ /* Maximum value is 31 */
+ retry = retry > 31 ? 31 : retry;
+ ret_val = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMI_PDEV_PARAM_MGMT_RETRY_LIMIT,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY]) {
+ retry = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_CTRL_RETRY]);
+ /* Maximum value is 31 */
+ retry = retry > 31 ? 31 : retry;
+ ret_val = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMI_PDEV_PARAM_CTRL_RETRY_LIMIT,
+ retry, PDEV_CMD);
+ }
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY]) {
+ delay = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_PROPAGATION_DELAY]);
+ /* Maximum value is 63 */
+ delay = delay > 63 ? 63 : delay;
+ ret_val = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMI_PDEV_PARAM_PROPAGATION_DELAY,
+ delay, PDEV_CMD);
+ }
return ret_val;
}