summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-10-24 22:51:26 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2014-10-24 22:51:26 -0700
commitd16a62ece7198dd8564b6f113a329919574f3103 (patch)
treeb3c5f66b10d91d27d48e4d9ab03fe410ff975cc2
parent6055f1d0aeaf37f88a123873055817243b8eff6e (diff)
parentba14def549863ac368bcc0f61451569e314c1133 (diff)
Merge "Release 1.0.0.217 QCACLD WLAN Driver"
-rw-r--r--CORE/HDD/inc/wlan_hdd_assoc.h7
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg80211.h23
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c91
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/SERVICES/COMMON/wlan_tgt_def_config.h2
-rw-r--r--CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h2
-rw-r--r--CORE/SERVICES/WMA/wma.c4
-rw-r--r--CORE/SME/src/csr/csrNeighborRoam.c13
8 files changed, 122 insertions, 24 deletions
diff --git a/CORE/HDD/inc/wlan_hdd_assoc.h b/CORE/HDD/inc/wlan_hdd_assoc.h
index 276909679591..73115f671e5b 100644
--- a/CORE/HDD/inc/wlan_hdd_assoc.h
+++ b/CORE/HDD/inc/wlan_hdd_assoc.h
@@ -25,10 +25,11 @@
* to the Linux Foundation.
*/
-#include <sme_Api.h>
-#if !defined( HDD_CONNECTION_H__ )
-#define HDD_CONNECTION_H__
+#if !defined(WLAN_HDD_ASSOC_H__)
+#define WLAN_HDD_ASSOC_H__
#include <wlan_hdd_mib.h>
+#include <sme_Api.h>
+
#define HDD_MAX_NUM_IBSS_STA ( 32 )
#ifdef FEATURE_WLAN_TDLS
#define HDD_MAX_NUM_TDLS_STA ( 8 )
diff --git a/CORE/HDD/inc/wlan_hdd_cfg80211.h b/CORE/HDD/inc/wlan_hdd_cfg80211.h
index 1413d2820b1f..6b0ee1d0be31 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg80211.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg80211.h
@@ -170,7 +170,10 @@ enum qca_nl80211_vendor_subcmds {
/* Set scanning_mac_oui */
QCA_NL80211_VENDOR_SUBCMD_SCANNING_MAC_OUI = 39,
/* Set nodfs_flag */
- QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG = 40
+ QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG = 40,
+
+ /* Get Concurrency Matrix */
+ QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX = 42,
};
enum qca_nl80211_vendor_subcmds_index {
@@ -827,6 +830,24 @@ enum qca_wlan_vendor_attr_set_no_dfs_flag
QCA_WLAN_VENDOR_ATTR_SET_NO_DFS_FLAG_AFTER_LAST - 1,
};
+/* NL attributes for data used by
+ * QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX sub command.
+ */
+enum qca_wlan_vendor_attr_get_concurrency_matrix {
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_INVALID = 0,
+ /* Unsigned 32-bit value */
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX = 1,
+ /* Unsigned 32-bit value */
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET_SIZE = 2,
+ /* An array of SET_SIZE x Unsigned 32bit values representing
+ * concurrency combinations.
+ */
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET = 3,
+ /* keep last */
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX =
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_AFTER_LAST - 1,
+};
/* Feature defines */
#define WIFI_FEATURE_INFRA 0x0001 /* Basic infrastructure mode */
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index b0da08ab4dcc..0d3b3fe6a9e1 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -182,6 +182,7 @@
#endif
#define HDD_CHANNEL_14 14
+#define WLAN_HDD_MAX_FEATURE_SET 8
#ifdef FEATURE_WLAN_EXTSCAN
/*
@@ -1250,6 +1251,88 @@ fail:
return -EINVAL;
}
+static int
+wlan_hdd_cfg80211_get_concurrency_matrix(struct wiphy *wiphy,
+ struct wireless_dev *wdev,
+ void *data, int data_len)
+{
+ uint32_t feature_set_matrix[WLAN_HDD_MAX_FEATURE_SET] = {0};
+ uint8_t i, feature_sets, max_feature_sets;
+ struct nlattr *tb[QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX + 1];
+ struct sk_buff *reply_skb;
+
+ ENTER();
+
+ if (nla_parse(tb, QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_MAX,
+ data, data_len, NULL)) {
+ hddLog(LOGE, FL("Invalid ATTR"));
+ return -EINVAL;
+ }
+
+ /* Parse and fetch max feature set */
+ if (!tb[QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX]) {
+ hddLog(LOGE, FL("Attr max feature set size failed"));
+ return -EINVAL;
+ }
+ max_feature_sets = nla_get_u32(
+ tb[QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_CONFIG_PARAM_SET_SIZE_MAX]);
+ hddLog(LOG1, FL("Max feature set size (%d)"), max_feature_sets);
+
+ /* Fill feature combination matrix */
+ feature_sets = 0;
+ if (feature_sets >= WLAN_HDD_MAX_FEATURE_SET) goto max_buffer_err;
+ feature_set_matrix[feature_sets++] = WIFI_FEATURE_INFRA |
+ WIFI_FEATURE_P2P;
+
+ if (feature_sets >= WLAN_HDD_MAX_FEATURE_SET) goto max_buffer_err;
+ feature_set_matrix[feature_sets++] = WIFI_FEATURE_INFRA |
+ WIFI_FEATURE_SOFT_AP;
+
+ if (feature_sets >= WLAN_HDD_MAX_FEATURE_SET) goto max_buffer_err;
+ feature_set_matrix[feature_sets++] = WIFI_FEATURE_P2P |
+ WIFI_FEATURE_SOFT_AP;
+
+ if (feature_sets >= WLAN_HDD_MAX_FEATURE_SET) goto max_buffer_err;
+ feature_set_matrix[feature_sets++] = WIFI_FEATURE_INFRA |
+ WIFI_FEATURE_SOFT_AP |
+ WIFI_FEATURE_P2P;
+
+ /* Add more feature combinations here */
+
+ feature_sets = VOS_MIN(feature_sets, max_feature_sets);
+ hddLog(LOG1, FL("Number of feature sets (%d)"), feature_sets);
+ hddLog(LOG1, "Feature set matrix");
+ for (i = 0; i < feature_sets; i++)
+ hddLog(LOG1, "[%d] 0x%02X", i, feature_set_matrix[i]);
+
+ reply_skb = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, sizeof(u32) +
+ sizeof(u32) * feature_sets +
+ NLMSG_HDRLEN);
+
+ if (reply_skb) {
+ if (nla_put_u32(reply_skb,
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET_SIZE,
+ feature_sets) ||
+ nla_put(reply_skb,
+ QCA_WLAN_VENDOR_ATTR_GET_CONCURRENCY_MATRIX_RESULTS_SET,
+ sizeof(u32) * feature_sets, feature_set_matrix)) {
+ hddLog(LOGE, FL("nla put fail"));
+ kfree_skb(reply_skb);
+ return -EINVAL;
+ }
+
+ return cfg80211_vendor_cmd_reply(reply_skb);
+ }
+ hddLog(LOGE, FL("Feature set matrix: buffer alloc fail"));
+ return -ENOMEM;
+
+max_buffer_err:
+ hddLog(LOGE, FL("Feature set max buffer size reached. feature_sets(%d) max(%d)"),
+ feature_sets, WLAN_HDD_MAX_FEATURE_SET);
+ return -EINVAL;
+}
+
+
#ifdef WLAN_FEATURE_STATS_EXT
static int wlan_hdd_cfg80211_stats_ext_request(struct wiphy *wiphy,
struct wireless_dev *wdev,
@@ -4129,7 +4212,6 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] =
WIPHY_VENDOR_CMD_NEED_NETDEV,
.doit = wlan_hdd_cfg80211_set_scanning_mac_oui
},
-
{
.info.vendor_id = QCA_NL80211_VENDOR_ID,
.info.subcmd = QCA_NL80211_VENDOR_SUBCMD_NO_DFS_FLAG,
@@ -4137,6 +4219,13 @@ const struct wiphy_vendor_command hdd_wiphy_vendor_commands[] =
WIPHY_VENDOR_CMD_NEED_NETDEV,
.doit = wlan_hdd_cfg80211_disable_dfs_chan_scan
},
+ {
+ .info.vendor_id = QCA_NL80211_VENDOR_ID,
+ .info.subcmd = QCA_NL80211_VENDOR_SUBCMD_GET_CONCURRENCY_MATRIX,
+ .flags = WIPHY_VENDOR_CMD_NEED_WDEV |
+ WIPHY_VENDOR_CMD_NEED_NETDEV,
+ .doit = wlan_hdd_cfg80211_get_concurrency_matrix
+ },
};
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index d9e6e11ebaca..f689deda8969 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -42,9 +42,9 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 0
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 216
+#define QWLAN_VERSION_BUILD 217
-#define QWLAN_VERSIONSTR "1.0.0.216"
+#define QWLAN_VERSIONSTR "1.0.0.217"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
index 04ecf436d09e..0438eff2c862 100644
--- a/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
+++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config.h
@@ -46,7 +46,7 @@
/* # of WDS entries to support.
*/
-#define CFG_TGT_WDS_ENTRIES 32
+#define CFG_TGT_WDS_ENTRIES 0
/* MAC DMA burst size. 0: 128B - default, 1: 256B, 2: 64B
*/
diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h
index 513d03259148..2dfdb3827db0 100644
--- a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h
+++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h
@@ -48,7 +48,7 @@
/* # of WDS entries to support.
*/
-#define CFG_TGT_WDS_ENTRIES 2
+#define CFG_TGT_WDS_ENTRIES 0
/* MAC DMA burst size. 0: 128B - default, 1: 256B, 2: 64B
*/
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index e5e33a13af56..388431dbd6ce 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -15702,7 +15702,7 @@ static void wma_enable_sta_ps_mode(tp_wma_handle wma, tpEnablePsParams ps_req)
WMA_LOGD("Enable Forced Sleep vdevId %d", vdev_id);
- ret = wma_set_force_sleep(wma, vdev_id, false,
+ ret = wma_set_force_sleep(wma, vdev_id, true,
is_qpower_enabled);
if (ret) {
@@ -15781,7 +15781,7 @@ static void wma_enable_uapsd_mode(tp_wma_handle wma,
WMA_LOGD("Enable Forced Sleep vdevId %d", vdev_id);
- ret = wma_set_force_sleep(wma, vdev_id, false,
+ ret = wma_set_force_sleep(wma, vdev_id, true,
is_qpower_enabled);
if (ret) {
WMA_LOGE("Enable Forced Sleep Failed vdevId %d", vdev_id);
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index d5662e3ad7ae..f1b8da62c01c 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -1714,7 +1714,6 @@ csrNeighborRoamOffloadUpdatePreauthList(tpAniSirGlobal pMac,
&pMac->roam.neighborRoamInfo[sessionId];
tpCsrNeighborRoamBSSInfo pBssInfo;
tANI_U16 bssDescLen;
- tpSirFTPreAuthReq pftPreAuthReq;
if (pNeighborRoamInfo->neighborRoamState !=
eCSR_NEIGHBOR_ROAM_STATE_CONNECTED)
@@ -1752,18 +1751,6 @@ csrNeighborRoamOffloadUpdatePreauthList(tpAniSirGlobal pMac,
csrLLInsertTail(&pNeighborRoamInfo->FTRoamInfo.preAuthDoneList,
&pBssInfo->List, LL_ACCESS_LOCK);
- pftPreAuthReq = (tpSirFTPreAuthReq)vos_mem_malloc(sizeof(tSirFTPreAuthReq));
- if (pftPreAuthReq == NULL)
- {
- smsLog(pMac, LOGE,
- FL("LFR3:Mem alloc for FT Preauth request failed"));
- return eHAL_STATUS_RESOURCES;
- }
- vos_mem_zero(pftPreAuthReq, sizeof(tSirFTPreAuthReq));
- vos_mem_copy(&pftPreAuthReq->preAuthbssId,
- pSmeRoamOffloadSynchInd->pbssDescription->bssId,
- sizeof(tSirMacAddr));
-
CSR_NEIGHBOR_ROAM_STATE_TRANSITION(eCSR_NEIGHBOR_ROAM_STATE_PREAUTH_DONE,
sessionId)
pNeighborRoamInfo->FTRoamInfo.numPreAuthRetries = 0;