wlan: Add support to send beacon miss penalty count
Add vendor command support to set beacon miss penalty count
to firmware.
Change-Id: I81c9890988c479dbdee51c972bbaa658a99d8b8f
CRs-Fixed: 970725
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index d175bc9..23c114d 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -7212,6 +7212,8 @@
#define PARAM_MODULATED_DTIM QCA_WLAN_VENDOR_ATTR_CONFIG_MODULATED_DTIM
#define PARAM_STATS_AVG_FACTOR QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR
#define PARAM_GUARD_TIME QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME
+#define PARAM_BCNMISS_PENALTY_PARAM_COUNT \
+ QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS
/**
* __wlan_hdd_cfg80211_wifi_configuration_set() - Wifi configuration
@@ -7238,12 +7240,15 @@
hdd_station_ctx_t *pHddStaCtx;
struct nlattr *tb[PARAM_WIFICONFIG_MAX + 1];
tpSetWifiConfigParams pReq;
+ tModifyRoamParamsReqParams modifyRoamParamsReq;
eHalStatus status;
int ret_val;
static const struct nla_policy policy[PARAM_WIFICONFIG_MAX + 1] = {
[PARAM_STATS_AVG_FACTOR] = { .type = NLA_U16 },
[PARAM_MODULATED_DTIM] = { .type = NLA_U32 },
- [PARAM_GUARD_TIME] = { .type = NLA_U32},
+ [PARAM_GUARD_TIME] = { .type = NLA_U32},
+ [PARAM_BCNMISS_PENALTY_PARAM_COUNT] =
+ { .type = NLA_U32},
};
ENTER();
@@ -7260,11 +7265,6 @@
pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
- if (!hdd_connIsConnected(WLAN_HDD_GET_STATION_CTX_PTR(pAdapter))) {
- hddLog(LOGE, FL("Not in Connected state!"));
- return -ENOTSUPP;
- }
-
if (nla_parse(tb, PARAM_WIFICONFIG_MAX, data, data_len, policy)) {
hddLog(LOGE, FL("Invalid ATTR"));
return -EINVAL;
@@ -7279,7 +7279,29 @@
return -EINVAL;
}
- pReq = vos_mem_malloc(sizeof(tSetWifiConfigParams));
+ if (tb[PARAM_BCNMISS_PENALTY_PARAM_COUNT]) {
+ modifyRoamParamsReq.param = WIFI_CONFIG_SET_BCNMISS_PENALTY_COUNT;
+ modifyRoamParamsReq.value =
+ nla_get_u32(tb[PARAM_BCNMISS_PENALTY_PARAM_COUNT]);
+
+ if (eHAL_STATUS_SUCCESS !=
+ sme_setBcnMissPenaltyCount(pHddCtx->hHal,&modifyRoamParamsReq))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR, "%s: Failed", __func__);
+ ret_val = -EINVAL;
+ }
+ return ret_val;
+ }
+
+ /* Moved this down in order to provide provision to set beacon
+ * miss penalty count irrespective of connection state.
+ */
+ if (!hdd_connIsConnected(WLAN_HDD_GET_STATION_CTX_PTR(pAdapter))) {
+ hddLog(LOGE, FL("Not in Connected state!"));
+ return -ENOTSUPP;
+ }
+
+ pReq = vos_mem_malloc(sizeof(tSetWifiConfigParams));
if (!pReq) {
VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR,