diff options
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_assoc.h | 7 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg80211.h | 23 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 91 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_tgt_def_config.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 4 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrNeighborRoam.c | 13 |
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; |
