summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-10-11 11:31:13 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-10-11 11:31:13 -0600
commitf62c9c5ddd1fe2f7525eb7ef6c217098bdf90bd0 (patch)
treeb86ff849662ffb8cad05de9a546e5e765475d453
parent2faa71f675656e1d93d790452d9d3d49e5044a73 (diff)
parent6485e1a40755d0ce5f429dd68c14ce98829a99e2 (diff)
Promotion of wlan-cld3.driver.lnx.1.1-00105.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1074146 I218c19c84b6c7f0f62a94b211201281939838438 qcacld-3.0: Fill regulatory info before wiphy init 1026420 Ibe24828690ace91338ade10fd00c49fc4acdbd81 qcacld-3.0: Consider ACS override params only if ACS is 688141 Ifaeb43ba3ef6e851e3e5e0462dfd28ebb4dc29b3 Release 5.1.0.29S 1062308 I75a66601c33b4e93fcac674415f38d5a8184c8f3 qcacld-3.0: Fix status code during disassociation 1073581 If114167f66d13a3660f9b92b72706bfc2e782b50 qcacld-3.0: Update BW for interface when moving to singl 688141 I7d4d89b51ab0e2e0b0b258c41fa14699cdfcb982 Release 5.1.0.29R 688141 Idb4a6f647a160cf9d76a98f1ff59a0542598eb08 Release 5.1.0.29O 1072651 I5d037f47729b612d6754e64f46b627998ec026f8 qcacld-3.0: Move a cds log to appropriate log level 1073739 I0aafea43631d0ab8d3a99d8e913392f6090cd124 qcacld-3.0: Remove obsolete hdd_conn_get_connected_bss_t 924814 I08dbcb3ce1895aa2108924d7a672e5d9be514e3d qcacld-3.0: Add support for 2.4G VHT Interop in SAP 1073739 I774d16df363d069eae1616807ce6f80da4800bb4 qcacld-3.0: Remove obsolete wlan_hdd_mib.h 688141 I290bcc4977b1c9267c4885750a1707386605be18 Release 5.1.0.29P 1073739 Ib8981750475bd27818a0c7e4e386396869d90e69 qcacld-3.0: Avoid eMib_dot11DesiredBssType in cfg80211 1073593 Ie5adea45b2dac099e797a1e25536cc959f3d5525 qcacld-3.0: In FTM mode, don't update config param, max 688141 I5a16e164585382540061d911a7afc90d62b06cbf Release 5.1.0.29M 932264 If76d8ef454633d9a02dd6057b5d6ca3e9e639ea4 qcacld-3.0: Add support for legacy off channel notificat 1070005 I5e4d97523cb7fd018767d5d2fda841f03b2406f6 qcacld-3.0: Update hw_mode_list as per WMI_SERVICE_READY 990161 Ia5811bf7cf7081989fde5c8cdcca84b42120b90c qcacld-3.0: Set Tx/Rx aggregation size 1035768 I3226438b908a96f1b1bd3c2968a0c20eef81a799 qcacld-3.0: Populate correct supported rates from hostap 688141 Icdfe0c05382e946e76f3e34bc7a5542aba5f4da8 Release 5.1.0.29K 937586 Iabe36591e6aae45cb837f0f434ccafd743f3b746 qcacld-3.0: Fix HDD logging API in wlan_hdd_assoc 964146 Idffd0979bd9bdefa1225d2ea6a24180d81000f48 qcacld-3.0: Avoid race condition when vdev is deleted 1073739 I66f85fb8275ae2885012ebf8710187b2b886dfb0 qcacld-3.0: Cleanup strange behavior in __iw_set_mode() 1073739 I0180eb70487dd664c1cb85eee9a4d53eb7cb14a9 qcacld-3.0: Cleanup strange behaviors in __iw_set_essid( 1073808 Ie2a3e41d446261cd32729b8eb8f12e23134a8828 qcacld-3.0: Do NULL check on adapter->dev in hdd_lro_flu 688141 I3faed7c8d2e5e2c6b331ea79a8ac3e988c542579 Release 5.1.0.29Q 1073739 Iabfc4642a500587abd1f10d4fbc3f9e88f627a83 qcacld-3.0: Remove obsolete connDot11DesiredBssType 955357 Ifbb102e440d7df20defa1a397964cb9b55082bf9 qcacld-3.0: Dump driver information 1072423 I8cc1e955fbaca631ee7fd76b0c907d1e68c836bf qcacld-3.0: Power offload unit test framework enhancemen 688141 Id70f535bab06f14d17eb8e774475010768a57481 Release 5.1.0.29L 688141 I593a4500492dfb1d713fe604cbb892b6a2b3af3a Release 5.1.0.29N Change-Id: I70cbf51d7a49ac8025483dc99c11dbd83a06d71c CRs-Fixed: 1073581, 1062308, 1026420, 924814, 937586, 990161, 1072651, 1073593, 688141, 955357, 1035768, 932264, 1072423, 964146, 1073808, 1073739, 1070005, 1074146
-rw-r--r--core/cds/src/cds_api.c9
-rw-r--r--core/cds/src/cds_concurrency.c4
-rw-r--r--core/hdd/inc/wlan_hdd_assoc.h17
-rw-r--r--core/hdd/inc/wlan_hdd_cfg.h42
-rw-r--r--core/hdd/inc/wlan_hdd_driver_ops.h2
-rw-r--r--core/hdd/inc/wlan_hdd_includes.h3
-rw-r--r--core/hdd/inc/wlan_hdd_main.h4
-rw-r--r--core/hdd/inc/wlan_hdd_memdump.h18
-rw-r--r--core/hdd/inc/wlan_hdd_mib.h190
-rw-r--r--core/hdd/inc/wlan_hdd_power.h22
-rw-r--r--core/hdd/src/wlan_hdd_assoc.c771
-rw-r--r--core/hdd/src/wlan_hdd_cfg.c43
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c47
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.h8
-rw-r--r--core/hdd/src/wlan_hdd_hostapd.c53
-rw-r--r--core/hdd/src/wlan_hdd_lro.c4
-rw-r--r--core/hdd/src/wlan_hdd_main.c78
-rw-r--r--core/hdd/src/wlan_hdd_memdump.c234
-rw-r--r--core/hdd/src/wlan_hdd_power.c157
-rw-r--r--core/hdd/src/wlan_hdd_regulatory.c12
-rw-r--r--core/hdd/src/wlan_hdd_wext.c45
-rw-r--r--core/mac/inc/qwlan_version.h4
-rw-r--r--core/mac/inc/sir_api.h13
-rw-r--r--core/mac/src/cfg/cfgUtil/dot11f.frms18
-rw-r--r--core/mac/src/include/dot11f.h40
-rw-r--r--core/mac/src/include/parser_api.h5
-rw-r--r--core/mac/src/include/sir_params.h2
-rw-r--r--core/mac/src/pe/include/lim_session.h1
-rw-r--r--core/mac/src/pe/lim/lim_api.c59
-rw-r--r--core/mac/src/pe/lim/lim_assoc_utils.c48
-rw-r--r--core/mac/src/pe/lim/lim_process_assoc_req_frame.c39
-rw-r--r--core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c4
-rw-r--r--core/mac/src/pe/lim/lim_process_mlm_req_messages.c4
-rw-r--r--core/mac/src/pe/lim/lim_process_sme_req_messages.c2
-rw-r--r--core/mac/src/pe/lim/lim_prop_exts_utils.c2
-rw-r--r--core/mac/src/pe/lim/lim_send_frames_host_roam.c10
-rw-r--r--core/mac/src/pe/lim/lim_send_management_frames.c29
-rw-r--r--core/mac/src/pe/lim/lim_send_sme_rsp_messages.c2
-rw-r--r--core/mac/src/sys/legacy/src/utils/src/dot11f.c137
-rw-r--r--core/mac/src/sys/legacy/src/utils/src/parser_api.c105
-rw-r--r--core/pld/inc/pld_common.h3
-rw-r--r--core/sap/inc/sap_api.h4
-rw-r--r--core/sap/src/sap_fsm.c16
-rw-r--r--core/sme/inc/csr_api.h8
-rw-r--r--core/sme/inc/csr_internal.h3
-rw-r--r--core/sme/inc/sme_api.h7
-rw-r--r--core/sme/src/common/sme_api.c124
-rw-r--r--core/sme/src/csr/csr_api_roam.c214
-rw-r--r--core/sme/src/csr/csr_util.c2
-rw-r--r--core/wma/inc/wma.h13
-rw-r--r--core/wma/inc/wma_api.h17
-rw-r--r--core/wma/inc/wma_if.h4
-rw-r--r--core/wma/inc/wma_types.h1
-rw-r--r--core/wma/src/wma_dev_if.c20
-rw-r--r--core/wma/src/wma_features.c65
-rw-r--r--core/wma/src/wma_main.c354
-rw-r--r--core/wma/src/wma_mgmt.c28
-rw-r--r--core/wma/src/wma_utils.c97
58 files changed, 2198 insertions, 1069 deletions
diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c
index bcc146f1e1d4..43a8ea336611 100644
--- a/core/cds/src/cds_api.c
+++ b/core/cds/src/cds_api.c
@@ -101,6 +101,7 @@ v_CONTEXT_t cds_init(void)
#if defined(TRACE_RECORD)
qdf_trace_init();
#endif
+ qdf_register_debugcb_init();
cds_ssr_protect_init();
@@ -323,7 +324,13 @@ QDF_STATUS cds_open(void)
* and keeps correct limit in cds_cfg.max_station. So, make sure
* config entry pHddCtx->config->maxNumberOfPeers has adjusted value
*/
- pHddCtx->config->maxNumberOfPeers = cds_cfg->max_station;
+ /* In FTM mode cds_cfg->max_stations will be zero. On updating same
+ * into hdd context config entry, leads to pe_open() to fail, if
+ * con_mode change happens from FTM mode to any other mode.
+ */
+ if (DRIVER_TYPE_PRODUCTION == cds_cfg->driver_type)
+ pHddCtx->config->maxNumberOfPeers = cds_cfg->max_station;
+
HTCHandle = cds_get_context(QDF_MODULE_ID_HTC);
if (!HTCHandle) {
QDF_TRACE(QDF_MODULE_ID_QDF, QDF_TRACE_LEVEL_FATAL,
diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c
index 946dc819b45a..25155c2c18d5 100644
--- a/core/cds/src/cds_concurrency.c
+++ b/core/cds/src/cds_concurrency.c
@@ -4364,6 +4364,8 @@ QDF_STATUS cds_decr_connection_count(uint32_t vdev_id)
conc_connection_list[next_conn_index].mac;
conc_connection_list[conn_index].chan =
conc_connection_list[next_conn_index].chan;
+ conc_connection_list[conn_index].bw =
+ conc_connection_list[next_conn_index].bw;
conc_connection_list[conn_index].chain_mask =
conc_connection_list[next_conn_index].chain_mask;
conc_connection_list[conn_index].original_nss =
@@ -4644,7 +4646,7 @@ QDF_STATUS cds_get_channel_list(enum cds_pcl_type pcl,
if (CDS_NONE == pcl) {
/* msg */
- cds_err("pcl is 0");
+ cds_info("pcl is 0");
return QDF_STATUS_SUCCESS;
}
/* get the channel list for current domain */
diff --git a/core/hdd/inc/wlan_hdd_assoc.h b/core/hdd/inc/wlan_hdd_assoc.h
index 549b68d5deef..f49cb125ed54 100644
--- a/core/hdd/inc/wlan_hdd_assoc.h
+++ b/core/hdd/inc/wlan_hdd_assoc.h
@@ -34,7 +34,6 @@
*/
/* Include files */
-#include <wlan_hdd_mib.h>
#include <sme_api.h>
#include <wlan_defs.h>
#include "ol_txrx_ctrl_api.h"
@@ -149,10 +148,6 @@ struct hdd_conn_flag {
/**
* typedef connection_info_t - structure to store connection information
* @connState: connection state of the NIC
- * @connDot11DesiredBssType: BSS type of the current connection.
- * Comes from the MIB at the time the connect request is issued
- * in combination with the BssDescription from the
- * associated entity
* @bssId: BSSID
* @SSID: SSID Info
* @staId: Station ID
@@ -182,7 +177,6 @@ struct hdd_conn_flag {
*/
typedef struct connection_info_s {
eConnectionState connState;
- eMib_dot11DesiredBssType connDot11DesiredBssType;
struct qdf_mac_addr bssId;
tCsrSSIDInfo SSID;
uint8_t staId[MAX_PEERS];
@@ -261,17 +255,6 @@ QDF_STATUS hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo,
eCsrRoamResult roamResult);
/**
- * hdd_conn_get_connected_bss_type() - get current bss type
- * @pHddStaCtx: pointer to global HDD Station context
- * @pConnectedBssType: pointer to connected bss type
- *
- * Return: false if any errors encountered, true otherwise
- */
-bool
-hdd_conn_get_connected_bss_type(hdd_station_ctx_t *pHddStaCtx,
- eMib_dot11DesiredBssType *pConnectedBssType);
-
-/**
* hdd_set_genie_to_csr() - set genie to csr
* @pAdapter: pointer to adapter
* @RSNAuthType: pointer to auth type
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 9cfeeb3cf36a..7bbc547e51c0 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -1974,6 +1974,16 @@ typedef enum {
#define CFG_ENABLE_VHT_FOR_24GHZ_MAX (1)
#define CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT (0)
+/*
+ * Parameter to control VHT support based on vendor ie in 2.4 GHz band
+ * This parameter will enable SAP to read VHT capability in vendor ie in Assoc
+ * Req and send VHT caps in Resp to establish connection in VHT Mode.
+ */
+#define CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME "gEnableVendorVhtFor24GHzBand"
+#define CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MIN (0)
+#define CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MAX (1)
+#define CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_DEFAULT (1)
+
#define CFG_MAX_MEDIUM_TIME "gMaxMediumTime"
#define CFG_MAX_MEDIUM_TIME_STAMIN WNI_CFG_MAX_MEDIUM_TIME_STAMIN
#define CFG_MAX_MEDIUM_TIME_STAMAX WNI_CFG_MAX_MEDIUM_TIME_STAMAX
@@ -2823,6 +2833,24 @@ typedef enum {
#define CFG_SELF_GEN_FRM_PWR_DEFAULT (0)
/*
+ * gTxAggregationSize gives an option to configure Tx aggregation size
+ * in no of MPDUs. This can be useful in debugging throughput issues
+ */
+#define CFG_TX_AGGREGATION_SIZE "gTxAggregationSize"
+#define CFG_TX_AGGREGATION_SIZE_MIN (0)
+#define CFG_TX_AGGREGATION_SIZE_MAX (64)
+#define CFG_TX_AGGREGATION_SIZE_DEFAULT (64)
+
+/*
+ * gRxAggregationSize gives an option to configure Rx aggregation size
+ * in no of MPDUs. This can be useful in debugging throughput issues
+ */
+#define CFG_RX_AGGREGATION_SIZE "gRxAggregationSize"
+#define CFG_RX_AGGREGATION_SIZE_MIN (1)
+#define CFG_RX_AGGREGATION_SIZE_MAX (64)
+#define CFG_RX_AGGREGATION_SIZE_DEFAULT (64)
+
+/*
* fine timing measurement capability information
*
* <----- fine_time_meas_cap (in bits) ----->
@@ -2917,6 +2945,16 @@ enum dot11p_mode {
#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT (20)
#endif
+/* When gEnable_go_cts2self_for_sta is
+ * enabled then if a legacy client connects to P2P GO,
+ * Host will send a WMI VDEV command to FW to stop using NOA for P2P GO
+ * and start using CTS2SELF.
+ */
+#define CFG_ENABLE_GO_CTS2SELF_FOR_STA "gEnable_go_cts2self_for_sta"
+#define CFG_ENABLE_GO_CTS2SELF_FOR_STA_DEFAULT (0)
+#define CFG_ENABLE_GO_CTS2SELF_FOR_STA_MIN (0)
+#define CFG_ENABLE_GO_CTS2SELF_FOR_STA_MAX (1)
+
#define CFG_CE_CLASSIFY_ENABLE_NAME "gCEClassifyEnable"
#define CFG_CE_CLASSIFY_ENABLE_MIN (0)
#define CFG_CE_CLASSIFY_ENABLE_MAX (1)
@@ -3861,6 +3899,7 @@ struct hdd_config {
bool enableSSR;
uint32_t cfgMaxMediumTime;
bool enableVhtFor24GHzBand;
+ bool enable_sap_vendor_vht;
/* Flag indicating whether legacy fast roam during concurrency is enabled in cfg.ini or not */
bool bFastRoamInConIniFeatureEnabled;
bool fEnableAdaptRxDrain;
@@ -4152,6 +4191,9 @@ struct hdd_config {
/* parameter for indicating sifs burst duration to fw */
uint8_t sifs_burst_duration;
bool goptimize_chan_avoid_event;
+ bool enable_go_cts2self_for_sta;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
};
#define VAR_OFFSET(_Struct, _Var) (offsetof(_Struct, _Var))
diff --git a/core/hdd/inc/wlan_hdd_driver_ops.h b/core/hdd/inc/wlan_hdd_driver_ops.h
index 3ea44449b55c..f919e8decf1c 100644
--- a/core/hdd/inc/wlan_hdd_driver_ops.h
+++ b/core/hdd/inc/wlan_hdd_driver_ops.h
@@ -38,7 +38,9 @@
int wlan_hdd_register_driver(void);
void wlan_hdd_unregister_driver(void);
int wlan_hdd_bus_suspend(pm_message_t state);
+int wlan_hdd_bus_suspend_noirq(void);
int wlan_hdd_bus_resume(void);
+int wlan_hdd_bus_resume_noirq(void);
void hdd_hif_close(void *hif_ctx);
int hdd_hif_open(struct device *dev, void *bdev, const hif_bus_id *bid,
enum qdf_bus_type bus_type, bool reinit);
diff --git a/core/hdd/inc/wlan_hdd_includes.h b/core/hdd/inc/wlan_hdd_includes.h
index cb2e63e85830..4eead672404f 100644
--- a/core/hdd/inc/wlan_hdd_includes.h
+++ b/core/hdd/inc/wlan_hdd_includes.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014, 2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -54,7 +54,6 @@
#include <cds_api.h>
#include <sme_api.h>
#include "wlan_hdd_assoc.h"
-#include "wlan_hdd_mib.h"
#include "wlan_hdd_wext.h"
#include "wlan_hdd_main.h"
#include "wlan_hdd_tx_rx.h"
diff --git a/core/hdd/inc/wlan_hdd_main.h b/core/hdd/inc/wlan_hdd_main.h
index 577f1f9d84e0..6f263d2b1b64 100644
--- a/core/hdd/inc/wlan_hdd_main.h
+++ b/core/hdd/inc/wlan_hdd_main.h
@@ -905,8 +905,6 @@ struct hdd_adapter_s {
hdd_stats_t hdd_stats;
/** linkspeed statistics */
tSirLinkSpeedInfo ls_stats;
- /**Mib information*/
- sHddMib_t hdd_mib;
uint8_t sessionId;
@@ -1471,6 +1469,8 @@ struct hdd_context_s {
bool memdump_in_progress;
bool memdump_init_done;
#endif /* WLAN_FEATURE_MEMDUMP */
+ uint16_t driver_dump_size;
+ uint8_t *driver_dump_mem;
bool connection_in_progress;
qdf_spinlock_t connection_status_lock;
diff --git a/core/hdd/inc/wlan_hdd_memdump.h b/core/hdd/inc/wlan_hdd_memdump.h
index 529f4c772380..5e670fe72785 100644
--- a/core/hdd/inc/wlan_hdd_memdump.h
+++ b/core/hdd/inc/wlan_hdd_memdump.h
@@ -37,6 +37,10 @@
#include "wlan_hdd_main.h"
+/* Assigned size of driver memory dump is 4096 bytes */
+#define DRIVER_MEM_DUMP_SIZE 4096
+
+
#ifdef WLAN_FEATURE_MEMDUMP
/**
* enum qca_wlan_vendor_attr_memory_dump - values for memory dump attributes
@@ -72,6 +76,10 @@ int wlan_hdd_cfg80211_get_fw_mem_dump(struct wiphy *wiphy,
struct wireless_dev *wdev,
const void *data, int data_len);
void wlan_hdd_cfg80211_fw_mem_dump_cb(void *ctx, struct fw_dump_rsp *dump_rsp);
+
+int hdd_driver_memdump_init(void);
+void hdd_driver_memdump_deinit(void);
+
#else
static inline int memdump_init(void)
{
@@ -95,6 +103,16 @@ static inline void wlan_hdd_cfg80211_fw_mem_dump_cb(void *ctx,
*dump_rsp)
{
}
+
+static inline int hdd_driver_memdump_init(void)
+{
+ return -ENOTSUPP;
+}
+
+static inline void hdd_driver_memdump_deinit(void)
+{
+}
+
#endif
#endif /* if !defined(WLAN_HDD_MEMDUMP_H)*/
diff --git a/core/hdd/inc/wlan_hdd_mib.h b/core/hdd/inc/wlan_hdd_mib.h
deleted file mode 100644
index 6d9482d7708e..000000000000
--- a/core/hdd/inc/wlan_hdd_mib.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined(WLAN_HDD_MIB_h__)
-#define WLAN_HDD_MIB_h__
-
-#include <qdf_types.h>
-
-typedef enum {
- eMib_dot11DesiredBssType_infrastructure = 1,
- eMib_dot11DesiredBssType_independent = 2,
- eMib_dot11DesiredBssType_infra_ap = 3,
- eMib_dot11DesiredBssType_any = 4
-} eMib_dot11DesiredBssType;
-
-/** This is the maximum number of BSSIDs supported in the
- dot11DesiredBssidList. All the code operates off of
- this maximum BSSID list count. */
-#define MIB_DOT11_DESIRED_BSSID_LIST_MAX_COUNT 1
-
-typedef struct {
- uint32_t cEntries;
-
- struct qdf_mac_addr BSSIDs[MIB_DOT11_DESIRED_BSSID_LIST_MAX_COUNT];
-
-} sMib_dot11DesiredBssidList;
-
-/** This is the maximum number of SSIDs supported in the
- dot11DesiredSsidList. All the code operates off of
- this maximum SSID list count. */
-
-#define MIB_DOT11_DESIRED_SSID_LIST_MAX_COUNT 1
-
-#define MIB_DOT11_SSID_MAX_LENGTH 32
-
-typedef struct {
- uint32_t ssidLength;
- uint8_t ssid[MIB_DOT11_SSID_MAX_LENGTH];
-
-} sDot11Ssid;
-
-typedef struct {
- uint32_t cEntries;
-
- sDot11Ssid SSIDs[MIB_DOT11_DESIRED_SSID_LIST_MAX_COUNT];
-
-} sMib_dot11DesiredSsidList;
-
-typedef enum {
- /* these are bitmasks.... */
- eMib_dot11AutoConfigEnabled_None = 0U,
- eMib_dot11AutoConfigEnabled_Phy = 0x00000001U,
- eMib_dot11AutoConfigEnabled_Mac = 0x00000002U
-} eMib_dot11AutoConfigEnabled;
-
-#define MIB_DOT11_SUPPORTED_PHY_TYPES_MAX_COUNT 3
-
-typedef enum tagMib_dot11PhyType {
- eMib_dot11PhyType_11b,
- eMib_dot11PhyType_11a,
- eMib_dot11PhyType_11g,
- eMib_dot11PhyType_all
-} eMib_dot11PhyType;
-
-typedef struct tagMib_dot11SupportedPhyTypes {
- uint32_t cEntries;
- eMib_dot11PhyType phyTypes[MIB_DOT11_SUPPORTED_PHY_TYPES_MAX_COUNT];
-} sMib_dot11SupportedPhyTypes;
-
-typedef enum {
- eMib_DevicePowerState_D0,
- eMib_DevicePowerState_D1,
- eMib_DevicePowerState_D2,
- eMib_DevicePowerState_D3
-} eMib_DevicePowerState;
-
-typedef enum {
- eMib_dot11NICPowerState_OFF = false,
- eMib_dot11NICPowerState_ON = true
-} eMib_dot11NICPowerState;
-
-typedef enum {
- eMib_dot11HardwarePHYState_OFF = false,
- eMib_dot11HardwarePHYState_ON = true
-} eMib_dot11HardwarePHYState;
-
-typedef enum {
- eMib_dot11PowerSavingLevel_None,
- eMib_dot11PowerSavingLevel_MaxPS,
- eMib_dot11PowerSavingLevel_FastPS,
- eMib_dot11PowerSavingLevel_MaximumLevel
-} eMib_dot11PowerSavingLevel;
-
-#define MIB_DOT11_MAC_EXCLUSION_LIST_MAX_COUNT 4
-typedef struct {
- uint32_t cEntries;
-
- struct qdf_mac_addr macAddrs[MIB_DOT11_MAC_EXCLUSION_LIST_MAX_COUNT];
-
-} sMib_dot11MacExcludeList;
-
-#define MIB_DOT11_PRIVACY_EXEMPT_LIST_MAX_COUNT 32
-
-typedef enum {
- eMib_dot11ExemptionAction_Always,
- eMib_dot11ExemptionAction_OnKeyMapUnavailable
-} eMib_dot11ExemptAction;
-
-typedef enum {
- eMib_dot11ExemptPacket_Unicast,
- eMib_dot11ExemptPacket_Multicast,
- eMib_dot11ExemptPacket_Both
-} eMib_dot11ExemptPacket;
-
-typedef struct {
- uint16_t uEtherType;
- eMib_dot11ExemptAction exemptAction;
- eMib_dot11ExemptPacket exemptPacket;
-
-} sMib_dot11PrivacyExemption;
-
-typedef struct {
- uint32_t cEntries;
-
- sMib_dot11PrivacyExemption
- privacyExemptList[MIB_DOT11_PRIVACY_EXEMPT_LIST_MAX_COUNT];
-
-} sMib_dot11PrivacyExemptionList;
-
-typedef struct sHddMib_s {
- eMib_dot11DesiredBssType mibDot11DesiredBssType;
-
- sMib_dot11DesiredBssidList mibDot11DesiredBssidList;
-
- sMib_dot11DesiredSsidList mibDot11DesiredSsidList;
-
- eMib_dot11AutoConfigEnabled mibDot11AutoConfigEnabled;
-
- /* the device power state for the device (the D-state... you know D0, D1, D2, etc. */
- eMib_DevicePowerState mibDevicePowerState;
-
- /* dot11NICPowerState is really the on/off state of the PHY. This can be */
- /* mamipulated through OIDs like a software control for radio on/off. */
- eMib_dot11NICPowerState mibDot11NICPowerState;
-
- /* Hardware PHY state is the on/off state of the hardware PHY. */
- eMib_dot11HardwarePHYState mibDot11HardwarePHYState;
-
- /* dot11 Power Saving level is the 802.11 power saving level/state for the 802.11 */
- /* NIC. Typically this is mapped to 802.11 BMPS in some fashion. We are not going */
- /* to disappoint; the Libra NIC maps these to different BMPS settings. */
- eMib_dot11PowerSavingLevel mibDot11PowerSavingLevel;
-
- sMib_dot11MacExcludeList mibDot11MacExcludeList;
-
- sMib_dot11PrivacyExemptionList mibDot11PrivacyExemptionList;
-
- sMib_dot11SupportedPhyTypes mibDot11SupportedPhyTypes;
- eMib_dot11PhyType mibDot11CurrentPhyType;
-
- bool dot11IbssJoinOnly;
- bool HiddenNetworkEnabled;
-
-} sHddMib_t;
-
-#endif
diff --git a/core/hdd/inc/wlan_hdd_power.h b/core/hdd/inc/wlan_hdd_power.h
index e173d4f517db..61f4d6d490c9 100644
--- a/core/hdd/inc/wlan_hdd_power.h
+++ b/core/hdd/inc/wlan_hdd_power.h
@@ -200,4 +200,26 @@ void hdd_wlan_suspend_resume_event(uint8_t state) {}
#endif /* FEATURE_WLAN_DIAG_SUPPORT */
+/*
+ * Unit-test suspend/resume is a testing feature that allows putting firmware
+ * into WoW suspend irrespective of Apps suspend status. It emulates the chain
+ * of events that occur durring normal system-level suspend/resume, such as
+ * initiating all of the suspend/resume stages in the correct order, and
+ * enabling/disabling appropriate copy engine irqs.
+ */
+#ifdef WLAN_SUSPEND_RESUME_TEST
+int hdd_wlan_fake_apps_resume(struct wiphy *wiphy);
+int hdd_wlan_fake_apps_suspend(struct wiphy *wiphy);
+#else
+static inline int hdd_wlan_fake_apps_resume(struct wiphy *wiphy)
+{
+ return 0;
+}
+
+static inline int hdd_wlan_fake_apps_suspend(struct wiphy *wiphy)
+{
+ return 0;
+}
+#endif /* WLAN_SUSPEND_RESUME_TEST */
+
#endif /* __WLAN_HDD_POWER_H */
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 312349735478..e008534fb224 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -32,6 +32,9 @@
*
*/
+/* denote that this file does not allow legacy hddLog */
+#define HDD_DISALLOW_LEGACY_HDDLOG 1
+
#include "wlan_hdd_includes.h"
#include <ani_global.h>
#include "dot11f.h"
@@ -142,9 +145,8 @@ hdd_conn_set_authenticated(hdd_adapter_t *pAdapter, uint8_t authState)
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
/* save the new connection state */
- hddLog(LOG1,
- FL("Authenticated state Changed from oldState:%d to State:%d"),
- pHddStaCtx->conn_info.uIsAuthenticated, authState);
+ hdd_notice("Authenticated state Changed from oldState:%d to State:%d",
+ pHddStaCtx->conn_info.uIsAuthenticated, authState);
pHddStaCtx->conn_info.uIsAuthenticated = authState;
/* Check is pending ROC request or not when auth state changed */
@@ -275,61 +277,6 @@ hdd_conn_get_connected_cipher_algo(hdd_station_ctx_t *pHddStaCtx,
}
/**
- * hdd_conn_get_connected_bss_type() - get current bss type
- * @pHddStaCtx: pointer to global HDD Station context
- * @pConnectedBssType: pointer to connected bss type
- *
- * Return: false if any errors encountered, true otherwise
- */
-inline bool
-hdd_conn_get_connected_bss_type(hdd_station_ctx_t *pHddStaCtx,
- eMib_dot11DesiredBssType *pConnectedBssType)
-{
- bool fConnected = false;
-
- fConnected = hdd_conn_get_connection_state(pHddStaCtx, NULL);
-
- if (pConnectedBssType) {
- *pConnectedBssType =
- pHddStaCtx->conn_info.connDot11DesiredBssType;
- }
-
- return fConnected;
-}
-
-/**
- * hdd_conn_save_connected_bss_type() - set connected bss type
- * @pHddStaCtx: pointer to global HDD Station context
- * @csr_roamBssType: bss type
- *
- * Return: none
- */
-static inline void
-hdd_conn_save_connected_bss_type(hdd_station_ctx_t *pHddStaCtx,
- eCsrRoamBssType csr_roamBssType)
-{
- switch (csr_roamBssType) {
- case eCSR_BSS_TYPE_INFRASTRUCTURE:
- pHddStaCtx->conn_info.connDot11DesiredBssType =
- eMib_dot11DesiredBssType_infrastructure;
- break;
-
- case eCSR_BSS_TYPE_IBSS:
- case eCSR_BSS_TYPE_START_IBSS:
- pHddStaCtx->conn_info.connDot11DesiredBssType =
- eMib_dot11DesiredBssType_independent;
- break;
-
- /** We will never set the BssType to 'any' when attempting a connection
- so CSR should never send this back to us.*/
- case eCSR_BSS_TYPE_ANY:
- default:
- QDF_ASSERT(0);
- break;
- }
-}
-
-/**
* hdd_remove_beacon_filter() - remove beacon filter
* @adapter: Pointer to the hdd adapter
*
@@ -941,8 +888,6 @@ hdd_conn_save_connect_info(hdd_adapter_t *pAdapter, tCsrRoamInfo *pRoamInfo,
}
hdd_save_bss_info(pAdapter, pRoamInfo);
}
- /* save the connected BssType */
- hdd_conn_save_connected_bss_type(pHddStaCtx, eBssType);
}
/**
@@ -972,9 +917,8 @@ hdd_send_ft_assoc_response(struct net_device *dev,
u8 *pFTAssocRsp = NULL;
if (pCsrRoamInfo->nAssocRspLength == 0) {
- hddLog(LOGE,
- FL("pCsrRoamInfo->nAssocRspLength=%d"),
- (int)pCsrRoamInfo->nAssocRspLength);
+ hdd_err("pCsrRoamInfo->nAssocRspLength=%d",
+ (int)pCsrRoamInfo->nAssocRspLength);
return;
}
@@ -982,18 +926,19 @@ hdd_send_ft_assoc_response(struct net_device *dev,
(u8 *) (pCsrRoamInfo->pbFrames + pCsrRoamInfo->nBeaconLength +
pCsrRoamInfo->nAssocReqLength);
if (pFTAssocRsp == NULL) {
- hddLog(LOGE, FL("AssocReq or AssocRsp is NULL"));
+ hdd_err("AssocReq or AssocRsp is NULL");
return;
}
/* pFTAssocRsp needs to point to the IEs */
pFTAssocRsp += FT_ASSOC_RSP_IES_OFFSET;
- hddLog(LOG1, FL("AssocRsp is now at %02x%02x"),
- (unsigned int)pFTAssocRsp[0], (unsigned int)pFTAssocRsp[1]);
+ hdd_notice("AssocRsp is now at %02x%02x",
+ (unsigned int)pFTAssocRsp[0],
+ (unsigned int)pFTAssocRsp[1]);
/* We need to send the IEs to the supplicant. */
buff = kmalloc(IW_GENERIC_IE_MAX, GFP_ATOMIC);
if (buff == NULL) {
- hddLog(LOGE, FL("kmalloc unable to allocate memory"));
+ hdd_err("kmalloc unable to allocate memory");
return;
}
/* Send the Assoc Resp, the supplicant needs this for initial Auth. */
@@ -1042,20 +987,19 @@ static void hdd_send_ft_event(hdd_adapter_t *pAdapter)
sme_get_rici_es(pHddCtx->hHal, pAdapter->sessionId, (u8 *) ricIe,
DOT11F_IE_RICDESCRIPTOR_MAX_LEN, &ric_ies_length);
if (ric_ies_length == 0) {
- hddLog(LOGW,
- FL("RIC IEs is of length 0 not sending RIC Information for now"));
+ hdd_warn("RIC IEs is of length 0 not sending RIC Information for now");
}
ftEvent.ric_ies = ricIe;
ftEvent.ric_ies_len = ric_ies_length;
- hddLog(LOG1, FL("RIC IEs is of length %d"), (int)ric_ies_length);
+ hdd_notice("RIC IEs is of length %d", (int)ric_ies_length);
sme_get_ft_pre_auth_response(pHddCtx->hHal, pAdapter->sessionId,
(u8 *) ftIe, DOT11F_IE_FTINFO_MAX_LEN,
&auth_resp_len);
if (auth_resp_len == 0) {
- hddLog(LOGE, FL("AuthRsp FTIES is of length 0"));
+ hdd_err("AuthRsp FTIES is of length 0");
return;
}
@@ -1066,9 +1010,9 @@ static void hdd_send_ft_event(hdd_adapter_t *pAdapter)
ftEvent.ies = (u8 *) (ftIe + QDF_MAC_ADDR_SIZE);
ftEvent.ies_len = auth_resp_len - QDF_MAC_ADDR_SIZE;
- hddLog(LOG1, FL("ftEvent.ies_len %zu"), ftEvent.ies_len);
- hddLog(LOG1, FL("ftEvent.ric_ies_len %zu"), ftEvent.ric_ies_len);
- hddLog(LOG1, FL("ftEvent.target_ap %2x-%2x-%2x-%2x-%2x-%2x"),
+ hdd_notice("ftEvent.ies_len %zu", ftEvent.ies_len);
+ hdd_notice("ftEvent.ric_ies_len %zu", ftEvent.ric_ies_len);
+ hdd_notice("ftEvent.target_ap %2x-%2x-%2x-%2x-%2x-%2x",
ftEvent.target_ap[0], ftEvent.target_ap[1],
ftEvent.target_ap[2], ftEvent.target_ap[3], ftEvent.target_ap[4],
ftEvent.target_ap[5]);
@@ -1079,7 +1023,7 @@ static void hdd_send_ft_event(hdd_adapter_t *pAdapter)
/* We need to send the IEs to the supplicant */
buff = kmalloc(IW_CUSTOM_MAX, GFP_ATOMIC);
if (buff == NULL) {
- hddLog(LOGE, FL("kmalloc unable to allocate memory"));
+ hdd_err("kmalloc unable to allocate memory");
return;
}
qdf_mem_zero(buff, IW_CUSTOM_MAX);
@@ -1090,8 +1034,7 @@ static void hdd_send_ft_event(hdd_adapter_t *pAdapter)
(u8 *) &(buff[str_len]), (IW_CUSTOM_MAX - str_len),
&ric_ies_length);
if (ric_ies_length == 0) {
- hddLog(LOGW,
- FL("RIC IEs is of length 0 not sending RIC Information for now"));
+ hdd_warn("RIC IEs is of length 0 not sending RIC Information for now");
} else {
wrqu.data.length = str_len + ric_ies_length;
wireless_send_event(pAdapter->dev, IWEVCUSTOM, &wrqu, buff);
@@ -1106,7 +1049,7 @@ static void hdd_send_ft_event(hdd_adapter_t *pAdapter)
if (auth_resp_len == 0) {
kfree(buff);
- hddLog(LOGE, FL("AuthRsp FTIES is of length 0"));
+ hdd_err("AuthRsp FTIES is of length 0");
return;
}
@@ -1139,15 +1082,15 @@ hdd_send_new_ap_channel_info(struct net_device *dev, hdd_adapter_t *pAdapter,
tSirBssDescription *descriptor = pCsrRoamInfo->pBssDesc;
if (descriptor == NULL) {
- hddLog(LOGE, FL("pCsrRoamInfo->pBssDesc(%p)"), descriptor);
+ hdd_err("pCsrRoamInfo->pBssDesc(%p)", descriptor);
return;
}
/*
* Send the Channel event, the supplicant needs this to generate
* the Adjacent AP report.
*/
- hddLog(LOGW, FL("Sending up an SIOCGIWFREQ, channelId(%d)"),
- descriptor->channelId);
+ hdd_warn("Sending up an SIOCGIWFREQ, channelId(%d)",
+ descriptor->channelId);
memset(&wrqu, '\0', sizeof(wrqu));
wrqu.freq.m = descriptor->channelId;
wrqu.freq.e = 0;
@@ -1177,24 +1120,25 @@ hdd_send_update_beacon_ies_event(hdd_adapter_t *pAdapter,
memset(&wrqu, '\0', sizeof(wrqu));
if (0 == pCsrRoamInfo->nBeaconLength) {
- hddLog(LOGW, FL("pCsrRoamInfo->nBeaconFrameLength = 0"));
+ hdd_warn("pCsrRoamInfo->nBeaconFrameLength = 0");
return;
}
pBeaconIes = (u8 *) (pCsrRoamInfo->pbFrames + BEACON_FRAME_IES_OFFSET);
if (pBeaconIes == NULL) {
- hddLog(LOGW, FL("Beacon IEs is NULL"));
+ hdd_warn("Beacon IEs is NULL");
return;
}
/* pBeaconIes needs to point to the IEs */
- hddLog(LOG1, FL("Beacon IEs is now at %02x%02x"),
- (unsigned int)pBeaconIes[0], (unsigned int)pBeaconIes[1]);
- hddLog(LOG1, FL("Beacon IEs length = %d"),
- pCsrRoamInfo->nBeaconLength - BEACON_FRAME_IES_OFFSET);
+ hdd_notice("Beacon IEs is now at %02x%02x",
+ (unsigned int)pBeaconIes[0],
+ (unsigned int)pBeaconIes[1]);
+ hdd_notice("Beacon IEs length = %d",
+ pCsrRoamInfo->nBeaconLength - BEACON_FRAME_IES_OFFSET);
/* We need to send the IEs to the supplicant. */
buff = kmalloc(IW_CUSTOM_MAX, GFP_ATOMIC);
if (buff == NULL) {
- hddLog(LOGE, FL("kmalloc unable to allocate memory"));
+ hdd_err("kmalloc unable to allocate memory");
return;
}
qdf_mem_zero(buff, IW_CUSTOM_MAX);
@@ -1222,8 +1166,8 @@ hdd_send_update_beacon_ies_event(hdd_adapter_t *pAdapter,
else
buff[strLen] = 0; /* last chunk */
- hddLog(LOG1, FL("Beacon IEs length to supplicant = %d"),
- currentLen);
+ hdd_notice("Beacon IEs length to supplicant = %d",
+ currentLen);
wireless_send_event(pAdapter->dev, IWEVCUSTOM, &wrqu, buff);
} while (totalIeLen > 0);
@@ -1261,13 +1205,13 @@ static void hdd_send_association_event(struct net_device *dev,
if (NULL != pCsrRoamInfo)
if (pCsrRoamInfo->roamSynchInProgress)
/* change logging before release */
- hddLog(LOG4, "LFR3:hdd_send_association_event");
+ hdd_info("LFR3:hdd_send_association_event");
#endif
if (eConnectionState_Associated == pHddStaCtx->conn_info.connState) {
tSirSmeChanInfo chan_info;
if (!pCsrRoamInfo) {
- hddLog(LOGE, FL("STA in associated state but pCsrRoamInfo is null"));
+ hdd_err("STA in associated state but pCsrRoamInfo is null");
return;
}
@@ -1283,14 +1227,12 @@ static void hdd_send_association_event(struct net_device *dev,
P2P_CLIENT_CONNECTING_STATE_1) {
global_p2p_connection_status =
P2P_CLIENT_CONNECTED_STATE_1;
- hddLog(LOGE,
- "[P2P State] Changing state from Connecting state to Connected State for 8-way Handshake");
+ hdd_err("[P2P State] Changing state from Connecting state to Connected State for 8-way Handshake");
} else if (global_p2p_connection_status ==
P2P_CLIENT_CONNECTING_STATE_2) {
global_p2p_connection_status =
P2P_CLIENT_COMPLETED_STATE;
- hddLog(LOGE,
- "[P2P State] Changing state from Connecting state to P2P Client Connection Completed");
+ hdd_err("[P2P State] Changing state from Connecting state to P2P Client Connection Completed");
}
}
#endif
@@ -1468,8 +1410,6 @@ static void hdd_conn_remove_connect_info(hdd_station_ctx_t *pHddStaCtx)
qdf_mem_zero(&pHddStaCtx->conn_info.Keys, sizeof(tCsrKeys));
qdf_mem_zero(&pHddStaCtx->ibss_enc_key, sizeof(tCsrRoamSetKey));
- /* Set not-connected state */
- pHddStaCtx->conn_info.connDot11DesiredBssType = eCSR_BSS_TYPE_ANY;
pHddStaCtx->conn_info.proxyARPService = 0;
qdf_mem_zero(&pHddStaCtx->conn_info.SSID, sizeof(tCsrSSIDInfo));
@@ -1497,8 +1437,7 @@ QDF_STATUS hdd_roam_deregister_sta(hdd_adapter_t *pAdapter, uint8_t staId)
qdf_status = ol_txrx_clear_peer(staId);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGE,
- FL("ol_txrx_clear_peer() failed for staID %d. Status(%d) [0x%08X]"),
+ hdd_err("ol_txrx_clear_peer() failed for staID %d. Status(%d) [0x%08X]",
staId, qdf_status, qdf_status);
}
return qdf_status;
@@ -1579,11 +1518,11 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
bool sendDisconInd = true;
if (dev == NULL) {
- hddLog(LOGE, FL("net_dev is released return"));
+ hdd_err("net_dev is released return");
return QDF_STATUS_E_FAILURE;
}
/* notify apps that we can't pass traffic anymore */
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_notice("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter, WLAN_NETIF_TX_DISABLE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -1609,8 +1548,7 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
pHddStaCtx->conn_info.connState) ||
(eConnectionState_NotConnected ==
pHddStaCtx->conn_info.connState)) {
- hddLog(LOG1,
- FL("HDD has initiated a disconnect, no need to send disconnect indication to kernel"));
+ hdd_notice("HDD has initiated a disconnect, no need to send disconnect indication to kernel");
sendDisconInd = false;
}
@@ -1665,14 +1603,12 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
P2P_CLIENT_CONNECTED_STATE_1) {
global_p2p_connection_status =
P2P_CLIENT_DISCONNECTED_STATE;
- hddLog(LOGE,
- "[P2P State] 8 way Handshake completed and moved to disconnected state");
+ hdd_err("[P2P State] 8 way Handshake completed and moved to disconnected state");
} else if (global_p2p_connection_status ==
P2P_CLIENT_COMPLETED_STATE) {
global_p2p_connection_status =
P2P_NOT_ACTIVE;
- hddLog(LOGE,
- "[P2P State] P2P Client is removed and moved to inactive state");
+ hdd_err("[P2P State] P2P Client is removed and moved to inactive state");
}
}
#endif
@@ -1700,11 +1636,10 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
if (0 == pHddStaCtx->conn_info.staId[i])
continue;
sta_id = pHddStaCtx->conn_info.staId[i];
- hddLog(LOG1, FL("Deregister StaID %d"), sta_id);
+ hdd_info("Deregister StaID %d", sta_id);
vstatus = hdd_roam_deregister_sta(pAdapter, sta_id);
if (!QDF_IS_STATUS_SUCCESS(vstatus)) {
- hddLog(LOGE,
- FL("hdd_roamDeregisterSTA() failed to for staID %d. Status= %d [0x%x]"),
+ hdd_err("hdd_roamDeregisterSTA() failed to for staID %d. Status= %d [0x%x]",
sta_id, status, status);
status = QDF_STATUS_E_FAILURE;
}
@@ -1733,8 +1668,7 @@ static QDF_STATUS hdd_dis_connect_handler(hdd_adapter_t *pAdapter,
*/
vstatus = hdd_roam_deregister_sta(pAdapter, sta_id);
if (!QDF_IS_STATUS_SUCCESS(vstatus)) {
- hddLog(LOGE,
- FL("hdd_roam_deregister_sta() failed to for staID %d. Status= %d [0x%x]"),
+ hdd_err("hdd_roam_deregister_sta() failed to for staID %d. Status= %d [0x%x]",
sta_id, status, status);
status = QDF_STATUS_E_FAILURE;
}
@@ -1782,8 +1716,7 @@ void hdd_set_peer_authorized_event(uint32_t vdev_id)
adapter = hdd_get_adapter_by_vdev(hdd_ctx, vdev_id);
if (adapter == NULL) {
- hddLog(LOGE,
- "%s: Invalid vdev_id", __func__);
+ hdd_err("Invalid vdev_id");
}
complete(&adapter->sta_authorized_event);
}
@@ -1812,7 +1745,7 @@ QDF_STATUS hdd_change_peer_state(hdd_adapter_t *pAdapter,
}
if (sta_id >= WLAN_MAX_STA_COUNT) {
- hddLog(LOGE, "Invalid sta id :%d", sta_id);
+ hdd_err("Invalid sta id :%d", sta_id);
return QDF_STATUS_E_INVAL;
}
@@ -1822,13 +1755,13 @@ QDF_STATUS hdd_change_peer_state(hdd_adapter_t *pAdapter,
peer_mac_addr = ol_txrx_peer_get_peer_mac_addr(peer);
if (peer_mac_addr == NULL) {
- hddLog(LOGE, "peer mac addr is NULL");
+ hdd_err("peer mac addr is NULL");
return QDF_STATUS_E_FAULT;
}
err = ol_txrx_peer_state_update(pdev, peer_mac_addr, sta_state);
if (err != QDF_STATUS_SUCCESS) {
- hddLog(LOGE, "peer state update failed");
+ hdd_err("peer state update failed");
return QDF_STATUS_E_FAULT;
}
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
@@ -1846,7 +1779,7 @@ QDF_STATUS hdd_change_peer_state(hdd_adapter_t *pAdapter,
hdd_set_peer_authorized_event,
pAdapter->sessionId);
if (err != QDF_STATUS_SUCCESS) {
- hddLog(LOGE, "Failed to set the peer state to authorized");
+ hdd_err("Failed to set the peer state to authorized");
return QDF_STATUS_E_FAULT;
}
@@ -1861,8 +1794,7 @@ QDF_STATUS hdd_change_peer_state(hdd_adapter_t *pAdapter,
&pAdapter->sta_authorized_event,
msecs_to_jiffies(HDD_PEER_AUTHORIZE_WAIT));
if (!rc) {
- hddLog(LOG1, "%s: timeout waiting for sta_authorized_event",
- __func__);
+ hdd_notice("timeout waiting for sta_authorized_event");
}
vdev = ol_txrx_get_vdev_for_peer(peer);
ol_txrx_vdev_unpause(vdev,
@@ -1907,8 +1839,8 @@ QDF_STATUS hdd_roam_register_sta(hdd_adapter_t *pAdapter,
staDesc.is_qos_enabled = 0;
#ifdef FEATURE_WLAN_WAPI
- hddLog(LOG1, FL("WAPI STA Registered: %d"),
- pAdapter->wapi_info.fIsWapiSta);
+ hdd_notice("WAPI STA Registered: %d",
+ pAdapter->wapi_info.fIsWapiSta);
if (pAdapter->wapi_info.fIsWapiSta)
staDesc.is_wapi_supported = 1;
else
@@ -1926,9 +1858,8 @@ QDF_STATUS hdd_roam_register_sta(hdd_adapter_t *pAdapter,
qdf_status = ol_txrx_register_peer(&staDesc);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGW,
- "ol_txrx_register_peer() failed to register. Status=%d [0x%08X]",
- qdf_status, qdf_status);
+ hdd_warn("ol_txrx_register_peer() failed to register. Status=%d [0x%08X]",
+ qdf_status, qdf_status);
return qdf_status;
}
@@ -1949,8 +1880,7 @@ QDF_STATUS hdd_roam_register_sta(hdd_adapter_t *pAdapter,
hdd_conn_set_authenticated(pAdapter, true);
} else {
- hddLog(LOG3,
- "ULA auth StaId= %d. Changing TL state to CONNECTED at Join time",
+ hdd_info("ULA auth StaId= %d. Changing TL state to CONNECTED at Join time",
pHddStaCtx->conn_info.staId[0]);
qdf_status =
hdd_change_peer_state(pAdapter, staDesc.sta_id,
@@ -1995,7 +1925,7 @@ static void hdd_send_re_assoc_event(struct net_device *dev,
tHalHandle hal_handle = WLAN_HDD_GET_HAL_CTX(pAdapter);
if (!rspRsnIe) {
- hddLog(LOGE, FL("Unable to allocate RSN IE"));
+ hdd_err("Unable to allocate RSN IE");
goto done;
}
@@ -2004,12 +1934,12 @@ static void hdd_send_re_assoc_event(struct net_device *dev,
goto done;
}
if (pCsrRoamInfo == NULL) {
- hddLog(LOGE, FL("Invalid CSR roam info"));
+ hdd_err("Invalid CSR roam info");
goto done;
}
if (pCsrRoamInfo->nAssocRspLength == 0) {
- hddLog(LOGE, FL("Invalid assoc response length"));
+ hdd_err("Invalid assoc response length");
goto done;
}
@@ -2021,8 +1951,8 @@ static void hdd_send_re_assoc_event(struct net_device *dev,
/* pFTAssocRsp needs to point to the IEs */
pFTAssocRsp += FT_ASSOC_RSP_IES_OFFSET;
- hddLog(LOG1, FL("AssocRsp is now at %02x%02x"),
- (unsigned int)pFTAssocRsp[0], (unsigned int)pFTAssocRsp[1]);
+ hdd_info("AssocRsp is now at %02x%02x",
+ (unsigned int)pFTAssocRsp[0], (unsigned int)pFTAssocRsp[1]);
/*
* Active session count is decremented upon disconnection, but during
@@ -2058,7 +1988,7 @@ static void hdd_send_re_assoc_event(struct net_device *dev,
#endif
if (bss == NULL)
- hddLog(LOGE, FL("Get BSS returned NULL"));
+ hdd_err("Get BSS returned NULL");
buf_ptr = buf_ssid_ie;
*buf_ptr = SIR_MAC_SSID_EID;
buf_ptr++;
@@ -2146,9 +2076,8 @@ static int hdd_change_sta_state_authenticated(hdd_adapter_t *adapter,
AUTO_PS_ENTRY_TIMER_DEFAULT_VALUE :
AUTO_DEFERRED_PS_ENTRY_TIMER_DEFAULT_VALUE;
- hddLog(LOG1,
- "Changing TL state to AUTHENTICATED for StaId= %d",
- hddstactx->conn_info.staId[0]);
+ hdd_info("Changing TL state to AUTHENTICATED for StaId= %d",
+ hddstactx->conn_info.staId[0]);
/* Connections that do not need Upper layer authentication,
* transition TL to 'Authenticated' state after the keys are set
@@ -2195,7 +2124,7 @@ static QDF_STATUS hdd_roam_set_key_complete_handler(hdd_adapter_t *pAdapter,
ENTER();
if (NULL == pRoamInfo) {
- hddLog(LOG2, FL("pRoamInfo is NULL"));
+ hdd_info("pRoamInfo is NULL");
return QDF_STATUS_E_FAILURE;
}
/*
@@ -2204,7 +2133,7 @@ static QDF_STATUS hdd_roam_set_key_complete_handler(hdd_adapter_t *pAdapter,
* (those that do not require upper layer authentication) we can put TL
* directly into 'authenticated' state.
*/
- hddLog(LOG2, "Set Key completion roamStatus =%d roamResult=%d "
+ hdd_info("Set Key completion roamStatus =%d roamResult=%d "
MAC_ADDRESS_STR, roamStatus, roamResult,
MAC_ADDR_ARRAY(pRoamInfo->peerMac.bytes));
@@ -2223,8 +2152,7 @@ static QDF_STATUS hdd_roam_set_key_complete_handler(hdd_adapter_t *pAdapter,
&pRoamInfo->peerMac,
&staId);
if (QDF_STATUS_SUCCESS == qdf_status) {
- hddLog(LOG2,
- "WLAN TL STA Ptk Installed for STAID=%d",
+ hdd_info("WLAN TL STA Ptk Installed for STAID=%d",
staId);
pHddStaCtx->roam_info.roamingState =
HDD_ROAM_STATE_NONE;
@@ -2329,7 +2257,7 @@ void hdd_perform_roam_set_key_complete(hdd_adapter_t *pAdapter)
pHddStaCtx->roam_info.roamStatus,
eCSR_ROAM_RESULT_AUTHENTICATED);
if (qdf_ret_status != QDF_STATUS_SUCCESS)
- hddLog(LOGE, FL("Set Key complete failure"));
+ hdd_err("Set Key complete failure");
pHddStaCtx->roam_info.deferKeyComplete = false;
}
@@ -2379,13 +2307,13 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
pHddStaCtx->conn_info.connState)) &&
((eCSR_ROAM_RESULT_ASSOCIATED == roamResult) ||
(eCSR_ROAM_ASSOCIATION_FAILURE == roamStatus))) {
- hddLog(LOG1, FL("Disconnect from HDD in progress"));
+ hdd_info("Disconnect from HDD in progress");
hddDisconInProgress = true;
}
if (eCSR_ROAM_RESULT_ASSOCIATED == roamResult) {
if (NULL == pRoamInfo) {
- hddLog(LOGE, FL("pRoamInfo is NULL"));
+ hdd_err("pRoamInfo is NULL");
return QDF_STATUS_E_FAILURE;
}
if (!hddDisconInProgress) {
@@ -2464,8 +2392,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
if ((WLAN_MAX_STA_COUNT + 3) > pRoamInfo->staId)
pHddCtx->sta_to_adapter[pRoamInfo->staId] = pAdapter;
else
- hddLog(LOGE, "%s: Wrong Staid: %d", __func__,
- pRoamInfo->staId);
+ hdd_err("Wrong Staid: %d", pRoamInfo->staId);
pHddCtx->sta_to_adapter[pRoamInfo->staId] = pAdapter;
@@ -2543,15 +2470,14 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
* pFTAssocRsp needs to point to the IEs
*/
pFTAssocRsp += FT_ASSOC_RSP_IES_OFFSET;
- hddLog(LOG1,
- FL("AssocRsp is now at %02x%02x"),
- (unsigned int)pFTAssocRsp[0],
- (unsigned int)pFTAssocRsp[1]);
+ hdd_info("AssocRsp is now at %02x%02x",
+ (unsigned int)pFTAssocRsp[0],
+ (unsigned int)pFTAssocRsp[1]);
assocRsplen =
pRoamInfo->nAssocRspLength -
FT_ASSOC_RSP_IES_OFFSET;
} else {
- hddLog(LOGE, FL("AssocRsp is NULL"));
+ hdd_err("AssocRsp is NULL");
assocRsplen = 0;
}
@@ -2566,12 +2492,11 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
*/
pFTAssocReq +=
FT_ASSOC_REQ_IES_OFFSET;
- hddLog(LOG1,
- FL("pFTAssocReq is now at %02x%02x"),
- (unsigned int)
- pFTAssocReq[0],
- (unsigned int)
- pFTAssocReq[1]);
+ hdd_info("pFTAssocReq is now at %02x%02x",
+ (unsigned int)
+ pFTAssocReq[0],
+ (unsigned int)
+ pFTAssocReq[1]);
assocReqlen =
pRoamInfo->nAssocReqLength -
FT_ASSOC_REQ_IES_OFFSET;
@@ -2584,7 +2509,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
pRoamInfo->nAssocReqLength;
}
} else {
- hddLog(LOGE, FL("AssocReq is NULL"));
+ hdd_err("AssocReq is NULL");
assocReqlen = 0;
}
@@ -2607,18 +2532,17 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
cds_decr_session_set_pcl
(pAdapter->device_mode,
pAdapter->sessionId);
- hddLog(LOG1,
- FL("ft_carrier_on is %d, sending roamed indication"),
- ft_carrier_on);
+ hdd_info("ft_carrier_on is %d, sending roamed indication",
+ ft_carrier_on);
chan =
ieee80211_get_channel
(pAdapter->wdev.wiphy,
(int)pRoamInfo->pBssDesc->
channelId);
- hddLog(LOG1,
- "assocReqlen %d assocRsplen %d",
- assocReqlen,
- assocRsplen);
+ hdd_info(
+ "assocReqlen %d assocRsplen %d",
+ assocReqlen,
+ assocRsplen);
hdd_notice(
"Reassoc Req IE dump");
@@ -2672,9 +2596,8 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
deferKeyComplete = true;
}
} else if (!hddDisconInProgress) {
- hddLog(LOG1,
- FL("ft_carrier_on is %d, sending connect indication"),
- ft_carrier_on);
+ hdd_info("ft_carrier_on is %d, sending connect indication",
+ ft_carrier_on);
hdd_connect_result(dev,
pRoamInfo->
bssid.bytes,
@@ -2711,13 +2634,12 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
reqRsnIe,
reqRsnLength);
else {
- hddLog(LOG1,
- FL("sending connect indication to nl80211:for bssid "
- MAC_ADDRESS_STR
- " result:%d and Status:%d"),
- MAC_ADDR_ARRAY
- (pRoamInfo->bssid.bytes),
- roamResult, roamStatus);
+ hdd_info("sending connect indication to nl80211:for bssid "
+ MAC_ADDRESS_STR
+ " result:%d and Status:%d",
+ MAC_ADDR_ARRAY
+ (pRoamInfo->bssid.bytes),
+ roamResult, roamStatus);
/* inform connect result to nl80211 */
hdd_connect_result(dev,
@@ -2752,7 +2674,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
* hdd_roam_register_sta will flush any cached
* data frames immediately.
*/
- hddLog(LOG1, FL("Enabling queues"));
+ hdd_info("Enabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
@@ -2796,9 +2718,8 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
);
hdd_conn_set_authenticated(pAdapter, false);
} else {
- hddLog(LOG2,
- FL("staId: %d Changing TL state to AUTHENTICATED"),
- pHddStaCtx->conn_info.staId[0]);
+ hdd_info("staId: %d Changing TL state to AUTHENTICATED",
+ pHddStaCtx->conn_info.staId[0]);
qdf_status =
hdd_change_peer_state(pAdapter,
pHddStaCtx->conn_info.staId[0],
@@ -2824,9 +2745,9 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
/* Start the tx queues */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
if (pRoamInfo->roamSynchInProgress)
- hddLog(LOG3, "LFR3:netif_tx_wake_all_queues");
+ hdd_info("LFR3:netif_tx_wake_all_queues");
#endif
- hddLog(LOG1, FL("Enabling queues"));
+ hdd_info("Enabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
@@ -2837,8 +2758,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
#endif
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGE,
- "STA register with TL failed. status(=%d) [%08X]",
+ hdd_err("STA register with TL failed. status(=%d) [%08X]",
qdf_status, qdf_status);
}
#ifdef WLAN_FEATURE_11W
@@ -2886,21 +2806,19 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
if (eCSR_ROAM_ASSOCIATION_FAILURE == roamStatus
&& !hddDisconInProgress) {
if (pRoamInfo) {
- hddLog(LOGE,
- FL("send connect failure to nl80211: for bssid "
- MAC_ADDRESS_STR
- " result:%d and Status:%d reasoncode %d"),
- MAC_ADDR_ARRAY(pRoamInfo->bssid.bytes),
- roamResult, roamStatus,
- pRoamInfo->reasonCode);
+ hdd_err("send connect failure to nl80211: for bssid "
+ MAC_ADDRESS_STR
+ " result:%d and Status:%d reasoncode %d",
+ MAC_ADDR_ARRAY(pRoamInfo->bssid.bytes),
+ roamResult, roamStatus,
+ pRoamInfo->reasonCode);
pHddStaCtx->conn_info.assoc_status_code =
pRoamInfo->statusCode;
}
else
- hddLog(LOGE,
- FL("connect failed: for bssid "
+ hdd_err("connect failed: for bssid "
MAC_ADDRESS_STR
- " result:%d and Status:%d "),
+ " result:%d and Status:%d ",
MAC_ADDR_ARRAY(pWextState->req_bssId.bytes),
roamResult, roamStatus);
@@ -2990,7 +2908,7 @@ static QDF_STATUS hdd_association_completion_handler(hdd_adapter_t *pAdapter,
}
hdd_wmm_init(pAdapter);
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -3030,8 +2948,9 @@ static void hdd_roam_ibss_indication_handler(hdd_adapter_t *pAdapter,
eRoamCmdStatus roamStatus,
eCsrRoamResult roamResult)
{
- hddLog(LOG1, "%s: id %d, status %d, result %d",
- pAdapter->dev->name, roamId, roamStatus, roamResult);
+ hdd_info("%s: id %d, status %d, result %d",
+ pAdapter->dev->name, roamId,
+ roamStatus, roamResult);
switch (roamResult) {
/* both IBSS Started and IBSS Join should come in here. */
@@ -3078,21 +2997,20 @@ static void hdd_roam_ibss_indication_handler(hdd_adapter_t *pAdapter,
unsigned int freq;
#endif
/* we created the IBSS, notify supplicant */
- hddLog(LOG1,
- FL("%s: created ibss " MAC_ADDRESS_STR),
- pAdapter->dev->name,
- MAC_ADDR_ARRAY(pRoamInfo->pBssDesc->bssId));
+ hdd_info("%s: created ibss " MAC_ADDRESS_STR,
+ pAdapter->dev->name,
+ MAC_ADDR_ARRAY(
+ pRoamInfo->pBssDesc->bssId));
/* we must first give cfg80211 the BSS information */
bss = wlan_hdd_cfg80211_update_bss_db(pAdapter,
pRoamInfo);
if (NULL == bss) {
- hddLog(LOGE,
- FL("%s: unable to create IBSS entry"),
- pAdapter->dev->name);
+ hdd_err("%s: unable to create IBSS entry",
+ pAdapter->dev->name);
return;
}
- hddLog(LOG1, FL("Enabling queues"));
+ hdd_info("Enabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_START_ALL_NETIF_QUEUE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -3114,9 +3032,9 @@ static void hdd_roam_ibss_indication_handler(hdd_adapter_t *pAdapter,
bss->bssid, chan,
GFP_KERNEL);
else
- hddLog(LOGE, FL("%s: chanId: %d, can't find channel"),
- pAdapter->dev->name,
- (int)pRoamInfo->pBssDesc->channelId);
+ hdd_err("%s: chanId: %d, can't find channel",
+ pAdapter->dev->name,
+ (int)pRoamInfo->pBssDesc->channelId);
#else
cfg80211_ibss_joined(pAdapter->dev, bss->bssid,
GFP_KERNEL);
@@ -3137,14 +3055,13 @@ static void hdd_roam_ibss_indication_handler(hdd_adapter_t *pAdapter,
case eCSR_ROAM_RESULT_IBSS_START_FAILED:
{
- hddLog(LOGE,
- FL("%s: unable to create IBSS"), pAdapter->dev->name);
+ hdd_err("%s: unable to create IBSS", pAdapter->dev->name);
break;
}
default:
- hddLog(LOGE, FL("%s: unexpected result %d"),
- pAdapter->dev->name, (int)roamResult);
+ hdd_err("%s: unexpected result %d",
+ pAdapter->dev->name, (int)roamResult);
break;
}
@@ -3169,8 +3086,8 @@ bool hdd_save_peer(hdd_station_ctx_t *sta_ctx, uint8_t sta_id,
for (idx = 0; idx < SIR_MAX_NUM_STA_IN_IBSS; idx++) {
if (0 == sta_ctx->conn_info.staId[idx]) {
- hddLog(LOG1, FL("adding peer: %pM, sta_id: %d, at idx: %d"),
- peer_mac_addr, sta_id, idx);
+ hdd_info("adding peer: %pM, sta_id: %d, at idx: %d",
+ peer_mac_addr, sta_id, idx);
sta_ctx->conn_info.staId[idx] = sta_id;
qdf_copy_macaddr(
&sta_ctx->conn_info.peerMacAddress[idx],
@@ -3250,7 +3167,7 @@ static bool roam_remove_ibss_station(hdd_adapter_t *pAdapter, uint8_t staId)
/* Last peer departed, set the IBSS state appropriately */
pHddStaCtx->conn_info.connState =
eConnectionState_IbssDisconnected;
- hddLog(LOGE, "Last IBSS Peer Departed!!!");
+ hdd_err("Last IBSS Peer Departed!!!");
}
/* Find next active staId, to have a valid sta trigger for TL. */
if (fSuccess == true) {
@@ -3299,8 +3216,7 @@ static QDF_STATUS roam_ibss_connect_handler(hdd_adapter_t *pAdapter,
/* add bss_id to cfg80211 data base */
bss = wlan_hdd_cfg80211_update_bss_db(pAdapter, pRoamInfo);
if (NULL == bss) {
- hddLog(LOGE,
- FL("%s: unable to create IBSS entry"),
+ hdd_err("%s: unable to create IBSS entry",
pAdapter->dev->name);
return QDF_STATUS_E_FAILURE;
}
@@ -3342,8 +3258,8 @@ hdd_roam_mic_error_indication_handler(hdd_adapter_t *pAdapter,
memcpy(msg.src_addr.sa_data,
pRoamInfo->u.pMICFailureInfo->taMacAddr,
sizeof(pRoamInfo->u.pMICFailureInfo->taMacAddr));
- hddLog(LOG1, "MIC MAC " MAC_ADDRESS_STR,
- MAC_ADDR_ARRAY(msg.src_addr.sa_data));
+ hdd_info("MIC MAC " MAC_ADDRESS_STR,
+ MAC_ADDR_ARRAY(msg.src_addr.sa_data));
if (pRoamInfo->u.pMICFailureInfo->multicast == eSIR_TRUE)
msg.flags = IW_MICFAILURE_GROUP;
@@ -3412,7 +3328,7 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
(WLAN_HDD_GET_STATION_CTX_PTR(pAdapter),
pRoamInfo->staId,
&pRoamInfo->peerMac)) {
- hddLog(LOGW, "Max reached: Can't register new IBSS peer");
+ hdd_warn("Max reached: Can't register new IBSS peer");
break;
}
@@ -3425,8 +3341,7 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
&pRoamInfo->peerMac,
pRoamInfo->pBssDesc);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGE,
- "Cannot register STA with TL for IBSS. Failed with qdf_status = %d [%08X]",
+ hdd_err("Cannot register STA with TL for IBSS. Failed with qdf_status = %d [%08X]",
qdf_status, qdf_status);
}
pHddStaCtx->ibss_sta_generation++;
@@ -3451,8 +3366,8 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
qdf_copy_macaddr(&pHddStaCtx->ibss_enc_key.peerMac,
&pRoamInfo->peerMac);
- hddLog(LOG2, "New peer joined set PTK encType=%d",
- pHddStaCtx->ibss_enc_key.encType);
+ hdd_info("New peer joined set PTK encType=%d",
+ pHddStaCtx->ibss_enc_key.encType);
qdf_status =
sme_roam_set_key(WLAN_HDD_GET_HAL_CTX
@@ -3462,13 +3377,12 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
&roamId);
if (QDF_STATUS_SUCCESS != qdf_status) {
- hddLog(LOGE,
- FL("sme_roam_set_key failed, status=%d"),
- qdf_status);
+ hdd_err("sme_roam_set_key failed, status=%d",
+ qdf_status);
return QDF_STATUS_E_FAILURE;
}
}
- hddLog(LOG1, FL("Enabling queues"));
+ hdd_info("Enabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_START_ALL_NETIF_QUEUE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -3488,8 +3402,7 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
if (!roam_remove_ibss_station(pAdapter, pRoamInfo->staId))
- hddLog(LOGW,
- "IBSS peer departed by cannot find peer in our registration table with TL");
+ hdd_warn("IBSS peer departed by cannot find peer in our registration table with TL");
hdd_err("IBSS Peer Departed from SME "
"with peerMac " MAC_ADDRESS_STR " BSSID: "
@@ -3510,10 +3423,9 @@ roam_roam_connect_status_update_handler(hdd_adapter_t *pAdapter,
}
case eCSR_ROAM_RESULT_IBSS_INACTIVE:
{
- hddLog(LOG3,
- "Received eCSR_ROAM_RESULT_IBSS_INACTIVE from SME");
+ hdd_info("Received eCSR_ROAM_RESULT_IBSS_INACTIVE from SME");
/* Stop only when we are inactive */
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -3574,7 +3486,7 @@ QDF_STATUS hdd_roam_register_tdlssta(hdd_adapter_t *pAdapter,
/* Register the Station with TL... */
qdf_status = ol_txrx_register_peer(&staDesc);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGE, FL("ol_txrx_register_peer() failed to register. Status=%d [0x%08X]"),
+ hdd_err("ol_txrx_register_peer() failed to register. Status=%d [0x%08X]",
qdf_status, qdf_status);
return qdf_status;
}
@@ -3595,8 +3507,8 @@ static QDF_STATUS hdd_roam_deregister_tdlssta(hdd_adapter_t *pAdapter,
QDF_STATUS qdf_status;
qdf_status = ol_txrx_clear_peer(staId);
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
- hddLog(LOGW, FL("ol_txrx_clear_peer() failed for staID %d. Status=%d [0x%08X]"),
- staId, qdf_status, qdf_status);
+ hdd_warn("ol_txrx_clear_peer() failed for staID %d. Status=%d [0x%08X]",
+ staId, qdf_status, qdf_status);
}
return qdf_status;
}
@@ -3688,8 +3600,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
hddTdlsPeer_t *curr_peer;
uint32_t reason;
- hddLog(LOG2,
- ("hdd_tdlsStatusUpdate: %s staIdx %d " MAC_ADDRESS_STR),
+ hdd_info("hdd_tdlsStatusUpdate: %s staIdx %d " MAC_ADDRESS_STR,
roamResult ==
eCSR_ROAM_RESULT_ADD_TDLS_PEER ? "ADD_TDLS_PEER" : roamResult
==
@@ -3712,9 +3623,8 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
MAC_ADDR_ARRAY(pRoamInfo->peerMac.bytes));
if (!pHddTdlsCtx) {
- hddLog(LOG1,
- FL("TDLS ctx is null, ignore roamResult (%d)"),
- roamResult);
+ hdd_info("TDLS ctx is null, ignore roamResult (%d)",
+ roamResult);
return status;
}
@@ -3722,7 +3632,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
case eCSR_ROAM_RESULT_ADD_TDLS_PEER:
{
if (eSIR_SME_SUCCESS != pRoamInfo->statusCode) {
- hddLog(LOGE, FL("Add Sta failed. status code(=%d)"),
+ hdd_err("Add Sta failed. status code(=%d)",
pRoamInfo->statusCode);
} else {
/*
@@ -3741,10 +3651,9 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
pHddCtx->tdlsConnInfo[staIdx].
staId = pRoamInfo->staId;
- hddLog(LOGW,
- ("TDLS: STA IDX at %d is %d "
+ hdd_warn("TDLS: STA IDX at %d is %d "
"of mac "
- MAC_ADDRESS_STR),
+ MAC_ADDRESS_STR,
staIdx,
pHddCtx->
tdlsConnInfo[staIdx].
@@ -3769,8 +3678,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
peerMac.bytes,
pRoamInfo->
staId)) {
- hddLog(LOGE,
- "wlan_hdd_tdls_set_sta_id() failed");
+ hdd_err("wlan_hdd_tdls_set_sta_id() failed");
return QDF_STATUS_E_FAILURE;
}
@@ -3789,8 +3697,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
ucastSig);
} else {
status = QDF_STATUS_E_FAILURE;
- hddLog(LOGE,
- FL("no available slot in conn_info. staId %d cannot be stored"),
+ hdd_err("no available slot in conn_info. staId %d cannot be stored",
pRoamInfo->staId);
}
pAdapter->tdlsAddStaStatus = status;
@@ -3801,8 +3708,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
case eCSR_ROAM_RESULT_UPDATE_TDLS_PEER:
{
if (eSIR_SME_SUCCESS != pRoamInfo->statusCode) {
- hddLog(LOGE,
- FL("Add Sta failed. status code(=%d)"),
+ hdd_err("Add Sta failed. status code(=%d)",
pRoamInfo->statusCode);
}
/* store the ucast signature which will be used later when
@@ -3815,8 +3721,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
case eCSR_ROAM_RESULT_LINK_ESTABLISH_REQ_RSP:
{
if (eSIR_SME_SUCCESS != pRoamInfo->statusCode) {
- hddLog(LOGE,
- FL("Link Establish Request failed. status(=%d)"),
+ hdd_err("Link Establish Request failed. status(=%d)",
pRoamInfo->statusCode);
}
complete(&pAdapter->tdls_link_establish_req_comp);
@@ -3830,9 +3735,8 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
pRoamInfo->sessionId)
&& pRoamInfo->staId ==
pHddCtx->tdlsConnInfo[staIdx].staId) {
- hddLog(LOGW,
- ("HDD: del STA IDX = %x"),
- pRoamInfo->staId);
+ hdd_warn("HDD: del STA IDX = %x",
+ pRoamInfo->staId);
curr_peer =
wlan_hdd_tdls_find_peer(pAdapter,
@@ -3876,8 +3780,7 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
break;
case eCSR_ROAM_RESULT_TEARDOWN_TDLS_PEER_IND:
{
- hddLog(LOGE,
- FL("Sending teardown to supplicant with reason code %u"),
+ hdd_err("Sending teardown to supplicant with reason code %u",
pRoamInfo->reasonCode);
curr_peer =
@@ -3898,16 +3801,15 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
if ((pHddCtx->tdlsConnInfo[staIdx].sessionId ==
pRoamInfo->sessionId)
&& pHddCtx->tdlsConnInfo[staIdx].staId) {
- hddLog(LOGW,
- ("hdd_tdlsStatusUpdate: staIdx %d "
- MAC_ADDRESS_STR),
- pHddCtx->tdlsConnInfo[staIdx].
- staId,
- MAC_ADDR_ARRAY(pHddCtx->
- tdlsConnInfo
- [staIdx].
- peerMac.
- bytes));
+ hdd_warn("hdd_tdlsStatusUpdate: staIdx %d "
+ MAC_ADDRESS_STR,
+ pHddCtx->tdlsConnInfo[staIdx].
+ staId,
+ MAC_ADDR_ARRAY(pHddCtx->
+ tdlsConnInfo
+ [staIdx].
+ peerMac.
+ bytes));
wlan_hdd_tdls_reset_peer(pAdapter,
pHddCtx->
tdlsConnInfo
@@ -3933,12 +3835,11 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
smeTdlsPeerStateParams.peerState =
eSME_TDLS_PEER_STATE_TEARDOWN;
- hddLog(LOG1,
- FL("calling sme_update_tdls_peer_state for staIdx %d "
- MAC_ADDRESS_STR),
- pHddCtx->tdlsConnInfo[staIdx].
- staId,
- MAC_ADDR_ARRAY(pHddCtx->
+ hdd_info("calling sme_update_tdls_peer_state for staIdx %d "
+ MAC_ADDRESS_STR,
+ pHddCtx->tdlsConnInfo[staIdx].
+ staId,
+ MAC_ADDR_ARRAY(pHddCtx->
tdlsConnInfo
[staIdx].
peerMac.
@@ -3948,13 +3849,12 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
pHddCtx->hHal,
&smeTdlsPeerStateParams);
if (QDF_STATUS_SUCCESS != status) {
- hddLog(LOGE,
- FL("sme_update_tdls_peer_state failed for "
- MAC_ADDRESS_STR),
- MAC_ADDR_ARRAY
- (pHddCtx->
- tdlsConnInfo[staIdx].
- peerMac.bytes));
+ hdd_err("sme_update_tdls_peer_state failed for "
+ MAC_ADDRESS_STR,
+ MAC_ADDR_ARRAY
+ (pHddCtx->
+ tdlsConnInfo[staIdx].
+ peerMac.bytes));
}
wlan_hdd_tdls_decrement_peer_count
(pAdapter);
@@ -3992,13 +3892,12 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
pRoamInfo->peerMac.bytes,
true);
if (!curr_peer) {
- hddLog(LOGE, FL("curr_peer is null"));
+ hdd_err("curr_peer is null");
status = QDF_STATUS_E_FAILURE;
} else {
if (eTDLS_LINK_CONNECTED ==
curr_peer->link_status) {
- hddLog(LOGE,
- FL("TDLS link status is connected, ignore SHOULD_DISCOVER"));
+ hdd_err("TDLS link status is connected, ignore SHOULD_DISCOVER");
} else {
/*
* If external control is enabled then initiate
@@ -4009,15 +3908,11 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
fTDLSExternalControl
&& (false ==
curr_peer->isForcedPeer)) {
- hddLog(LOG2,
- FL
- ("TDLS ExternalControl enabled but curr_peer is not forced, ignore SHOULD_DISCOVER"));
+ hdd_info("TDLS ExternalControl enabled but curr_peer is not forced, ignore SHOULD_DISCOVER");
status = QDF_STATUS_SUCCESS;
break;
} else {
- hddLog(LOG2,
- FL
- ("initiate TDLS setup on SHOULD_DISCOVER, fTDLSExternalControl: %d, curr_peer->isForcedPeer: %d, reason: %d"),
+ hdd_info("initiate TDLS setup on SHOULD_DISCOVER, fTDLSExternalControl: %d, curr_peer->isForcedPeer: %d, reason: %d",
pHddCtx->config->
fTDLSExternalControl,
curr_peer->isForcedPeer,
@@ -4037,20 +3932,18 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
wlan_hdd_tdls_find_peer(pAdapter,
pRoamInfo->peerMac.bytes, true);
if (!curr_peer) {
- hddLog(LOGE, FL("curr_peer is null"));
+ hdd_err("curr_peer is null");
status = QDF_STATUS_E_FAILURE;
} else {
if (eTDLS_LINK_CONNECTED ==
curr_peer->link_status) {
- hddLog(LOGE,
- FL
- ("Received SHOULD_TEARDOWN for peer "
- MAC_ADDRESS_STR
- " staId: %d, reason: %d"),
- MAC_ADDR_ARRAY(pRoamInfo->
- peerMac.bytes),
- pRoamInfo->staId,
- pRoamInfo->reasonCode);
+ hdd_err("Received SHOULD_TEARDOWN for peer "
+ MAC_ADDRESS_STR
+ " staId: %d, reason: %d",
+ MAC_ADDR_ARRAY(pRoamInfo->
+ peerMac.bytes),
+ pRoamInfo->staId,
+ pRoamInfo->reasonCode);
if (pRoamInfo->reasonCode ==
eWNI_TDLS_TEARDOWN_REASON_RSSI ||
@@ -4073,10 +3966,8 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
eTDLS_TEARDOWN_BSS_DISCONNECT,
curr_peer->peerMac);
} else {
- hddLog(LOGE,
- FL
- ("TDLS link is not connected, ignore SHOULD_TEARDOWN, reason: %d"),
- pRoamInfo->reasonCode);
+ hdd_err("TDLS link is not connected, ignore SHOULD_TEARDOWN, reason: %d",
+ pRoamInfo->reasonCode);
}
status = QDF_STATUS_SUCCESS;
}
@@ -4089,19 +3980,17 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
wlan_hdd_tdls_find_peer(pAdapter,
pRoamInfo->peerMac.bytes, true);
if (!curr_peer) {
- hddLog(LOGE, FL("curr_peer is null"));
+ hdd_err("curr_peer is null");
status = QDF_STATUS_E_FAILURE;
} else {
if (eTDLS_LINK_CONNECTED ==
curr_peer->link_status) {
- hddLog(LOGE,
- FL
- ("Received SHOULD_PEER_DISCONNECTED for peer "
- MAC_ADDRESS_STR
- " staId: %d, reason: %d"),
- MAC_ADDR_ARRAY(pRoamInfo->peerMac.bytes),
- pRoamInfo->staId,
- pRoamInfo->reasonCode);
+ hdd_err("Received SHOULD_PEER_DISCONNECTED for peer "
+ MAC_ADDRESS_STR
+ " staId: %d, reason: %d",
+ MAC_ADDR_ARRAY(pRoamInfo->peerMac.bytes),
+ pRoamInfo->staId,
+ pRoamInfo->reasonCode);
if (pRoamInfo->reasonCode ==
eWNI_TDLS_TEARDOWN_REASON_RSSI ||
@@ -4124,10 +4013,8 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
eTDLS_TEARDOWN_BSS_DISCONNECT,
curr_peer->peerMac);
} else {
- hddLog(LOGE,
- FL
- ("TDLS link is not connected, ignore SHOULD_PEER_DISCONNECTED, reason: %d"),
- pRoamInfo->reasonCode);
+ hdd_err("TDLS link is not connected, ignore SHOULD_PEER_DISCONNECTED, reason: %d",
+ pRoamInfo->reasonCode);
}
status = QDF_STATUS_SUCCESS;
}
@@ -4169,32 +4056,32 @@ hdd_indicate_unprot_mgmt_frame(hdd_adapter_t *pAdapter, uint32_t nFrameLength,
uint8_t type = 0;
uint8_t subType = 0;
- hddLog(LOG1, FL("Frame Type = %d Frame Length = %d"),
- frameType, nFrameLength);
+ hdd_info("Frame Type = %d Frame Length = %d",
+ frameType, nFrameLength);
/* Sanity Checks */
if (NULL == pAdapter) {
- hddLog(LOGE, FL("pAdapter is NULL"));
+ hdd_err("pAdapter is NULL");
return;
}
if (NULL == pAdapter->dev) {
- hddLog(LOGE, FL("pAdapter->dev is NULL"));
+ hdd_err("pAdapter->dev is NULL");
return;
}
if (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic) {
- hddLog(LOGE, FL("pAdapter has invalid magic"));
+ hdd_err("pAdapter has invalid magic");
return;
}
if (!nFrameLength) {
- hddLog(LOGE, FL("Frame Length is Invalid ZERO"));
+ hdd_err("Frame Length is Invalid ZERO");
return;
}
if (NULL == pbFrames) {
- hddLog(LOGE, FL("pbFrames is NULL"));
+ hdd_err("pbFrames is NULL");
return;
}
@@ -4222,8 +4109,8 @@ hdd_indicate_unprot_mgmt_frame(hdd_adapter_t *pAdapter, uint32_t nFrameLength,
#endif
pAdapter->hdd_stats.hddPmfStats.numUnprotDeauthRx++;
} else {
- hddLog(LOGE, FL("Frame type %d and subtype %d are not valid"),
- type, subType);
+ hdd_err("Frame type %d and subtype %d are not valid",
+ type, subType);
return;
}
}
@@ -4257,8 +4144,8 @@ hdd_indicate_tsm_ie(hdd_adapter_t *pAdapter, uint8_t tid,
memset(&wrqu, '\0', sizeof(wrqu));
memset(buf, '\0', sizeof(buf));
- hddLog(LOG1, "TSM Ind tid(%d) state(%d) MeasInt(%d)",
- tid, state, measInterval);
+ hdd_info("TSM Ind tid(%d) state(%d) MeasInt(%d)",
+ tid, state, measInterval);
nBytes =
snprintf(buf, IW_CUSTOM_MAX, "TSMIE=%d:%d:%d", tid, state,
@@ -4296,10 +4183,9 @@ hdd_indicate_cckm_pre_auth(hdd_adapter_t *pAdapter, tCsrRoamInfo *pRoamInfo)
memset(buf, '\0', sizeof(buf));
/* Timestamp0 is lower 32 bits and Timestamp1 is upper 32 bits */
- hddLog(LOG1,
- "CCXPREAUTHNOTIFY=" MAC_ADDRESS_STR " %d:%d",
- MAC_ADDR_ARRAY(pRoamInfo->bssid.bytes),
- pRoamInfo->timestamp[0], pRoamInfo->timestamp[1]);
+ hdd_info("CCXPREAUTHNOTIFY=" MAC_ADDRESS_STR " %d:%d",
+ MAC_ADDR_ARRAY(pRoamInfo->bssid.bytes),
+ pRoamInfo->timestamp[0], pRoamInfo->timestamp[1]);
nBytes = snprintf(pos, freeBytes, "CCXPREAUTHNOTIFY=");
pos += nBytes;
@@ -4342,7 +4228,7 @@ hdd_indicate_ese_adj_ap_rep_ind(hdd_adapter_t *pAdapter,
memset(&wrqu, '\0', sizeof(wrqu));
memset(buf, '\0', sizeof(buf));
- hddLog(LOG1, "CCXADJAPREP=%u", pRoamInfo->tsmRoamDelay);
+ hdd_info("CCXADJAPREP=%u", pRoamInfo->tsmRoamDelay);
nBytes =
snprintf(buf, IW_CUSTOM_MAX, "CCXADJAPREP=%u",
@@ -4380,8 +4266,8 @@ hdd_indicate_ese_bcn_report_no_results(const hdd_adapter_t *pAdapter,
memset(&wrqu, '\0', sizeof(wrqu));
memset(buf, '\0', sizeof(buf));
- hddLog(LOG1, FL("CCXBCNREP=%d %d %d"), measurementToken,
- flag, numBss);
+ hdd_info("CCXBCNREP=%d %d %d", measurementToken,
+ flag, numBss);
nBytes =
snprintf(pos, freeBytes, "CCXBCNREP=%d %d %d", measurementToken,
@@ -4439,8 +4325,7 @@ hdd_indicate_ese_bcn_report_ind(const hdd_adapter_t *pAdapter,
if ((pRoamInfo->pEseBcnReportRsp->flag >> 1)
&& (!pRoamInfo->pEseBcnReportRsp->numBss)) {
- hddLog(LOG1,
- "Measurement Done but no scan results");
+ hdd_info("Measurement Done but no scan results");
/* If the measurement is none and no scan results found,
indicate the supplicant about measurement done */
hdd_indicate_ese_bcn_report_no_results(
@@ -4470,18 +4355,17 @@ hdd_indicate_ese_bcn_report_ind(const hdd_adapter_t *pAdapter,
}
tot_bcn_ieLen += len;
sendBss++;
- hddLog(LOG1, "i(%d) sizeof bcnReportFields(%d) IeLength(%d) Length of Ie(%d) totLen(%d)",
- i, bcnRepFieldSize, 1,
- pRoamInfo->pEseBcnReportRsp->
- bcnRepBssInfo[i].ieLen, tot_bcn_ieLen);
+ hdd_info("i(%d) sizeof bcnReportFields(%d) IeLength(%d) Length of Ie(%d) totLen(%d)",
+ i, bcnRepFieldSize, 1,
+ pRoamInfo->pEseBcnReportRsp->
+ bcnRepBssInfo[i].ieLen, tot_bcn_ieLen);
}
- hddLog(LOG1, "Sending %d BSS Info",
- sendBss);
- hddLog(LOG1, "CCXBCNREP=%d %d %d %d",
- pRoamInfo->pEseBcnReportRsp->measurementToken,
- pRoamInfo->pEseBcnReportRsp->flag, sendBss,
- tot_bcn_ieLen);
+ hdd_info("Sending %d BSS Info", sendBss);
+ hdd_info("CCXBCNREP=%d %d %d %d",
+ pRoamInfo->pEseBcnReportRsp->measurementToken,
+ pRoamInfo->pEseBcnReportRsp->flag, sendBss,
+ tot_bcn_ieLen);
nBytes = snprintf(pos, freeBytes, "CCXBCNREP=%d %d %d ",
pRoamInfo->pEseBcnReportRsp->
@@ -4498,8 +4382,7 @@ hdd_indicate_ese_bcn_report_ind(const hdd_adapter_t *pAdapter,
freeBytes -= sizeof(tot_bcn_ieLen);
for (i = 0; i < sendBss; i++) {
- hddLog(LOG1,
- "ChanNum(%d) Spare(%d) MeasDuration(%d)"
+ hdd_info("ChanNum(%d) Spare(%d) MeasDuration(%d)"
" PhyType(%d) RecvSigPower(%d) ParentTSF(%u)"
" TargetTSF[0](%u) TargetTSF[1](%u) BeaconInterval(%u)"
" CapabilityInfo(%d) BSSID(%02X:%02X:%02X:%02X:%02X:%02X)",
@@ -4657,13 +4540,12 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
struct hdd_chan_change_params chan_change;
struct cfg80211_bss *bss_status;
- hddLog(LOG2,
- "CSR Callback: status= %d result= %d roamID=%d",
- roamStatus, roamResult, roamId);
+ hdd_info("CSR Callback: status= %d result= %d roamID=%d",
+ roamStatus, roamResult, roamId);
/* Sanity check */
if ((NULL == pAdapter) || (WLAN_HDD_ADAPTER_MAGIC != pAdapter->magic)) {
- hddLog(LOGP, "invalid adapter or adapter has invalid magic");
+ hdd_alert("invalid adapter or adapter has invalid magic");
return QDF_STATUS_E_FAILURE;
}
@@ -4687,10 +4569,8 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
* interface down.
*/
case eCSR_ROAM_FT_REASSOC_FAILED:
- hddLog(LOGE,
- FL
- ("Reassoc Failed with roamStatus: %d roamResult: %d SessionID: %d"),
- roamStatus, roamResult, pAdapter->sessionId);
+ hdd_err("Reassoc Failed with roamStatus: %d roamResult: %d SessionID: %d",
+ roamStatus, roamResult, pAdapter->sessionId);
qdf_ret_status =
hdd_dis_connect_handler(pAdapter, pRoamInfo, roamId,
roamStatus, roamResult);
@@ -4705,9 +4585,8 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
}
pHddStaCtx->ft_carrier_on = false;
pHddStaCtx->hdd_ReassocScenario = false;
- hddLog(LOG1,
- FL("hdd_ReassocScenario set to: %d, ReAssoc Failed, session: %d"),
- pHddStaCtx->hdd_ReassocScenario, pAdapter->sessionId);
+ hdd_info("hdd_ReassocScenario set to: %d, ReAssoc Failed, session: %d",
+ pHddStaCtx->hdd_ReassocScenario, pAdapter->sessionId);
break;
case eCSR_ROAM_FT_START:
@@ -4720,7 +4599,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
* doing disassoc at this time. This saves 30-60 msec
* after reassoc.
*/
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE,
WLAN_CONTROL_PATH);
@@ -4730,13 +4609,12 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
qdf_ret_status = QDF_STATUS_E_FAILURE;
pHddStaCtx->ft_carrier_on = true;
pHddStaCtx->hdd_ReassocScenario = true;
- hddLog(LOG1,
- FL("hdd_ReassocScenario set to: %d, due to eCSR_ROAM_FT_START, session: %d"),
- pHddStaCtx->hdd_ReassocScenario, pAdapter->sessionId);
+ hdd_info("hdd_ReassocScenario set to: %d, due to eCSR_ROAM_FT_START, session: %d",
+ pHddStaCtx->hdd_ReassocScenario, pAdapter->sessionId);
break;
case eCSR_ROAM_SHOULD_ROAM:
/* notify apps that we can't pass traffic anymore */
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE,
WLAN_CONTROL_PATH);
@@ -4748,8 +4626,8 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
break;
case eCSR_ROAM_LOSTLINK:
if (roamResult == eCSR_ROAM_RESULT_LOSTLINK) {
- hddLog(LOG2, "Roaming started due to connection lost");
- hddLog(LOG1, FL("Disabling queues"));
+ hdd_info("Roaming started due to connection lost");
+ hdd_info("Disabling queues");
wlan_hdd_netif_queue_control(pAdapter,
WLAN_NETIF_TX_DISABLE_N_CARRIER,
WLAN_CONTROL_PATH);
@@ -4757,7 +4635,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
}
case eCSR_ROAM_DISASSOCIATED:
{
- hddLog(LOG1, "****eCSR_ROAM_DISASSOCIATED****");
+ hdd_info("****eCSR_ROAM_DISASSOCIATED****");
qdf_ret_status =
hdd_dis_connect_handler(pAdapter, pRoamInfo, roamId,
roamStatus, roamResult);
@@ -4775,13 +4653,10 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
false;
}
- hddLog(LOG1,
- "offload: disassociation happening, restoring configuredMcastBcastFilter");
- hddLog(LOG1,
- "McastBcastFilter = %d",
- pHddCtx->configuredMcastBcastFilter);
- hddLog(LOG1,
- "offload: already called mcastbcast filter");
+ hdd_info("offload: disassociation happening, restoring configuredMcastBcastFilter");
+ hdd_info("McastBcastFilter = %d",
+ pHddCtx->configuredMcastBcastFilter);
+ hdd_info("offload: already called mcastbcast filter");
(WLAN_HDD_GET_CTX(pAdapter))->
hdd_mcastbcast_filter_set = false;
}
@@ -4792,13 +4667,13 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
}
break;
case eCSR_ROAM_IBSS_LEAVE:
- hddLog(LOG1, "****eCSR_ROAM_IBSS_LEAVE****");
+ hdd_info("****eCSR_ROAM_IBSS_LEAVE****");
qdf_ret_status =
hdd_dis_connect_handler(pAdapter, pRoamInfo, roamId,
roamStatus, roamResult);
break;
case eCSR_ROAM_ASSOCIATION_COMPLETION:
- hddLog(LOG1, "****eCSR_ROAM_ASSOCIATION_COMPLETION****");
+ hdd_info("****eCSR_ROAM_ASSOCIATION_COMPLETION****");
/*
* To Do - address probable memory leak with WEP encryption upon
* successful association.
@@ -4857,8 +4732,7 @@ hdd_sme_roam_callback(void *pContext, tCsrRoamInfo *pRoamInfo, uint32_t roamId,
roamResult);
if (eCSR_ROAM_RESULT_AUTHENTICATED == roamResult) {
pHddStaCtx->hdd_ReassocScenario = false;
- hddLog(LOG1,
- FL("hdd_ReassocScenario set to: %d, set key complete, session: %d"),
+ hdd_info("hdd_ReassocScenario set to: %d, set key complete, session: %d",
pHddStaCtx->hdd_ReassocScenario,
pAdapter->sessionId);
}
@@ -5101,7 +4975,7 @@ eCsrAuthType hdd_translate_wpa_to_csr_auth_type(uint8_t auth_suite[4])
{
auth_type = eCSR_AUTH_TYPE_UNKNOWN;
}
- hddLog(LOG1, FL("auth_type: %d"), auth_type);
+ hdd_info("auth_type: %d", auth_type);
return auth_type;
}
@@ -5130,7 +5004,7 @@ hdd_translate_rsn_to_csr_encryption_type(uint8_t cipher_suite[4])
else
cipher_type = eCSR_ENCRYPT_TYPE_FAILED;
- hddLog(LOG1, FL("cipher_type: %d"), cipher_type);
+ hdd_info("cipher_type: %d", cipher_type);
return cipher_type;
}
@@ -5159,7 +5033,7 @@ hdd_translate_wpa_to_csr_encryption_type(uint8_t cipher_suite[4])
else
cipher_type = eCSR_ENCRYPT_TYPE_FAILED;
- hddLog(LOG1, FL("cipher_type: %d"), cipher_type);
+ hdd_info("cipher_type: %d", cipher_type);
return cipher_type;
}
@@ -5205,8 +5079,8 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
/* Validity checks */
if ((gen_ie_len < DOT11F_IE_RSN_MIN_LEN) ||
(gen_ie_len > DOT11F_IE_RSN_MAX_LEN)) {
- hddLog(LOGE, FL("Invalid DOT11F RSN IE length :%d"),
- gen_ie_len);
+ hdd_err("Invalid DOT11F RSN IE length :%d",
+ gen_ie_len);
return -EINVAL;
}
/* Skip past the EID byte and length byte */
@@ -5216,10 +5090,10 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
dot11f_unpack_ie_rsn((tpAniSirGlobal) halHandle,
pRsnIe, RSNIeLen, &dot11RSNIE);
/* Copy out the encryption and authentication types */
- hddLog(LOG1, FL("pairwise cipher suite count: %d"),
- dot11RSNIE.pwise_cipher_suite_count);
- hddLog(LOG1, FL("authentication suite count: %d"),
- dot11RSNIE.akm_suite_count);
+ hdd_info("pairwise cipher suite count: %d",
+ dot11RSNIE.pwise_cipher_suite_count);
+ hdd_info("authentication suite count: %d",
+ dot11RSNIE.akm_suite_count);
/*Here we have followed the apple base code,
but probably I suspect we can do something different */
/* dot11RSNIE.akm_suite_count */
@@ -5242,7 +5116,7 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
/* Set the PMKSA ID Cache for this interface */
for (i = 0; i < dot11RSNIE.pmkid_count; i++) {
if (is_zero_ether_addr(bssid)) {
- hddLog(LOGE, FL("MAC address is all zeroes"));
+ hdd_err("MAC address is all zeroes");
break;
}
updatePMKCache = true;
@@ -5261,9 +5135,8 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
* Calling csr_roam_set_pmkid_cache to configure the
* PMKIDs into the cache.
*/
- hddLog(LOG1,
- FL("Calling sme_roam_set_pmkid_cache with cache entry %d."),
- i);
+ hdd_info("Calling sme_roam_set_pmkid_cache with cache entry %d.",
+ i);
/* Finally set the PMKSA ID Cache in CSR */
result =
sme_roam_set_pmkid_cache(halHandle,
@@ -5276,8 +5149,8 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
/* Validity checks */
if ((gen_ie_len < DOT11F_IE_WPA_MIN_LEN) ||
(gen_ie_len > DOT11F_IE_WPA_MAX_LEN)) {
- hddLog(LOGE, FL("Invalid DOT11F WPA IE length :%d"),
- gen_ie_len);
+ hdd_err("Invalid DOT11F WPA IE length :%d",
+ gen_ie_len);
return -EINVAL;
}
/* Skip past the EID and length byte - and four byte WiFi OUI */
@@ -5287,10 +5160,10 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
pRsnIe, RSNIeLen, &dot11WPAIE);
/* Copy out the encryption and authentication types */
- hddLog(LOG1, FL("WPA unicast cipher suite count: %d"),
- dot11WPAIE.unicast_cipher_count);
- hddLog(LOG1, FL("WPA authentication suite count: %d"),
- dot11WPAIE.auth_suite_count);
+ hdd_info("WPA unicast cipher suite count: %d",
+ dot11WPAIE.unicast_cipher_count);
+ hdd_info("WPA authentication suite count: %d",
+ dot11WPAIE.auth_suite_count);
/* dot11WPAIE.auth_suite_count */
/* Just translate the FIRST one */
*pAuthType =
@@ -5305,7 +5178,7 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
hdd_translate_wpa_to_csr_encryption_type(
dot11WPAIE.multicast_cipher);
} else {
- hddLog(LOGW, FL("gen_ie[0]: %d"), gen_ie[0]);
+ hdd_warn("gen_ie[0]: %d", gen_ie[0]);
return -EINVAL;
}
return 0;
@@ -5378,14 +5251,13 @@ int hdd_set_genie_to_csr(hdd_adapter_t *pAdapter, eCsrAuthType *RSNAuthType)
= mcRSNEncryptType;
}
#ifdef WLAN_FEATURE_11W
- hddLog(LOG1, FL("RSNMfpRequired = %d, RSNMfpCapable = %d"),
- RSNMfpRequired, RSNMfpCapable);
+ hdd_info("RSNMfpRequired = %d, RSNMfpCapable = %d",
+ RSNMfpRequired, RSNMfpCapable);
pWextState->roamProfile.MFPRequired = RSNMfpRequired;
pWextState->roamProfile.MFPCapable = RSNMfpCapable;
#endif
- hddLog(LOG1,
- FL("CSR AuthType = %d, EncryptionType = %d mcEncryptionType = %d"),
- *RSNAuthType, RSNEncryptType, mcRSNEncryptType);
+ hdd_info("CSR AuthType = %d, EncryptionType = %d mcEncryptionType = %d",
+ *RSNAuthType, RSNEncryptType, mcRSNEncryptType);
}
return 0;
}
@@ -5404,8 +5276,8 @@ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType)
hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
pRoamProfile->AuthType.numEntries = 1;
- hddLog(LOG1, FL("pHddStaCtx->conn_info.authType = %d"),
- pHddStaCtx->conn_info.authType);
+ hdd_info("pHddStaCtx->conn_info.authType = %d",
+ pHddStaCtx->conn_info.authType);
switch (pHddStaCtx->conn_info.authType) {
case eCSR_AUTH_TYPE_OPEN_SYSTEM:
@@ -5423,13 +5295,11 @@ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType)
if ((RSNAuthType == eCSR_AUTH_TYPE_CCKM_WPA) &&
((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
== IW_AUTH_KEY_MGMT_802_1X)) {
- hddLog(LOG1,
- FL("set authType to CCKM WPA. AKM also 802.1X."));
+ hdd_info("set authType to CCKM WPA. AKM also 802.1X.");
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_CCKM_WPA;
} else if (RSNAuthType == eCSR_AUTH_TYPE_CCKM_WPA) {
- hddLog(LOG1,
- FL("Last chance to set authType to CCKM WPA."));
+ hdd_info("Last chance to set authType to CCKM WPA.");
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_CCKM_WPA;
} else
@@ -5454,13 +5324,11 @@ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType)
if ((RSNAuthType == eCSR_AUTH_TYPE_CCKM_RSN) &&
((pWextState->authKeyMgmt & IW_AUTH_KEY_MGMT_802_1X)
== IW_AUTH_KEY_MGMT_802_1X)) {
- hddLog(LOG1,
- FL("set authType to CCKM RSN. AKM also 802.1X."));
+ hdd_info("set authType to CCKM RSN. AKM also 802.1X.");
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_CCKM_RSN;
} else if (RSNAuthType == eCSR_AUTH_TYPE_CCKM_RSN) {
- hddLog(LOG1,
- FL("Last chance to set authType to CCKM RSN."));
+ hdd_info("Last chance to set authType to CCKM RSN.");
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_CCKM_RSN;
} else
@@ -5516,14 +5384,14 @@ int hdd_set_csr_auth_type(hdd_adapter_t *pAdapter, eCsrAuthType RSNAuthType)
default:
#ifdef FEATURE_WLAN_ESE
- hddLog(LOG1, FL("In default, unknown auth type."));
+ hdd_info("In default, unknown auth type.");
#endif /* FEATURE_WLAN_ESE */
pRoamProfile->AuthType.authType[0] = eCSR_AUTH_TYPE_UNKNOWN;
break;
}
- hddLog(LOG1, FL("Set roam Authtype to %d"),
- pWextState->roamProfile.AuthType.authType[0]);
+ hdd_info("Set roam Authtype to %d",
+ pWextState->roamProfile.AuthType.authType[0]);
return 0;
}
@@ -5550,7 +5418,6 @@ static int __iw_set_essid(struct net_device *dev,
hdd_context_t *hdd_ctx;
uint32_t roamId;
tCsrRoamProfile *pRoamProfile;
- eMib_dot11DesiredBssType connectedBssType;
eCsrAuthType RSNAuthType;
tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter);
hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
@@ -5564,26 +5431,26 @@ static int __iw_set_essid(struct net_device *dev,
return ret;
if (pAdapter->device_mode != QDF_STA_MODE &&
- pAdapter->device_mode != QDF_P2P_CLIENT_MODE) {
- hddLog(LOGW, FL("device mode %s(%d) is not allowed"),
- hdd_device_mode_to_string(pAdapter->device_mode),
- pAdapter->device_mode);
+ pAdapter->device_mode != QDF_IBSS_MODE &&
+ pAdapter->device_mode != QDF_P2P_CLIENT_MODE) {
+ hdd_warn("device mode %s(%d) is not allowed",
+ hdd_device_mode_to_string(pAdapter->device_mode),
+ pAdapter->device_mode);
return -EINVAL;
}
pWextState = WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter);
if (pWextState->mTKIPCounterMeasures == TKIP_COUNTER_MEASURE_STARTED) {
- hddLog(LOG2, FL("Counter measure is in progress"));
+ hdd_info("Counter measure is in progress");
return -EBUSY;
}
if (SIR_MAC_MAX_SSID_LENGTH < wrqu->essid.length)
return -EINVAL;
pRoamProfile = &pWextState->roamProfile;
- if (hdd_conn_get_connected_bss_type(pHddStaCtx, &connectedBssType) ||
- (eMib_dot11DesiredBssType_independent ==
- pHddStaCtx->conn_info.connDot11DesiredBssType)) {
+ if (hdd_conn_is_connected(pHddStaCtx) ||
+ (pAdapter->device_mode == QDF_IBSS_MODE)) {
QDF_STATUS qdf_status;
/* Need to issue a disconnect to CSR. */
@@ -5597,7 +5464,7 @@ static int __iw_set_essid(struct net_device *dev,
msecs_to_jiffies
(WLAN_WAIT_TIME_DISCONNECT));
if (!rc)
- hddLog(LOGE, FL("Disconnect event timed out"));
+ hdd_err("Disconnect event timed out");
}
}
@@ -5634,13 +5501,13 @@ static int __iw_set_essid(struct net_device *dev,
hdd_set_csr_auth_type(pAdapter, RSNAuthType);
}
#ifdef FEATURE_WLAN_WAPI
- hddLog(LOG1, FL("Setting WAPI AUTH Type and Encryption Mode values"));
+ hdd_notice("Setting WAPI AUTH Type and Encryption Mode values");
if (pAdapter->wapi_info.nWapiMode) {
switch (pAdapter->wapi_info.wapiAuthMode) {
case WAPI_AUTH_MODE_PSK:
{
- hddLog(LOG1, FL("WAPI AUTH TYPE: PSK: %d"),
- pAdapter->wapi_info.wapiAuthMode);
+ hdd_notice("WAPI AUTH TYPE: PSK: %d",
+ pAdapter->wapi_info.wapiAuthMode);
pRoamProfile->AuthType.numEntries = 1;
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_WAPI_WAI_PSK;
@@ -5648,8 +5515,8 @@ static int __iw_set_essid(struct net_device *dev,
}
case WAPI_AUTH_MODE_CERT:
{
- hddLog(LOG1, FL("WAPI AUTH TYPE: CERT: %d"),
- pAdapter->wapi_info.wapiAuthMode);
+ hdd_notice("WAPI AUTH TYPE: CERT: %d",
+ pAdapter->wapi_info.wapiAuthMode);
pRoamProfile->AuthType.numEntries = 1;
pRoamProfile->AuthType.authType[0] =
eCSR_AUTH_TYPE_WAPI_WAI_CERTIFICATE;
@@ -5658,7 +5525,7 @@ static int __iw_set_essid(struct net_device *dev,
} /* End of switch */
if (pAdapter->wapi_info.wapiAuthMode == WAPI_AUTH_MODE_PSK ||
pAdapter->wapi_info.wapiAuthMode == WAPI_AUTH_MODE_CERT) {
- hddLog(LOG1, FL("WAPI PAIRWISE/GROUP ENCRYPTION: WPI"));
+ hdd_notice("WAPI PAIRWISE/GROUP ENCRYPTION: WPI");
pRoamProfile->EncryptionType.numEntries = 1;
pRoamProfile->EncryptionType.encryptionType[0] =
eCSR_ENCRYPT_TYPE_WPI;
@@ -5908,8 +5775,8 @@ static int __iw_set_auth(struct net_device *dev, struct iw_request_info *info,
ucEncryptionType =
eCSR_ENCRYPT_TYPE_WEP104_STATICKEY;
} else {
- hddLog(LOGW, FL("value %d UNKNOWN IW_AUTH_CIPHER"),
- wrqu->param.value);
+ hdd_warn("value %d UNKNOWN IW_AUTH_CIPHER",
+ wrqu->param.value);
return -EINVAL;
}
@@ -5953,7 +5820,7 @@ static int __iw_set_auth(struct net_device *dev, struct iw_request_info *info,
eCSR_ENCRYPT_TYPE_WEP104_STATICKEY;
}
} else {
- hddLog(LOGW, FL("value %d UNKNOWN IW_AUTH_CIPHER"),
+ hdd_warn("value %d UNKNOWN IW_AUTH_CIPHER",
wrqu->param.value);
return -EINVAL;
}
@@ -5991,7 +5858,7 @@ static int __iw_set_auth(struct net_device *dev, struct iw_request_info *info,
#define IW_AUTH_KEY_MGMT_CCKM 8 /* Should be in linux/wireless.h */
/*Check for CCKM AKM type */
if (wrqu->param.value & IW_AUTH_KEY_MGMT_CCKM) {
- hddLog(LOG1, FL("CCKM AKM Set %d"), wrqu->param.value);
+ hdd_info("CCKM AKM Set %d", wrqu->param.value);
/* Set the CCKM bit in authKeyMgmt */
/*
* Right now, this breaks all ref to authKeyMgmt because
@@ -6035,14 +5902,12 @@ static int __iw_set_auth(struct net_device *dev, struct iw_request_info *info,
case IW_AUTH_TKIP_COUNTERMEASURES:
{
if (wrqu->param.value) {
- hddLog(LOG2,
- "Counter Measure started %d",
+ hdd_info("Counter Measure started %d",
wrqu->param.value);
pWextState->mTKIPCounterMeasures =
TKIP_COUNTER_MEASURE_STARTED;
} else {
- hddLog(LOG2,
- "Counter Measure stopped=%d",
+ hdd_info("Counter Measure stopped=%d",
wrqu->param.value);
pWextState->mTKIPCounterMeasures =
TKIP_COUNTER_MEASURE_STOPED;
@@ -6057,8 +5922,8 @@ static int __iw_set_auth(struct net_device *dev, struct iw_request_info *info,
default:
- hddLog(LOGW, FL("called with unsupported auth type %d"),
- wrqu->param.flags & IW_AUTH_INDEX);
+ hdd_warn("called with unsupported auth type %d",
+ wrqu->param.flags & IW_AUTH_INDEX);
break;
}
@@ -6134,14 +5999,14 @@ static int __iw_get_auth(struct net_device *dev, struct iw_request_info *info,
wrqu->param.value = IW_AUTH_ALG_SHARED_KEY;
break;
case eCSR_AUTH_TYPE_UNKNOWN:
- hddLog(LOG1, FL("called with unknown auth type"));
+ hdd_info("called with unknown auth type");
wrqu->param.value = IW_AUTH_ALG_OPEN_SYSTEM;
break;
case eCSR_AUTH_TYPE_AUTOSWITCH:
wrqu->param.value = IW_AUTH_ALG_OPEN_SYSTEM;
break;
case eCSR_AUTH_TYPE_WPA_PSK:
- hddLog(LOG1, FL("called with WPA PSK auth type"));
+ hdd_info("called with WPA PSK auth type");
wrqu->param.value = IW_AUTH_ALG_OPEN_SYSTEM;
return -EIO;
@@ -6151,11 +6016,11 @@ static int __iw_get_auth(struct net_device *dev, struct iw_request_info *info,
case eCSR_AUTH_TYPE_RSN_PSK_SHA256:
case eCSR_AUTH_TYPE_RSN_8021X_SHA256:
#endif
- hddLog(LOG1, FL("called with RSN PSK auth type"));
+ hdd_info("called with RSN PSK auth type");
wrqu->param.value = IW_AUTH_ALG_OPEN_SYSTEM;
return -EIO;
default:
- hddLog(LOGE, FL("called with unknown auth type"));
+ hdd_err("called with unknown auth type");
wrqu->param.value = IW_AUTH_ALG_OPEN_SYSTEM;
return -EIO;
}
@@ -6179,8 +6044,8 @@ static int __iw_get_auth(struct net_device *dev, struct iw_request_info *info,
wrqu->param.value = IW_AUTH_CIPHER_CCMP;
break;
default:
- hddLog(LOG1, FL("called with unknown auth type %d"),
- pRoamProfile->negotiatedUCEncryptionType);
+ hdd_notice("called with unknown auth type %d",
+ pRoamProfile->negotiatedUCEncryptionType);
return -EIO;
}
}
@@ -6205,14 +6070,14 @@ static int __iw_get_auth(struct net_device *dev, struct iw_request_info *info,
wrqu->param.value = IW_AUTH_CIPHER_CCMP;
break;
default:
- hddLog(LOG1, FL("called with unknown auth type %d"),
- pRoamProfile->negotiatedMCEncryptionType);
+ hdd_info("called with unknown auth type %d",
+ pRoamProfile->negotiatedMCEncryptionType);
return -EIO;
}
}
- hddLog(LOG1, FL("called with auth type %d"),
- pRoamProfile->AuthType.authType[0]);
+ hdd_info("called with auth type %d",
+ pRoamProfile->AuthType.authType[0]);
EXIT();
return 0;
}
@@ -6272,7 +6137,7 @@ static int __iw_set_ap_address(struct net_device *dev,
return ret;
pMacAddress = (uint8_t *) wrqu->ap_addr.sa_data;
- hddLog(LOG1, FL(" " MAC_ADDRESS_STR), MAC_ADDR_ARRAY(pMacAddress));
+ hdd_info(" " MAC_ADDRESS_STR, MAC_ADDR_ARRAY(pMacAddress));
qdf_mem_copy(pHddStaCtx->conn_info.bssId.bytes, pMacAddress,
sizeof(struct qdf_mac_addr));
EXIT();
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 4a21c6cbf385..27b227ec7751 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -2468,6 +2468,14 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_ENABLE_VHT_FOR_24GHZ_MIN,
CFG_ENABLE_VHT_FOR_24GHZ_MAX),
+
+ REG_VARIABLE(CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, enable_sap_vendor_vht,
+ VAR_FLAGS_OPTIONAL,
+ CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_DEFAULT,
+ CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MIN,
+ CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MAX),
+
REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
WLAN_PARAM_Integer,
struct hdd_config, bFastRoamInConIniFeatureEnabled,
@@ -3734,6 +3742,14 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_ENABLE_EDCA_INI_MIN,
CFG_ENABLE_EDCA_INI_MAX),
+ REG_VARIABLE(CFG_ENABLE_GO_CTS2SELF_FOR_STA, WLAN_PARAM_Integer,
+ struct hdd_config, enable_go_cts2self_for_sta,
+ VAR_FLAGS_OPTIONAL |
+ VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_GO_CTS2SELF_FOR_STA_DEFAULT,
+ CFG_ENABLE_GO_CTS2SELF_FOR_STA_MIN,
+ CFG_ENABLE_GO_CTS2SELF_FOR_STA_MAX),
+
REG_VARIABLE(CFG_EDCA_VO_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
struct hdd_config, edca_vo_cwmin,
VAR_FLAGS_OPTIONAL |
@@ -3977,6 +3993,20 @@ REG_TABLE_ENTRY g_registry_table[] = {
CFG_OPTIMIZE_CA_EVENT_DEFAULT,
CFG_OPTIMIZE_CA_EVENT_DISABLE,
CFG_OPTIMIZE_CA_EVENT_ENABLE),
+
+ REG_VARIABLE(CFG_TX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
+ struct hdd_config, tx_aggregation_size,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_TX_AGGREGATION_SIZE_DEFAULT,
+ CFG_TX_AGGREGATION_SIZE_MIN,
+ CFG_TX_AGGREGATION_SIZE_MAX),
+
+ REG_VARIABLE(CFG_RX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
+ struct hdd_config, rx_aggregation_size,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_RX_AGGREGATION_SIZE_DEFAULT,
+ CFG_RX_AGGREGATION_SIZE_MIN,
+ CFG_RX_AGGREGATION_SIZE_MAX),
};
/**
@@ -5546,6 +5576,9 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
CFG_IGNORE_PEER_HT_MODE_NAME,
pHddCtx->config->ignore_peer_ht_opmode);
hdd_info("Name = [%s] Value = [%u]",
+ CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME,
+ pHddCtx->config->enable_sap_vendor_vht);
+ hdd_info("Name = [%s] Value = [%u]",
CFG_ENABLE_FATAL_EVENT_TRIGGER,
pHddCtx->config->enable_fatal_event);
hdd_info("Name = [%s] Value = [%u]",
@@ -5646,6 +5679,9 @@ void hdd_cfg_print(hdd_context_t *pHddCtx)
hdd_info("Name = [%s] Value = [%d]",
CFG_FILTER_MULTICAST_REPLAY_NAME,
pHddCtx->config->multicast_replay_filter);
+ hdd_info("Name = [%s] Value = [%u]",
+ CFG_ENABLE_GO_CTS2SELF_FOR_STA,
+ pHddCtx->config->enable_go_cts2self_for_sta);
}
@@ -6893,6 +6929,8 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
pConfig->enable_txbf_sap_mode;
smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
+ smeConfig->csrConfig.vendor_vht_sap =
+ pConfig->enable_sap_vendor_vht;
smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee;
smeConfig->csrConfig.enableVhtpAid = pConfig->enableVhtpAid;
smeConfig->csrConfig.enableVhtGid = pConfig->enableVhtGid;
@@ -7143,6 +7181,11 @@ QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
CSR_STA_ROAM_POLICY_DFS_ENABLED;
smeConfig->csrConfig.sta_roam_policy_params.skip_unsafe_channels = 0;
+ smeConfig->csrConfig.tx_aggregation_size =
+ pHddCtx->config->tx_aggregation_size;
+ smeConfig->csrConfig.rx_aggregation_size =
+ pHddCtx->config->rx_aggregation_size;
+
status = sme_update_config(pHddCtx->hHal, smeConfig);
if (!QDF_IS_STATUS_SUCCESS(status)) {
hddLog(LOGE, "sme_update_config() return failure %d",
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 1da11ee297d6..1d40f77e2804 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -3870,6 +3870,8 @@ wlan_hdd_wifi_config_policy[QCA_WLAN_VENDOR_ATTR_CONFIG_MAX + 1] = {
[QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR] = {.type = NLA_U16 },
[QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME] = {.type = NLA_U32 },
[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 },
};
/**
@@ -3938,6 +3940,8 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
bool vendor_ie_present = false, access_policy_present = false;
uint16_t scan_ie_len = 0;
uint8_t *scan_ie;
+ struct sir_set_tx_rx_aggregation_size request;
+ QDF_STATUS qdf_status;
ENTER_DEV(dev);
@@ -4096,6 +4100,44 @@ __wlan_hdd_cfg80211_wifi_configuration_set(struct wiphy *wiphy,
} else
ret_val = -EPERM;
}
+
+ if (tb[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION] ||
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION]) {
+ /* if one is specified, both must be specified */
+ if (!tb[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION] ||
+ !tb[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION]) {
+ hdd_err("Both TX and RX MPDU Aggregation required");
+ return -EINVAL;
+ }
+
+ request.tx_aggregation_size = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION]);
+ request.rx_aggregation_size = nla_get_u8(
+ tb[QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION]);
+ request.vdev_id = adapter->sessionId;
+
+ if (request.tx_aggregation_size >=
+ CFG_TX_AGGREGATION_SIZE_MIN &&
+ request.tx_aggregation_size <=
+ CFG_TX_AGGREGATION_SIZE_MAX &&
+ request.rx_aggregation_size >=
+ CFG_RX_AGGREGATION_SIZE_MIN &&
+ request.rx_aggregation_size <=
+ CFG_RX_AGGREGATION_SIZE_MAX) {
+ qdf_status = wma_set_tx_rx_aggregation_size(&request);
+ if (qdf_status != QDF_STATUS_SUCCESS) {
+ hdd_err("failed to set aggr sizes err %d",
+ qdf_status);
+ ret_val = -EPERM;
+ }
+ } else {
+ hdd_err("TX %d RX %d MPDU aggr size not in range",
+ request.tx_aggregation_size,
+ request.rx_aggregation_size);
+ ret_val = -EINVAL;
+ }
+ }
+
return ret_val;
}
@@ -12079,14 +12121,11 @@ static int wlan_hdd_try_disconnect(hdd_adapter_t *pAdapter)
{
unsigned long rc;
hdd_station_ctx_t *pHddStaCtx;
- eMib_dot11DesiredBssType connectedBssType;
int status, result = 0;
pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
- hdd_conn_get_connected_bss_type(pHddStaCtx, &connectedBssType);
-
- if ((eMib_dot11DesiredBssType_independent == connectedBssType) ||
+ if ((QDF_IBSS_MODE == pAdapter->device_mode) ||
(eConnectionState_Associated == pHddStaCtx->conn_info.connState) ||
(eConnectionState_Connecting == pHddStaCtx->conn_info.connState) ||
(eConnectionState_IbssConnected == pHddStaCtx->conn_info.connState)) {
diff --git a/core/hdd/src/wlan_hdd_cfg80211.h b/core/hdd/src/wlan_hdd_cfg80211.h
index 80dbc428c50b..37fa4e6ab79a 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.h
+++ b/core/hdd/src/wlan_hdd_cfg80211.h
@@ -2319,6 +2319,10 @@ enum qca_access_policy {
* @QCA_WLAN_VENDOR_ATTR_CONFIG_STATS_AVG_FACTOR: stats avg. factor
* @QCA_WLAN_VENDOR_ATTR_CONFIG_GUARD_TIME: guard time
* @QCA_WLAN_VENDOR_ATTR_CONFIG_FINE_TIME_MEASUREMENT: fine time measurement
+ * @QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION:
+ * 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_SCAN_DEFAULT_IES: Update the default scan IEs
* @QCA_WLAN_VENDOR_ATTR_CONFIG_GENERIC_COMMAND:
* Unsigned 32-bit value attribute for generic commands
@@ -2349,6 +2353,10 @@ enum qca_wlan_vendor_config {
QCA_WLAN_VENDOR_ATTR_CONFIG_FINE_TIME_MEASUREMENT,
QCA_WLAN_VENDOR_ATTR_CONFIG_PENALIZE_AFTER_NCONS_BEACON_MISS,
QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_AVOIDANCE_IND,
+
+ QCA_WLAN_VENDOR_ATTR_CONFIG_TX_MPDU_AGGREGATION,
+ QCA_WLAN_VENDOR_ATTR_CONFIG_RX_MPDU_AGGREGATION,
+
/* Attribute used to set scan default IEs to the driver.
*
* These IEs can be used by scan operations that will be initiated by
diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c
index 3f20e4e160af..5ca394f7fcb3 100644
--- a/core/hdd/src/wlan_hdd_hostapd.c
+++ b/core/hdd/src/wlan_hdd_hostapd.c
@@ -6942,10 +6942,21 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
pConfig->enOverLapCh = iniConfig->gEnableOverLapCh;
pConfig->dtim_period = pBeacon->dtim_period;
- if (pHddCtx->acs_policy.acs_channel)
- pConfig->channel = pHddCtx->acs_policy.acs_channel;
- mode = pHddCtx->acs_policy.acs_dfs_mode;
- pConfig->acs_dfs_mode = wlan_hdd_get_dfs_mode(mode);
+ hdd_info("acs_mode %d", pConfig->acs_cfg.acs_mode);
+
+ if (pConfig->acs_cfg.acs_mode == true) {
+ hdd_info("acs_channel %d, acs_dfs_mode %d",
+ pHddCtx->acs_policy.acs_channel,
+ pHddCtx->acs_policy.acs_dfs_mode);
+
+ if (pHddCtx->acs_policy.acs_channel)
+ pConfig->channel = pHddCtx->acs_policy.acs_channel;
+ mode = pHddCtx->acs_policy.acs_dfs_mode;
+ pConfig->acs_dfs_mode = wlan_hdd_get_dfs_mode(mode);
+ }
+
+ hdd_info("pConfig->channel %d, pConfig->acs_dfs_mode %d",
+ pConfig->channel, pConfig->acs_dfs_mode);
hdd_info("****pConfig->dtim_period=%d***",
pConfig->dtim_period);
@@ -7250,6 +7261,40 @@ int wlan_hdd_cfg80211_start_bss(hdd_adapter_t *pHostapdAdapter,
acl_entry++;
}
}
+ if (!pHddCtx->config->force_sap_acs) {
+ pIe = wlan_hdd_cfg80211_get_ie_ptr(
+ &pMgmt_frame->u.beacon.variable[0],
+ pBeacon->head_len, WLAN_EID_SUPP_RATES);
+
+ if (pIe != NULL) {
+ pIe++;
+ pConfig->supported_rates.numRates = pIe[0];
+ pIe++;
+ for (i = 0;
+ i < pConfig->supported_rates.numRates; i++) {
+ if (pIe[i]) {
+ pConfig->supported_rates.rate[i] = pIe[i];
+ hdd_info("Configured Supported rate is %2x",
+ pConfig->supported_rates.rate[i]);
+ }
+ }
+ }
+ pIe = wlan_hdd_cfg80211_get_ie_ptr(pBeacon->tail,
+ pBeacon->tail_len,
+ WLAN_EID_EXT_SUPP_RATES);
+ if (pIe != NULL) {
+ pIe++;
+ pConfig->extended_rates.numRates = pIe[0];
+ pIe++;
+ for (i = 0; i < pConfig->extended_rates.numRates; i++) {
+ if (pIe[i]) {
+ pConfig->extended_rates.rate[i] = pIe[i];
+ hdd_info("Configured ext Supported rate is %2x",
+ pConfig->extended_rates.rate[i]);
+ }
+ }
+ }
+ }
wlan_hdd_set_sap_hwmode(pHostapdAdapter);
qdf_mem_zero(&sme_config, sizeof(tSmeConfigParams));
diff --git a/core/hdd/src/wlan_hdd_lro.c b/core/hdd/src/wlan_hdd_lro.c
index 857d2c154a7a..35902f28fee5 100644
--- a/core/hdd/src/wlan_hdd_lro.c
+++ b/core/hdd/src/wlan_hdd_lro.c
@@ -461,7 +461,9 @@ void hdd_lro_flush(void *data)
while (NULL != adapter_node && QDF_STATUS_SUCCESS == status) {
adapter = adapter_node->pAdapter;
hdd_lro = &adapter->lro_info;
- if (adapter->dev->features & NETIF_F_LRO) {
+ if (adapter->dev == NULL) {
+ hdd_err("vdev interface going down");
+ } else if (adapter->dev->features & NETIF_F_LRO) {
qdf_spin_lock_bh(&hdd_lro->lro_mgr_arr_access_lock);
for (i = 0; i < hdd_lro->lro_mgr->max_desc; i++) {
if (hdd_lro->lro_mgr->lro_arr[i].active) {
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 82be6b96f3f3..fda3035e02ab 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -4795,6 +4795,7 @@ void __hdd_wlan_exit(void)
hdd_ipa_uc_force_pipe_shutdown(hdd_ctx);
memdump_deinit();
+ hdd_driver_memdump_deinit();
/* Do all the cleanup before deregistering the driver */
hdd_wlan_exit(hdd_ctx);
@@ -7724,6 +7725,79 @@ static void hdd_iface_change_callback(void *priv)
}
/**
+ * hdd_state_info_dump() - prints state information of hdd layer
+ * @buf: buffer pointer
+ * @size: size of buffer to be filled
+ *
+ * This function is used to dump state information of hdd layer
+ *
+ * Return: None
+ */
+static void hdd_state_info_dump(char **buf_ptr, uint16_t *size)
+{
+ hdd_context_t *hdd_ctx;
+ hdd_adapter_list_node_t *adapter_node = NULL, *next = NULL;
+ QDF_STATUS status;
+ hdd_station_ctx_t *hdd_sta_ctx;
+ hdd_adapter_t *adapter;
+ uint16_t len = 0;
+ char *buf = *buf_ptr;
+
+ hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+ if (!hdd_ctx) {
+ hdd_err("Failed to get hdd context ");
+ return;
+ }
+
+ hdd_notice("size of buffer: %d", *size);
+
+ len += scnprintf(buf + len, *size - len,
+ "\n isWiphySuspended %d", hdd_ctx->isWiphySuspended);
+ len += scnprintf(buf + len, *size - len,
+ "\n isMcThreadSuspended %d",
+ hdd_ctx->isMcThreadSuspended);
+
+ status = hdd_get_front_adapter(hdd_ctx, &adapter_node);
+
+ while (NULL != adapter_node && QDF_STATUS_SUCCESS == status) {
+ adapter = adapter_node->pAdapter;
+ if (adapter->dev)
+ len += scnprintf(buf + len, *size - len,
+ "\n device name: %s", adapter->dev->name);
+ len += scnprintf(buf + len, *size - len,
+ "\n device_mode: %d", adapter->device_mode);
+ switch (adapter->device_mode) {
+ case QDF_STA_MODE:
+ case QDF_P2P_CLIENT_MODE:
+ hdd_sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
+ len += scnprintf(buf + len, *size - len,
+ "\n connState: %d",
+ hdd_sta_ctx->conn_info.connState);
+ break;
+
+ default:
+ break;
+ }
+ status = hdd_get_next_adapter(hdd_ctx, adapter_node, &next);
+ adapter_node = next;
+ }
+
+ *size -= len;
+ *buf_ptr += len;
+}
+
+/**
+ * hdd_register_debug_callback() - registration function for hdd layer
+ * to print hdd state information
+ *
+ * Return: None
+ */
+static void hdd_register_debug_callback(void)
+{
+ qdf_register_debug_callback(QDF_MODULE_ID_HDD, &hdd_state_info_dump);
+}
+
+/**
* hdd_wlan_startup() - HDD init function
* @dev: Pointer to the underlying device
*
@@ -7817,6 +7891,8 @@ int hdd_wlan_startup(struct device *dev)
hdd_release_rtnl_lock();
rtnl_held = false;
+ if (hdd_ctx->config->enable_go_cts2self_for_sta)
+ sme_set_cts2self_for_p2p_go(hdd_ctx->hHal);
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE
status = qdf_mc_timer_init(&hdd_ctx->skip_acs_scan_timer,
QDF_TIMER_TYPE_SW,
@@ -7852,6 +7928,7 @@ int hdd_wlan_startup(struct device *dev)
memdump_init();
hdd_encrypt_decrypt_init(hdd_ctx);
+ hdd_driver_memdump_init();
if (hdd_ctx->config->fIsImpsEnabled)
hdd_set_idle_ps_config(hdd_ctx, true);
@@ -8802,6 +8879,7 @@ int hdd_init(void)
}
hdd_trace_init();
+ hdd_register_debug_callback();
err_out:
return ret;
diff --git a/core/hdd/src/wlan_hdd_memdump.c b/core/hdd/src/wlan_hdd_memdump.c
index 1afe3fd7569c..195d066018b2 100644
--- a/core/hdd/src/wlan_hdd_memdump.c
+++ b/core/hdd/src/wlan_hdd_memdump.c
@@ -630,3 +630,237 @@ void memdump_deinit(void)
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
hdd_err("Failed to deallocate timer");
}
+
+#ifdef MULTI_IF_NAME
+#define PROCFS_DRIVER_DUMP_DIR "debugdriver" MULTI_IF_NAME
+#else
+#define PROCFS_DRIVER_DUMP_DIR "debugdriver"
+#endif
+#define PROCFS_DRIVER_DUMP_NAME "driverdump"
+#define PROCFS_DRIVER_DUMP_PERM 0444
+
+static struct proc_dir_entry *proc_file_driver, *proc_dir_driver;
+
+/**
+ * hdd_driver_mem_cleanup() - Frees memory allocated for
+ * driver dump
+ *
+ * This function unallocates driver dump memory.
+ *
+ * Return: None
+ */
+static void hdd_driver_mem_cleanup(void)
+{
+ hdd_context_t *hdd_ctx;
+
+ hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+ if (!hdd_ctx) {
+ hdd_err("Invalid HDD context");
+ return;
+ }
+
+ if (hdd_ctx->driver_dump_mem) {
+ qdf_mem_free(hdd_ctx->driver_dump_mem);
+ hdd_ctx->driver_dump_mem = NULL;
+ }
+}
+
+
+/**
+ * hdd_driver_memdump_read() - perform read operation in driver
+ * memory dump proc file
+ * @file - handle for the proc file.
+ * @buf - pointer to user space buffer.
+ * @count - number of bytes to be read.
+ * @pos - offset in the from buffer.
+ *
+ * This function performs read operation for the driver memory dump proc file.
+ *
+ * Return: number of bytes read on success, error code otherwise.
+ */
+static ssize_t hdd_driver_memdump_read(struct file *file, char __user *buf,
+ size_t count, loff_t *pos)
+{
+ int status;
+ QDF_STATUS qdf_status;
+ hdd_context_t *hdd_ctx;
+ size_t no_of_bytes_read = 0;
+
+ hdd_ctx = memdump_get_file_data(file);
+
+ hdd_notice("Read req for size:%zu pos:%llu", count, *pos);
+ status = wlan_hdd_validate_context(hdd_ctx);
+ if (status != 0)
+ return -EINVAL;
+
+ if (*pos < 0) {
+ hdd_err("Invalid start offset for memdump read");
+ return -EINVAL;
+ } else if (!count || (hdd_ctx->driver_dump_size &&
+ (*pos >= hdd_ctx->driver_dump_size))) {
+ hdd_err("No more data to copy");
+ return 0;
+ } else if ((*pos == 0) || (hdd_ctx->driver_dump_mem == NULL)) {
+ /*
+ * Allocate memory for Driver memory dump.
+ */
+ if (!hdd_ctx->driver_dump_mem) {
+ hdd_ctx->driver_dump_mem =
+ qdf_mem_malloc(DRIVER_MEM_DUMP_SIZE);
+ if (!hdd_ctx->driver_dump_mem) {
+ hdd_err("qdf_mem_malloc failed");
+ return -ENOMEM;
+ }
+ }
+
+ qdf_status = qdf_state_info_dump_all(hdd_ctx->driver_dump_mem,
+ DRIVER_MEM_DUMP_SIZE,
+ &hdd_ctx->driver_dump_size);
+ /*
+ * If qdf_status is QDF_STATUS_E_NOMEM, then memory allocated is
+ * insufficient to dump driver information. This print can give
+ * information to allocate more memory if more information from
+ * each layer is added in future.
+ */
+ if (qdf_status != QDF_STATUS_SUCCESS)
+ hdd_err("Error in dump driver information, status %d",
+ qdf_status);
+ hdd_notice("driver_dump_size: %d",
+ hdd_ctx->driver_dump_size);
+ }
+
+ if (count > hdd_ctx->driver_dump_size - *pos)
+ no_of_bytes_read = hdd_ctx->driver_dump_size - *pos;
+ else
+ no_of_bytes_read = count;
+
+ if (copy_to_user(buf, hdd_ctx->driver_dump_mem + *pos,
+ no_of_bytes_read)) {
+ hdd_err("copy to user space failed");
+ return -EFAULT;
+ }
+
+ /* offset(pos) should be updated here based on the copy done */
+ *pos += no_of_bytes_read;
+
+ /* Entire driver memory dump copy completed */
+ if (*pos >= hdd_ctx->driver_dump_size)
+ hdd_driver_mem_cleanup();
+
+ return no_of_bytes_read;
+}
+
+
+/**
+ * struct driver_dump_fops - file operations for driver dump feature
+ * @read - read function for driver dump operation.
+ *
+ * This structure initialize the file operation handle for memory
+ * dump feature
+ */
+static const struct file_operations driver_dump_fops = {
+read: hdd_driver_memdump_read
+};
+
+/**
+ * hdd_driver_memdump_procfs_init() - Initialize procfs for driver memory dump
+ *
+ * This function create file under proc file system to be used later for
+ * processing driver memory dump
+ *
+ * Return: 0 on success, error code otherwise.
+ */
+static int hdd_driver_memdump_procfs_init(void)
+{
+ hdd_context_t *hdd_ctx;
+
+ hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD);
+ if (!hdd_ctx) {
+ hdd_err("Invalid HDD context");
+ return -EINVAL;
+ }
+
+ proc_dir_driver = proc_mkdir(PROCFS_DRIVER_DUMP_DIR, NULL);
+ if (proc_dir_driver == NULL) {
+ pr_debug("Error: Could not initialize /proc/%s\n",
+ PROCFS_DRIVER_DUMP_DIR);
+ return -ENOMEM;
+ }
+
+ proc_file_driver = proc_create_data(PROCFS_DRIVER_DUMP_NAME,
+ PROCFS_DRIVER_DUMP_PERM, proc_dir_driver,
+ &driver_dump_fops, hdd_ctx);
+ if (proc_file_driver == NULL) {
+ remove_proc_entry(PROCFS_DRIVER_DUMP_NAME, proc_dir_driver);
+ pr_debug("Error: Could not initialize /proc/%s\n",
+ PROCFS_DRIVER_DUMP_NAME);
+ return -ENOMEM;
+ }
+
+ pr_debug("/proc/%s/%s created\n", PROCFS_DRIVER_DUMP_DIR,
+ PROCFS_DRIVER_DUMP_NAME);
+ return 0;
+}
+
+/**
+ * hdd_driver_memdump_procfs_remove() - Remove file/dir under procfs
+ * for driver memory dump
+ *
+ * This function removes file/dir under proc file system that was
+ * processing driver memory dump
+ *
+ * Return: None
+ */
+static void hdd_driver_memdump_procfs_remove(void)
+{
+ remove_proc_entry(PROCFS_DRIVER_DUMP_NAME, proc_dir_driver);
+ pr_debug("/proc/%s/%s removed\n", PROCFS_DRIVER_DUMP_DIR,
+ PROCFS_DRIVER_DUMP_NAME);
+ remove_proc_entry(PROCFS_DRIVER_DUMP_DIR, NULL);
+ pr_debug("/proc/%s removed\n", PROCFS_DRIVER_DUMP_DIR);
+}
+
+/**
+ * hdd_driver_memdump_init() - Intialization function for driver
+ * memory dump feature
+ *
+ * This function creates proc file for driver memdump feature
+ *
+ * Return - 0 on success, error otherwise
+ */
+int hdd_driver_memdump_init(void)
+{
+ int status;
+
+ if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) {
+ hdd_err("Not initializing memdump in FTM mode");
+ return -EINVAL;
+ }
+
+ status = hdd_driver_memdump_procfs_init();
+ if (status) {
+ hdd_err("Failed to create proc file");
+ return status;
+ }
+
+ return 0;
+}
+
+/**
+ * hdd_driver_memdump_deinit() - De initialize driver memdump feature
+ *
+ * This function removes proc file created for driver memdump feature.
+ *
+ * Return: None
+ */
+void hdd_driver_memdump_deinit(void)
+{
+ if (hdd_get_conparam() == QDF_GLOBAL_FTM_MODE) {
+ hdd_err("Not deinitializing memdump in FTM mode");
+ return;
+ }
+
+ hdd_driver_memdump_procfs_remove();
+
+ hdd_driver_mem_cleanup();
+}
diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c
index 7e82be6f9ae7..26e5f6641987 100644
--- a/core/hdd/src/wlan_hdd_power.c
+++ b/core/hdd/src/wlan_hdd_power.c
@@ -74,6 +74,7 @@
#include "cds_concurrency.h"
#include "cdp_txrx_flow_ctrl_v2.h"
#include "pld_common.h"
+#include "wlan_hdd_driver_ops.h"
/* Preprocessor definitions and constants */
#define HDD_SSR_BRING_UP_TIME 30000
@@ -2349,3 +2350,159 @@ int hdd_set_qpower_config(hdd_context_t *hddctx, hdd_adapter_t *adapter,
}
return 0;
}
+
+#ifdef WLAN_SUSPEND_RESUME_TEST
+/*
+ * On Rome/iHelium there are 12 CE irqs and #2 is the wake irq. This may not be
+ * a valid assumption on future platforms.
+ */
+#define CE_IRQ_COUNT 12
+#define CE_WAKE_IRQ 2
+static struct wiphy *g_wiphy;
+
+#define HDD_FA_SUSPENDED_BIT (0)
+static unsigned long fake_apps_state;
+
+static int __hdd_wlan_fake_apps_resume(struct wiphy *wiphy);
+
+/**
+ * hdd_wlan_fake_apps_resume_irq_callback() - Irq callback function for resuming
+ * from unit-test initiated suspend from irq wakeup signal
+ * @val: interrupt val
+ *
+ * Resume wlan after getting very 1st CE interrupt from target
+ *
+ * Return: none
+ */
+static void hdd_wlan_fake_apps_resume_irq_callback(uint32_t val)
+{
+ hdd_info("Trigger unit-test resume WLAN; val: 0x%x", val);
+
+ QDF_BUG(g_wiphy);
+ __hdd_wlan_fake_apps_resume(g_wiphy);
+ g_wiphy = NULL;
+}
+
+/**
+ * hdd_wlan_fake_apps_suspend() - Initiate a unit-test triggered suspend
+ * @wiphy: wiphy struct from a validated hdd context
+ *
+ * Return: Zero on success, suspend related non-zero error code on failure
+ */
+int hdd_wlan_fake_apps_suspend(struct wiphy *wiphy)
+{
+ qdf_device_t qdf_dev = cds_get_context(QDF_MODULE_ID_QDF_DEVICE);
+ struct hif_opaque_softc *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
+ pm_message_t state;
+ int i, resume_err, suspend_err;
+
+ hdd_info("Unit-test suspend WLAN");
+ if (test_and_set_bit(HDD_FA_SUSPENDED_BIT, &fake_apps_state)) {
+ hdd_info("Already unit-test suspended; Nothing to do");
+ return 0;
+ }
+
+ suspend_err = wlan_hdd_cfg80211_suspend_wlan(wiphy, NULL);
+ if (suspend_err)
+ goto resume_done;
+
+ state.event = PM_EVENT_SUSPEND;
+ suspend_err = wlan_hdd_bus_suspend(state);
+ if (suspend_err)
+ goto cfg80211_resume;
+
+ /* simulate kernel disabling irqs */
+ for (i = 0; i < CE_IRQ_COUNT; i++)
+ pld_disable_irq(qdf_dev->dev, i);
+
+ suspend_err = wlan_hdd_bus_suspend_noirq();
+ if (suspend_err)
+ goto enable_irqs_and_bus_resume;
+
+ /* re-enable wake irq */
+ pld_enable_irq(qdf_dev->dev, CE_WAKE_IRQ);
+
+ /* pass wiphy to callback via global variable */
+ g_wiphy = wiphy;
+ hif_fake_apps_suspend(hif_ctx, hdd_wlan_fake_apps_resume_irq_callback);
+
+ return 0;
+
+enable_irqs_and_bus_resume:
+ /* re-enable irqs */
+ for (i = 0; i < CE_IRQ_COUNT; i++)
+ pld_enable_irq(qdf_dev->dev, i);
+
+ resume_err = wlan_hdd_bus_resume();
+ QDF_BUG(resume_err == 0);
+
+cfg80211_resume:
+ resume_err = wlan_hdd_cfg80211_resume_wlan(wiphy);
+ QDF_BUG(resume_err == 0);
+
+resume_done:
+ clear_bit(HDD_FA_SUSPENDED_BIT, &fake_apps_state);
+ hdd_err("Unit-test suspend failed: %d", suspend_err);
+ return suspend_err;
+}
+
+/**
+ * hdd_wlan_fake_apps_resume() - Resume from unit-test triggered suspend
+ * @wiphy: wiphy struct from a validated hdd context
+ *
+ * Return: Zero on success, calls QDF_BUG() on failure
+ */
+int hdd_wlan_fake_apps_resume(struct wiphy *wiphy)
+{
+ struct hif_opaque_softc *hif_ctx = cds_get_context(QDF_MODULE_ID_HIF);
+ int err;
+
+ hif_fake_apps_resume(hif_ctx);
+ err = __hdd_wlan_fake_apps_resume(wiphy);
+ if (err) {
+ hif_fake_apps_suspend(hif_ctx,
+ hdd_wlan_fake_apps_resume_irq_callback);
+ return err;
+ }
+
+ return 0;
+}
+
+/**
+ * __hdd_wlan_fake_apps_resume() - The core logic for
+ * hdd_wlan_fake_apps_resume() skipping the call to hif_fake_apps_resume(),
+ * which is only need for non-irq resume
+ * @wiphy: wiphy struct from a validated hdd context
+ *
+ * Return: Zero on success, calls QDF_BUG() on failure
+ */
+static int __hdd_wlan_fake_apps_resume(struct wiphy *wiphy)
+{
+ qdf_device_t qdf_dev = cds_get_context(QDF_MODULE_ID_QDF_DEVICE);
+ int i, resume_err;
+
+ hdd_info("Unit-test resume WLAN");
+ if (!test_and_clear_bit(HDD_FA_SUSPENDED_BIT, &fake_apps_state)) {
+ hdd_info("Not unit-test suspended; Nothing to do");
+ return 0;
+ }
+
+ /* disable wake irq */
+ pld_disable_irq(qdf_dev->dev, CE_WAKE_IRQ);
+
+ resume_err = wlan_hdd_bus_resume_noirq();
+ QDF_BUG(resume_err == 0);
+
+ /* simulate kernel enable irqs */
+ for (i = 0; i < CE_IRQ_COUNT; i++)
+ pld_enable_irq(qdf_dev->dev, i);
+
+ resume_err = wlan_hdd_bus_resume();
+ QDF_BUG(resume_err == 0);
+
+ resume_err = wlan_hdd_cfg80211_resume_wlan(wiphy);
+ QDF_BUG(resume_err == 0);
+
+ return 0;
+}
+#endif
diff --git a/core/hdd/src/wlan_hdd_regulatory.c b/core/hdd/src/wlan_hdd_regulatory.c
index 69218fba8a9e..bda6e48d4b6d 100644
--- a/core/hdd/src/wlan_hdd_regulatory.c
+++ b/core/hdd/src/wlan_hdd_regulatory.c
@@ -488,18 +488,18 @@ int hdd_regulatory_init(hdd_context_t *hdd_ctx, struct wiphy *wiphy)
reg_info = &hdd_ctx->reg;
- hdd_regulatory_wiphy_init(hdd_ctx, reg_info, wiphy);
-
- hdd_process_regulatory_data(hdd_ctx, wiphy, true);
-
- reg_info->cc_src = SOURCE_DRIVER;
-
ret_val = cds_fill_some_regulatory_info(reg_info);
if (ret_val) {
hdd_err("incorrect BDF regulatory data");
return ret_val;
}
+ hdd_regulatory_wiphy_init(hdd_ctx, reg_info, wiphy);
+
+ hdd_process_regulatory_data(hdd_ctx, wiphy, true);
+
+ reg_info->cc_src = SOURCE_DRIVER;
+
cds_put_default_country(reg_info->alpha2);
init_completion(&hdd_ctx->reg_init);
diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c
index 7074de2d6bd2..397bdcd2d019 100644
--- a/core/hdd/src/wlan_hdd_wext.c
+++ b/core/hdd/src/wlan_hdd_wext.c
@@ -92,6 +92,7 @@
#ifdef WLAN_SUSPEND_RESUME_TEST
#include "wlan_hdd_driver_ops.h"
#include "hif.h"
+#include "pld_common.h"
#endif
#define HDD_FINISH_ULA_TIME_OUT 800
@@ -439,10 +440,9 @@ static const hdd_freq_chan_map_t freq_chan_map[] = {
#define WE_ENABLE_FW_PROFILE 4
#define WE_SET_FW_PROFILE_HIST_INTVL 5
-#ifdef WLAN_SUSPEND_RESUME_TEST
+/* Private sub-ioctl for initiating WoW suspend without Apps suspend */
#define WE_SET_WLAN_SUSPEND 6
#define WE_SET_WLAN_RESUME 7
-#endif
/* (SIOCIWFIRSTPRIV + 29) is currently unused */
@@ -2037,7 +2037,6 @@ static int __iw_set_mode(struct net_device *dev,
hdd_context_t *hdd_ctx;
tCsrRoamProfile *pRoamProfile;
eCsrRoamBssType LastBSSType;
- eMib_dot11DesiredBssType connectedBssType;
struct hdd_config *pConfig;
struct wireless_dev *wdev;
int ret;
@@ -2085,8 +2084,8 @@ static int __iw_set_mode(struct net_device *dev,
/* the BSS mode changed. We need to issue disconnect
* if connected or in IBSS disconnect state
*/
- if (hdd_conn_get_connected_bss_type
- (WLAN_HDD_GET_STATION_CTX_PTR(pAdapter), &connectedBssType)
+ if (hdd_conn_is_connected
+ (WLAN_HDD_GET_STATION_CTX_PTR(pAdapter))
|| (eCSR_BSS_TYPE_START_IBSS == LastBSSType)) {
QDF_STATUS qdf_status;
/* need to issue a disconnect to CSR. */
@@ -9783,25 +9782,6 @@ static int wlan_hdd_set_mon_chan(hdd_adapter_t *adapter, uint32_t chan,
return qdf_status_to_os_return(status);
}
-#ifdef WLAN_SUSPEND_RESUME_TEST
-static void *g_wiphy;
-
-/**
- * hdd_wlan_trigger_resume() - resume wlan
- * @val: interrupt val
- *
- * Resume wlan after getting very 1st CE interrupt from target
- *
- * Return: none
- */
-static void hdd_wlan_trigger_resume(uint32_t val)
-{
- hdd_err("Resume WLAN val 0x%x", val);
- wlan_hdd_bus_resume();
- wlan_hdd_cfg80211_resume_wlan(g_wiphy);
-}
-#endif
-
static int __iw_set_two_ints_getnone(struct net_device *dev,
struct iw_request_info *info,
union iwreq_data *wrqu, char *extra)
@@ -9811,10 +9791,6 @@ static int __iw_set_two_ints_getnone(struct net_device *dev,
int sub_cmd = value[0];
int ret;
hdd_context_t *hdd_ctx = WLAN_HDD_GET_CTX(pAdapter);
-#ifdef WLAN_SUSPEND_RESUME_TEST
- pm_message_t state;
-#endif
-
ENTER_DEV(dev);
@@ -9878,21 +9854,12 @@ static int __iw_set_two_ints_getnone(struct net_device *dev,
case WE_SET_MON_MODE_CHAN:
ret = wlan_hdd_set_mon_chan(pAdapter, value[1], value[2]);
break;
-#ifdef WLAN_SUSPEND_RESUME_TEST
case WE_SET_WLAN_SUSPEND:
- hdd_err("Suspend WLAN");
- g_wiphy = hdd_ctx->wiphy;
- state.event = PM_EVENT_SUSPEND;
- ret = wlan_hdd_cfg80211_suspend_wlan(hdd_ctx->wiphy, NULL);
- wlan_hdd_bus_suspend(state);
- hif_fake_apps_suspend(hdd_wlan_trigger_resume);
+ ret = hdd_wlan_fake_apps_suspend(hdd_ctx->wiphy);
break;
case WE_SET_WLAN_RESUME:
- hdd_err("Resume WLAN");
- wlan_hdd_bus_resume();
- ret = wlan_hdd_cfg80211_resume_wlan(hdd_ctx->wiphy);
+ ret = hdd_wlan_fake_apps_resume(hdd_ctx->wiphy);
break;
-#endif
default:
hdd_err("Invalid IOCTL command %d", sub_cmd);
break;
diff --git a/core/mac/inc/qwlan_version.h b/core/mac/inc/qwlan_version.h
index 7e897c074a79..d4785941ed5e 100644
--- a/core/mac/inc/qwlan_version.h
+++ b/core/mac/inc/qwlan_version.h
@@ -41,9 +41,9 @@
#define QWLAN_VERSION_MAJOR 5
#define QWLAN_VERSION_MINOR 1
#define QWLAN_VERSION_PATCH 0
-#define QWLAN_VERSION_EXTRA "J"
+#define QWLAN_VERSION_EXTRA "S"
#define QWLAN_VERSION_BUILD 29
-#define QWLAN_VERSIONSTR "5.1.0.29J"
+#define QWLAN_VERSIONSTR "5.1.0.29S"
#endif /* QWLAN_VERSION_H */
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h
index 362275c14bd3..58d0cd20635c 100644
--- a/core/mac/inc/sir_api.h
+++ b/core/mac/inc/sir_api.h
@@ -695,6 +695,7 @@ typedef struct sSirSmeStartBssReq {
bool obssEnabled;
uint8_t sap_dot11mc;
uint8_t beacon_tx_rate;
+ bool vendor_vht_sap;
} tSirSmeStartBssReq, *tpSirSmeStartBssReq;
@@ -6451,6 +6452,18 @@ struct sme_ndp_peer_ind {
#endif /* WLAN_FEATURE_NAN_DATAPATH */
/**
+ * struct sir_set_tx_rx_aggregation_size - sets tx rx aggregation size
+ * @vdev_id: vdev id of the session
+ * @tx_aggregation_size: Tx aggregation size
+ * @rx_aggregation_size: Rx aggregation size
+ */
+struct sir_set_tx_rx_aggregation_size {
+ uint8_t vdev_id;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
+};
+
+/**
* struct sir_p2p_lo_start - p2p listen offload start
* @vdev_id: vdev identifier
* @ctl_flags: control flag
diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms
index 80509932738c..01568e477771 100644
--- a/core/mac/src/cfg/cfgUtil/dot11f.frms
+++ b/core/mac/src/cfg/cfgUtil/dot11f.frms
@@ -2894,7 +2894,7 @@ MULTIIE P2PDisAssoc ( EID_VENDOR_SPECIFIC ) OUI( 0x50, 0x6F, 0x9A, 0x09 )
MANDATORYTLV MinorReasonCode;
}
-IE vendor2_ie (EID_VENDOR_SPECIFIC) OUI (0x00, 0x90, 0x4c)
+IE vendor_vht_ie (EID_VENDOR_SPECIFIC) OUI (0x00, 0x90, 0x4c)
{
type, 1;
sub_type, 1;
@@ -2957,7 +2957,7 @@ FRAME Beacon // C.f. Sec. 7.2.3.1
OPTIE WiderBWChanSwitchAnn;
OPTIE OBSSScanParameters;
OPTIE Vendor1IE;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE Vendor3IE;
OPTIE hs20vendor_ie;
OPTIE ChannelSwitchWrapper;
@@ -3046,7 +3046,7 @@ FRAME Beacon2
OPTIE WiderBWChanSwitchAnn;
OPTIE OBSSScanParameters;
OPTIE Vendor1IE;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE Vendor3IE;
OPTIE hs20vendor_ie;
OPTIE ChannelSwitchWrapper;
@@ -3111,7 +3111,7 @@ FRAME BeaconIEs
OPTIE WiderBWChanSwitchAnn;
OPTIE OBSSScanParameters;
OPTIE Vendor1IE;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE Vendor3IE;
OPTIE hs20vendor_ie;
OPTIE ChannelSwitchWrapper;
@@ -3153,7 +3153,7 @@ FRAME AssocRequest // 7.2.3.4
OPTIE ExtCap;
OPTIE OperatingMode;
OPTIE QosMapSet;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE hs20vendor_ie;
} // End frame AssocRequest.
@@ -3188,7 +3188,7 @@ FRAME AssocResponse // 7.2.3.5
OPTIE ExtCap;
OPTIE OBSSScanParameters;
OPTIE QosMapSet;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
} // End frame AssocResponse.
FRAME ReAssocRequest // 7.2.3.6
@@ -3225,7 +3225,7 @@ FRAME ReAssocRequest // 7.2.3.6
OPTIE ExtCap;
OPTIE OperatingMode;
OPTIE QosMapSet;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE hs20vendor_ie;
} // End frame ReAssocRequest.
@@ -3261,7 +3261,7 @@ FRAME ReAssocResponse // 7.2.3.7
OPTIE ExtCap;
OPTIE OBSSScanParameters;
OPTIE QosMapSet;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
} // End frame ReAssocResponse.
FRAME ProbeRequest // 7.2.3.8
@@ -3328,7 +3328,7 @@ FRAME ProbeResponse // 7.2.3.9
OPTIE ExtCap;
OPTIE OBSSScanParameters;
OPTIE Vendor1IE;
- OPTIE vendor2_ie;
+ OPTIE vendor_vht_ie;
OPTIE Vendor3IE;
OPTIE hs20vendor_ie;
OPTIE ChannelSwitchWrapper;
diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h
index 006fd880785d..7d52f2508ba6 100644
--- a/core/mac/src/include/dot11f.h
+++ b/core/mac/src/include/dot11f.h
@@ -35,7 +35,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Mon Sep 19 14:42:34 2016 from the following file(s):
+ * Mon Oct 3 12:40:25 2016 from the following file(s):
*
* dot11f.frms
*
@@ -7612,40 +7612,40 @@ uint32_t dot11f_get_packed_ie_sec_chan_offset_ele(
#endif /* C++ */
/* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c} */
-typedef struct sDot11fIEvendor2_ie {
+typedef struct sDot11fIEvendor_vht_ie {
uint8_t present;
uint8_t type;
uint8_t sub_type;
tDot11fIEVHTCaps VHTCaps;
tDot11fIEVHTOperation VHTOperation;
-} tDot11fIEvendor2_ie;
+} tDot11fIEvendor_vht_ie;
-#define DOT11F_EID_VENDOR2_IE (221)
+#define DOT11F_EID_VENDOR_VHT_IE (221)
/* N.B. These #defines do *not* include the EID & length */
-#define DOT11F_IE_VENDOR2_IE_MIN_LEN (5)
+#define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5)
-#define DOT11F_IE_VENDOR2_IE_MAX_LEN (26)
+#define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
-uint32_t dot11f_unpack_ie_vendor2_ie(
+uint32_t dot11f_unpack_ie_vendor_vht_ie(
tpAniSirGlobal,
uint8_t *,
uint8_t,
- tDot11fIEvendor2_ie*);
+ tDot11fIEvendor_vht_ie*);
-uint32_t dot11f_pack_ie_vendor2_ie(
+uint32_t dot11f_pack_ie_vendor_vht_ie(
tpAniSirGlobal,
- tDot11fIEvendor2_ie *,
+ tDot11fIEvendor_vht_ie *,
uint8_t *,
uint32_t,
uint32_t*);
-uint32_t dot11f_get_packed_ie_vendor2_ie(
+uint32_t dot11f_get_packed_ie_vendor_vht_ie(
tpAniSirGlobal,
- tDot11fIEvendor2_ie *,
+ tDot11fIEvendor_vht_ie *,
uint32_t*);
#ifdef __cplusplus
@@ -7757,7 +7757,7 @@ typedef struct sDot11fAssocRequest{
tDot11fIEExtCap ExtCap;
tDot11fIEOperatingMode OperatingMode;
tDot11fIEQosMapSet QosMapSet;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEhs20vendor_ie hs20vendor_ie;
} tDot11fAssocRequest;
@@ -7813,7 +7813,7 @@ typedef struct sDot11fAssocResponse{
tDot11fIEExtCap ExtCap;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEQosMapSet QosMapSet;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
} tDot11fAssocResponse;
#define DOT11F_ASSOCRESPONSE (4)
@@ -7919,7 +7919,7 @@ typedef struct sDot11fBeacon{
tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEVendor1IE Vendor1IE;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEVendor3IE Vendor3IE;
tDot11fIEhs20vendor_ie hs20vendor_ie;
tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
@@ -8014,7 +8014,7 @@ typedef struct sDot11fBeacon2{
tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEVendor1IE Vendor1IE;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEVendor3IE Vendor3IE;
tDot11fIEhs20vendor_ie hs20vendor_ie;
tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
@@ -8090,7 +8090,7 @@ typedef struct sDot11fBeaconIEs{
tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEVendor1IE Vendor1IE;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEVendor3IE Vendor3IE;
tDot11fIEhs20vendor_ie hs20vendor_ie;
tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
@@ -8501,7 +8501,7 @@ typedef struct sDot11fProbeResponse{
tDot11fIEExtCap ExtCap;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEVendor1IE Vendor1IE;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEVendor3IE Vendor3IE;
tDot11fIEhs20vendor_ie hs20vendor_ie;
tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
@@ -8648,7 +8648,7 @@ typedef struct sDot11fReAssocRequest{
tDot11fIEExtCap ExtCap;
tDot11fIEOperatingMode OperatingMode;
tDot11fIEQosMapSet QosMapSet;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEhs20vendor_ie hs20vendor_ie;
} tDot11fReAssocRequest;
@@ -8705,7 +8705,7 @@ typedef struct sDot11fReAssocResponse{
tDot11fIEExtCap ExtCap;
tDot11fIEOBSSScanParameters OBSSScanParameters;
tDot11fIEQosMapSet QosMapSet;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
} tDot11fReAssocResponse;
#define DOT11F_REASSOCRESPONSE (27)
diff --git a/core/mac/src/include/parser_api.h b/core/mac/src/include/parser_api.h
index da8c3bc36840..bede0ad11946 100644
--- a/core/mac/src/include/parser_api.h
+++ b/core/mac/src/include/parser_api.h
@@ -164,7 +164,7 @@ typedef struct sSirProbeRespBeacon {
uint8_t WiderBWChanSwitchAnnPresent;
tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
uint8_t Vendor1IEPresent;
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
uint8_t Vendor3IEPresent;
tDot11fIEhs20vendor_ie hs20vendor_ie;
tDot11fIEIBSSParams IBSSParams;
@@ -245,6 +245,7 @@ typedef struct sSirAssocReq {
tDot11fIEVHTCaps VHTCaps;
tDot11fIEOperatingMode operMode;
tDot11fIEExtCap ExtCap;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEhs20vendor_ie hs20vendor_ie;
} tSirAssocReq, *tpSirAssocReq;
@@ -294,7 +295,7 @@ typedef struct sSirAssocRsp {
#ifdef WLAN_FEATURE_11W
tDot11fIETimeoutInterval TimeoutInterval;
#endif
- tDot11fIEvendor2_ie vendor2_ie;
+ tDot11fIEvendor_vht_ie vendor_vht_ie;
tDot11fIEOBSSScanParameters obss_scanparams;
} tSirAssocRsp, *tpSirAssocRsp;
diff --git a/core/mac/src/include/sir_params.h b/core/mac/src/include/sir_params.h
index 2b71b5143209..b11343f2be9b 100644
--- a/core/mac/src/include/sir_params.h
+++ b/core/mac/src/include/sir_params.h
@@ -606,6 +606,7 @@ typedef struct sSirMbMsgP2p {
#define SIR_HAL_ADD_BCN_FILTER_CMDID (SIR_HAL_ITC_MSG_TYPES_BEGIN + 339)
#define SIR_HAL_REMOVE_BCN_FILTER_CMDID (SIR_HAL_ITC_MSG_TYPES_BEGIN + 340)
+
#define SIR_HAL_BPF_GET_CAPABILITIES_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 341)
#define SIR_HAL_BPF_SET_INSTRUCTIONS_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 342)
@@ -634,6 +635,7 @@ typedef struct sSirMbMsgP2p {
#define SIR_HAL_POWER_DBG_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 362)
#define SIR_HAL_SET_DTIM_PERIOD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 363)
#define SIR_HAL_ENCRYPT_DECRYPT_MSG (SIR_HAL_ITC_MSG_TYPES_BEGIN + 364)
+#define SIR_HAL_SET_CTS2SELF_FOR_STA (SIR_HAL_ITC_MSG_TYPES_BEGIN + 368)
#define SIR_HAL_MSG_TYPES_END (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF)
diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h
index f12cc19a7619..b8b34a98fb79 100644
--- a/core/mac/src/pe/include/lim_session.h
+++ b/core/mac/src/pe/include/lim_session.h
@@ -464,6 +464,7 @@ typedef struct sPESession /* Added to Support BT-AMP */
bool is_vendor_specific_vhtcaps;
uint8_t vendor_specific_vht_ie_type;
uint8_t vendor_specific_vht_ie_sub_type;
+ bool vendor_vht_sap;
/* HS 2.0 Indication */
tDot11fIEhs20vendor_ie hs20vendor_ie;
/* flag to indicate country code in beacon */
diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c
index a1e05650a5c5..2700e9ad55b7 100644
--- a/core/mac/src/pe/lim/lim_api.c
+++ b/core/mac/src/pe/lim/lim_api.c
@@ -681,6 +681,63 @@ void lim_cleanup(tpAniSirGlobal pMac)
} /*** end lim_cleanup() ***/
+/**
+ * lim_state_info_dump() - print state information of lim layer
+ * @buf: buffer pointer
+ * @size: size of buffer to be filled
+ *
+ * This function is used to print state information of lim layer
+ *
+ * Return: None
+ */
+static void lim_state_info_dump(char **buf_ptr, uint16_t *size)
+{
+ tHalHandle hal;
+ tpAniSirGlobal mac;
+ uint16_t len = 0;
+ char *buf = *buf_ptr;
+
+ hal = cds_get_context(QDF_MODULE_ID_PE);
+ if (hal == NULL) {
+ QDF_ASSERT(0);
+ return;
+ }
+
+ mac = PMAC_STRUCT(hal);
+
+ lim_log(mac, LOG1, FL("size of buffer: %d"), *size);
+
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n SmeState: %d", mac->lim.gLimSmeState);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n PrevSmeState: %d", mac->lim.gLimPrevSmeState);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n MlmState: %d", mac->lim.gLimMlmState);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n PrevMlmState: %d", mac->lim.gLimPrevMlmState);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n SystemInScanLearnMode: %d",
+ mac->lim.gLimSystemInScanLearnMode);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n ProcessDefdMsgs: %d", mac->lim.gLimProcessDefdMsgs);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n gLimHalScanState: %d", mac->lim.gLimHalScanState);
+
+ *size -= len;
+ *buf_ptr += len;
+}
+
+/**
+ * lim_register_debug_callback() - registration function for lim layer
+ * to print lim state information
+ *
+ * Return: None
+ */
+static void lim_register_debug_callback(void)
+{
+ qdf_register_debug_callback(QDF_MODULE_ID_PE, &lim_state_info_dump);
+}
+
/** -------------------------------------------------------------
\fn pe_open
\brief will be called in Open sequence from mac_open
@@ -746,6 +803,8 @@ tSirRetStatus pe_open(tpAniSirGlobal pMac, struct cds_config_info *cds_cfg)
#ifdef LIM_TRACE_RECORD
MTRACE(lim_trace_init(pMac));
#endif
+ lim_register_debug_callback();
+
return status; /* status here will be eSIR_SUCCESS */
pe_open_lock_fail:
diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c
index 31818d187df1..4aae611d0787 100644
--- a/core/mac/src/pe/lim/lim_assoc_utils.c
+++ b/core/mac/src/pe/lim/lim_assoc_utils.c
@@ -3224,12 +3224,12 @@ lim_check_and_announce_join_success(tpAniSirGlobal mac_ctx,
wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &selfStaDot11Mode);
if ((IS_DOT11_MODE_VHT(selfStaDot11Mode)) &&
- beacon_probe_rsp->vendor2_ie.VHTCaps.present) {
+ beacon_probe_rsp->vendor_vht_ie.VHTCaps.present) {
session_entry->is_vendor_specific_vhtcaps = true;
session_entry->vendor_specific_vht_ie_type =
- beacon_probe_rsp->vendor2_ie.type;
+ beacon_probe_rsp->vendor_vht_ie.type;
session_entry->vendor_specific_vht_ie_sub_type =
- beacon_probe_rsp->vendor2_ie.sub_type;
+ beacon_probe_rsp->vendor_vht_ie.sub_type;
lim_log(mac_ctx, LOG1, FL(
"VHT caps are present in vendor specific IE"));
}
@@ -3678,13 +3678,13 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
vht_caps = &pAssocRsp->VHTCaps;
vht_oper = &pAssocRsp->VHTOperation;
} else if (psessionEntry->vhtCapability &&
- pAssocRsp->vendor2_ie.VHTCaps.present){
+ pAssocRsp->vendor_vht_ie.VHTCaps.present){
pAddBssParams->vhtCapable =
- pAssocRsp->vendor2_ie.VHTCaps.present;
+ pAssocRsp->vendor_vht_ie.VHTCaps.present;
lim_log(pMac, LOG1,
FL("VHT Caps and Operation are present in vendor Specfic IE"));
- vht_caps = &pAssocRsp->vendor2_ie.VHTCaps;
- vht_oper = &pAssocRsp->vendor2_ie.VHTOperation;
+ vht_caps = &pAssocRsp->vendor_vht_ie.VHTCaps;
+ vht_oper = &pAssocRsp->vendor_vht_ie.VHTOperation;
} else {
pAddBssParams->vhtCapable = 0;
}
@@ -3757,15 +3757,15 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
pAddBssParams->staContext.lsigTxopProtection);
if (psessionEntry->vhtCapability &&
(IS_BSS_VHT_CAPABLE(pBeaconStruct->VHTCaps) ||
- IS_BSS_VHT_CAPABLE(
- pBeaconStruct->vendor2_ie.VHTCaps))) {
+ IS_BSS_VHT_CAPABLE(pBeaconStruct->
+ vendor_vht_ie.VHTCaps))) {
pAddBssParams->staContext.vhtCapable = 1;
pAddBssParams->staContext.vhtSupportedRxNss =
pStaDs->vhtSupportedRxNss;
if (pAssocRsp->VHTCaps.present)
vht_caps = &pAssocRsp->VHTCaps;
- else if (pAssocRsp->vendor2_ie.VHTCaps.present) {
- vht_caps = &pAssocRsp->vendor2_ie.VHTCaps;
+ else if (pAssocRsp->vendor_vht_ie.VHTCaps.present) {
+ vht_caps = &pAssocRsp->vendor_vht_ie.VHTCaps;
lim_log(pMac, LOG1, FL(
"VHT Caps are in vendor Specfic IE"));
}
@@ -3790,8 +3790,9 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
pAssocRsp->HTInfo.recommendedTxWidthSet;
if (pAssocRsp->VHTCaps.present)
vht_oper = &pAssocRsp->VHTOperation;
- else if (pAssocRsp->vendor2_ie.VHTCaps.present) {
- vht_oper = &pAssocRsp->vendor2_ie.VHTOperation;
+ else if (pAssocRsp->vendor_vht_ie.VHTCaps.present) {
+ vht_oper = &pAssocRsp->
+ vendor_vht_ie.VHTOperation;
lim_log(pMac, LOG1, FL(
"VHT Op IE is in vendor Specfic IE"));
}
@@ -3874,8 +3875,8 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
if (pAssocRsp->VHTCaps.present)
vht_caps = &pAssocRsp->VHTCaps;
- else if (pAssocRsp->vendor2_ie.VHTCaps.present) {
- vht_caps = &pAssocRsp->vendor2_ie.VHTCaps;
+ else if (pAssocRsp->vendor_vht_ie.VHTCaps.present) {
+ vht_caps = &pAssocRsp->vendor_vht_ie.VHTCaps;
lim_log(pMac, LOG1, FL(
"VHT Caps is in vendor Specfic IE"));
}
@@ -4218,13 +4219,13 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
pAddBssParams->currentOperChannel);
if (psessionEntry->vhtCapability &&
(IS_BSS_VHT_CAPABLE(pBeaconStruct->VHTCaps) ||
- IS_BSS_VHT_CAPABLE(pBeaconStruct->vendor2_ie.VHTCaps))) {
+ IS_BSS_VHT_CAPABLE(pBeaconStruct->vendor_vht_ie.VHTCaps))) {
pAddBssParams->vhtCapable = 1;
if (pBeaconStruct->VHTOperation.present)
vht_oper = &pBeaconStruct->VHTOperation;
- else if (pBeaconStruct->vendor2_ie.VHTOperation.present) {
- vht_oper = &pBeaconStruct->vendor2_ie.VHTOperation;
+ else if (pBeaconStruct->vendor_vht_ie.VHTOperation.present) {
+ vht_oper = &pBeaconStruct->vendor_vht_ie.VHTOperation;
lim_log(pMac, LOG1,
FL("VHT Operation is present in vendor Specfic IE"));
}
@@ -4301,12 +4302,13 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
if (psessionEntry->vhtCapability &&
(IS_BSS_VHT_CAPABLE(pBeaconStruct->VHTCaps) ||
IS_BSS_VHT_CAPABLE(
- pBeaconStruct->vendor2_ie.VHTCaps))) {
+ pBeaconStruct->vendor_vht_ie.VHTCaps))) {
pAddBssParams->staContext.vhtCapable = 1;
if (pBeaconStruct->VHTCaps.present)
vht_caps = &pBeaconStruct->VHTCaps;
- else if (pBeaconStruct->vendor2_ie.VHTCaps.present)
- vht_caps = &pBeaconStruct->vendor2_ie.VHTCaps;
+ else if (pBeaconStruct->vendor_vht_ie.VHTCaps.present)
+ vht_caps = &pBeaconStruct->
+ vendor_vht_ie.VHTCaps;
if ((vht_caps != NULL) && (vht_caps->suBeamFormerCap ||
vht_caps->muBeamformerCap) &&
@@ -4389,9 +4391,9 @@ tSirRetStatus lim_sta_send_add_bss_pre_assoc(tpAniSirGlobal pMac, uint8_t update
if (pBeaconStruct->VHTCaps.present)
vht_caps = &pBeaconStruct->VHTCaps;
- else if (pBeaconStruct->vendor2_ie.VHTCaps.present) {
+ else if (pBeaconStruct->vendor_vht_ie.VHTCaps.present) {
vht_caps =
- &pBeaconStruct->vendor2_ie.VHTCaps;
+ &pBeaconStruct->vendor_vht_ie.VHTCaps;
lim_log(pMac, LOG1, FL(
"VHT Caps are in vendor Specfic IE"));
}
diff --git a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
index f60e43231eed..c1d77bfb5f9c 100644
--- a/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
+++ b/core/mac/src/pe/lim/lim_process_assoc_req_frame.c
@@ -504,9 +504,19 @@ static bool lim_chk_11ac_only(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
tpPESession session, tpSirAssocReq assoc_req,
uint8_t sub_type)
{
+ tDot11fIEVHTCaps *vht_caps;
+
+ if (assoc_req->VHTCaps.present)
+ vht_caps = &assoc_req->VHTCaps;
+ else if (assoc_req->vendor_vht_ie.VHTCaps.present &&
+ session->vendor_vht_sap)
+ vht_caps = &assoc_req->vendor_vht_ie.VHTCaps;
+ else
+ vht_caps = NULL;
+
if (LIM_IS_AP_ROLE(session) &&
(session->dot11mode == WNI_CFG_DOT11_MODE_11AC_ONLY) &&
- (!assoc_req->VHTCaps.present)) {
+ ((vht_caps != NULL) && (!vht_caps->present))) {
lim_send_assoc_rsp_mgmt_frame(mac_ctx,
eSIR_MAC_CAPABILITIES_NOT_SUPPORTED_STATUS,
1, hdr->sa, sub_type, 0, session);
@@ -1231,6 +1241,16 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
tPmfSaQueryTimerId timer_id;
uint32_t retry_interval;
#endif
+ tDot11fIEVHTCaps *vht_caps;
+
+ if (assoc_req->VHTCaps.present)
+ vht_caps = &assoc_req->VHTCaps;
+ else if (assoc_req->vendor_vht_ie.VHTCaps.present &&
+ session->vendor_vht_sap)
+ vht_caps = &assoc_req->vendor_vht_ie.VHTCaps;
+ else
+ vht_caps = NULL;
+
/*
* check here if the parsedAssocReq already pointing to the assoc_req
* and free it before assigning this new assoc_req
@@ -1252,7 +1272,10 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
}
sta_ds->mlmStaContext.htCapability = assoc_req->HTCaps.present;
- sta_ds->mlmStaContext.vhtCapability = assoc_req->VHTCaps.present;
+ if ((vht_caps != NULL) && vht_caps->present)
+ sta_ds->mlmStaContext.vhtCapability = vht_caps->present;
+ else
+ sta_ds->mlmStaContext.vhtCapability = false;
sta_ds->qos.addtsPresent =
(assoc_req->addtsPresent == 0) ? false : true;
sta_ds->qos.addts = assoc_req->addtsReq;
@@ -1348,7 +1371,7 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
(uint8_t) (assoc_req->operMode.chanWidth ?
eHT_CHANNEL_WIDTH_40MHZ :
eHT_CHANNEL_WIDTH_20MHZ);
- } else if (assoc_req->VHTCaps.present) {
+ } else if ((vht_caps != NULL) && vht_caps->present) {
/*
* Check if STA has enabled it's channel bonding mode.
* If channel bonding mode is enabled, we decide based
@@ -1360,7 +1383,7 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
WNI_CFG_VHT_CHANNEL_WIDTH_20_40MHZ :
session->ch_width - 1);
sta_ds->htMaxRxAMpduFactor =
- assoc_req->VHTCaps.maxAMPDULenExp;
+ vht_caps->maxAMPDULenExp;
}
/* Lesser among the AP and STA bandwidth of operation. */
sta_ds->htSupportedChannelWidthSet =
@@ -1373,9 +1396,10 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
(uint8_t) assoc_req->HTCaps.advCodingCap;
}
- if (assoc_req->VHTCaps.present && assoc_req->wmeInfoPresent) {
+ if ((vht_caps != NULL) && vht_caps->present &&
+ assoc_req->wmeInfoPresent) {
sta_ds->vhtLdpcCapable =
- (uint8_t) assoc_req->VHTCaps.ldpcCodingCap;
+ (uint8_t) vht_caps->ldpcCodingCap;
}
if (!assoc_req->wmeInfoPresent) {
@@ -1398,8 +1422,7 @@ static bool lim_update_sta_ds(tpAniSirGlobal mac_ctx, tpSirMacMgmtHdr hdr,
&(assoc_req->supportedRates),
&(assoc_req->extendedRates),
assoc_req->HTCaps.supportedMCSSet,
- session, &assoc_req->VHTCaps) != eSIR_SUCCESS)
- {
+ session, vht_caps) != eSIR_SUCCESS) {
/* Could not update hash table entry at DPH with rateset */
lim_log(mac_ctx, LOGE,
FL("Couldn't update hash entry for aid=%d, MacAddr: "
diff --git a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
index 8e267663c73d..81f8714bfab8 100644
--- a/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
+++ b/core/mac/src/pe/lim/lim_process_assoc_rsp_frame.c
@@ -172,8 +172,8 @@ void lim_update_assoc_sta_datas(tpAniSirGlobal mac_ctx,
if (assoc_rsp->VHTCaps.present)
vht_caps = &assoc_rsp->VHTCaps;
- else if (assoc_rsp->vendor2_ie.VHTCaps.present)
- vht_caps = &assoc_rsp->vendor2_ie.VHTCaps;
+ else if (assoc_rsp->vendor_vht_ie.VHTCaps.present)
+ vht_caps = &assoc_rsp->vendor_vht_ie.VHTCaps;
if (IS_DOT11_MODE_VHT(session_entry->dot11mode)) {
if ((vht_caps != NULL) && vht_caps->present) {
diff --git a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
index 1c914142c3d6..09e5c52f867e 100644
--- a/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_mlm_req_messages.c
@@ -595,6 +595,10 @@ lim_mlm_add_bss(tpAniSirGlobal mac_ctx,
if (QDF_IBSS_MODE == addbss_param->halPersona) {
addbss_param->nss_2g = mac_ctx->vdev_type_nss_2g.ibss;
addbss_param->nss_5g = mac_ctx->vdev_type_nss_5g.ibss;
+ addbss_param->tx_aggregation_size =
+ mac_ctx->roam.configParam.tx_aggregation_size;
+ addbss_param->rx_aggregation_size =
+ mac_ctx->roam.configParam.rx_aggregation_size;
}
lim_log(mac_ctx, LOG2, FL("dot11_mode:%d nss value:%d"),
addbss_param->dot11_mode, addbss_param->nss);
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index 347198956135..df4cd348ad20 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -610,6 +610,8 @@ lim_configure_ap_start_bss_session(tpAniSirGlobal mac_ctx, tpPESession session,
session->ssidHidden = sme_start_bss_req->ssidHidden;
session->wps_state = sme_start_bss_req->wps_state;
session->sap_dot11mc = sme_start_bss_req->sap_dot11mc;
+ session->vendor_vht_sap =
+ sme_start_bss_req->vendor_vht_sap;
lim_get_short_slot_from_phy_mode(mac_ctx, session, session->gLimPhyMode,
&session->shortSlotTimeSupported);
session->isCoalesingInIBSSAllowed =
diff --git a/core/mac/src/pe/lim/lim_prop_exts_utils.c b/core/mac/src/pe/lim/lim_prop_exts_utils.c
index 26aa7ca55e9f..1f367b75a469 100644
--- a/core/mac/src/pe/lim/lim_prop_exts_utils.c
+++ b/core/mac/src/pe/lim/lim_prop_exts_utils.c
@@ -167,7 +167,7 @@ lim_extract_ap_capability(tpAniSirGlobal mac_ctx, uint8_t *p_ie,
session->vhtCapability) {
session->vhtCapabilityPresentInBeacon = 1;
if (((beacon_struct->Vendor1IEPresent &&
- beacon_struct->vendor2_ie.present &&
+ beacon_struct->vendor_vht_ie.present &&
beacon_struct->Vendor3IEPresent)) &&
(((beacon_struct->VHTCaps.txMCSMap & VHT_MCS_3x3_MASK) ==
VHT_MCS_3x3_MASK) &&
diff --git a/core/mac/src/pe/lim/lim_send_frames_host_roam.c b/core/mac/src/pe/lim/lim_send_frames_host_roam.c
index 5594dfc78843..50c86a6ff657 100644
--- a/core/mac/src/pe/lim/lim_send_frames_host_roam.c
+++ b/core/mac/src/pe/lim/lim_send_frames_host_roam.c
@@ -304,14 +304,14 @@ void lim_send_reassoc_req_with_ft_ies_mgmt_frame(tpAniSirGlobal mac_ctx,
pe_session->is_vendor_specific_vhtcaps) {
lim_log(mac_ctx, LOG1,
FL("Populate Vendor VHT IEs in Re-Assoc Request"));
- frm.vendor2_ie.present = 1;
- frm.vendor2_ie.type =
+ frm.vendor_vht_ie.present = 1;
+ frm.vendor_vht_ie.type =
pe_session->vendor_specific_vht_ie_type;
- frm.vendor2_ie.sub_type =
+ frm.vendor_vht_ie.sub_type =
pe_session->vendor_specific_vht_ie_sub_type;
- frm.vendor2_ie.VHTCaps.present = 1;
+ frm.vendor_vht_ie.VHTCaps.present = 1;
populate_dot11f_vht_caps(mac_ctx, pe_session,
- &frm.vendor2_ie.VHTCaps);
+ &frm.vendor_vht_ie.VHTCaps);
vht_enabled = true;
}
status = dot11f_get_packed_re_assoc_request_size(mac_ctx, &frm,
diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c
index 93408fc9f590..b10e5847a4aa 100644
--- a/core/mac/src/pe/lim/lim_send_management_frames.c
+++ b/core/mac/src/pe/lim/lim_send_management_frames.c
@@ -1243,7 +1243,24 @@ lim_send_assoc_rsp_mgmt_frame(tpAniSirGlobal mac_ctx,
populate_dot11f_vht_caps(mac_ctx, pe_session,
&frm.VHTCaps);
populate_dot11f_vht_operation(mac_ctx, pe_session,
- &frm.VHTOperation);
+ &frm.VHTOperation);
+ is_vht = true;
+ }
+ if (pe_session->vhtCapability &&
+ pe_session->vendor_vht_sap &&
+ (assoc_req != NULL) &&
+ assoc_req->vendor_vht_ie.VHTCaps.present) {
+ lim_log(mac_ctx, LOG1,
+ FL("Populate Vendor VHT IEs in Assoc Rsponse"));
+ frm.vendor_vht_ie.present = 1;
+ frm.vendor_vht_ie.type =
+ pe_session->vendor_specific_vht_ie_type;
+ frm.vendor_vht_ie.sub_type =
+ pe_session->vendor_specific_vht_ie_sub_type;
+
+ frm.vendor_vht_ie.VHTCaps.present = 1;
+ populate_dot11f_vht_caps(mac_ctx, pe_session,
+ &frm.vendor_vht_ie.VHTCaps);
is_vht = true;
}
populate_dot11f_ext_cap(mac_ctx, is_vht, &frm.ExtCap,
@@ -1812,15 +1829,15 @@ lim_send_assoc_req_mgmt_frame(tpAniSirGlobal mac_ctx,
pe_session->is_vendor_specific_vhtcaps) {
lim_log(mac_ctx, LOG1,
FL("Populate Vendor VHT IEs in Assoc Request"));
- frm->vendor2_ie.present = 1;
- frm->vendor2_ie.type =
+ frm->vendor_vht_ie.present = 1;
+ frm->vendor_vht_ie.type =
pe_session->vendor_specific_vht_ie_type;
- frm->vendor2_ie.sub_type =
+ frm->vendor_vht_ie.sub_type =
pe_session->vendor_specific_vht_ie_sub_type;
- frm->vendor2_ie.VHTCaps.present = 1;
+ frm->vendor_vht_ie.VHTCaps.present = 1;
populate_dot11f_vht_caps(mac_ctx, pe_session,
- &frm->vendor2_ie.VHTCaps);
+ &frm->vendor_vht_ie.VHTCaps);
vht_enabled = true;
}
if (pe_session->is_ext_caps_present)
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index 26d0190c47d5..60ee95534a28 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -1030,7 +1030,7 @@ lim_send_sme_disassoc_ind(tpAniSirGlobal pMac, tpDphHashNode pStaDs,
pSirSmeDisassocInd->sessionId = psessionEntry->smeSessionId;
pSirSmeDisassocInd->transactionId = psessionEntry->transactionId;
- pSirSmeDisassocInd->statusCode = pStaDs->mlmStaContext.disassocReason;
+ pSirSmeDisassocInd->statusCode = eSIR_SME_DEAUTH_STATUS;
pSirSmeDisassocInd->reasonCode = pStaDs->mlmStaContext.disassocReason;
qdf_mem_copy(pSirSmeDisassocInd->bssid.bytes, psessionEntry->bssId,
diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c
index d5068aae9b91..458e073c088d 100644
--- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c
+++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c
@@ -33,7 +33,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Mon Sep 19 14:42:34 2016 from the following file(s):
+ * Mon Oct 3 12:40:25 2016 from the following file(s):
*
* dot11f.frms
*
@@ -5949,25 +5949,25 @@ uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx,
#define SigIesec_chan_offset_ele (0x007f)
-static const tFFDefn FFS_vendor2_ie[] = {
+static const tFFDefn FFS_vendor_vht_ie[] = {
{ NULL, 0, 0, 0,},
};
-static const tIEDefn IES_vendor2_ie[] = {
- { offsetof(tDot11fIEvendor2_ie, VHTCaps), offsetof(tDot11fIEVHTCaps,
+static const tIEDefn IES_vendor_vht_ie[] = {
+ { offsetof(tDot11fIEvendor_vht_ie, VHTCaps), offsetof(tDot11fIEVHTCaps,
present), 0, "VHTCaps", 0, 14, 14, SigIeVHTCaps, {0, 0, 0, 0, 0},
0, DOT11F_EID_VHTCAPS, 0, },
- { offsetof(tDot11fIEvendor2_ie, VHTOperation),
+ { offsetof(tDot11fIEvendor_vht_ie, VHTOperation),
offsetof(tDot11fIEVHTOperation, present), 0, "VHTOperation",
0, 7, 7, SigIeVHTOperation, {0, 0, 0, 0, 0},
0, DOT11F_EID_VHTOPERATION, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },
};
-uint32_t dot11f_unpack_ie_vendor2_ie(tpAniSirGlobal pCtx,
- uint8_t *pBuf,
- uint8_t ielen,
- tDot11fIEvendor2_ie *pDst)
+uint32_t dot11f_unpack_ie_vendor_vht_ie(tpAniSirGlobal pCtx,
+ uint8_t *pBuf,
+ uint8_t ielen,
+ tDot11fIEvendor_vht_ie *pDst)
{
uint32_t status = DOT11F_PARSE_SUCCESS;
(void) pBuf; (void)ielen; /* Shutup the compiler */
@@ -5984,14 +5984,14 @@ uint32_t dot11f_unpack_ie_vendor2_ie(tpAniSirGlobal pCtx,
status |= unpack_core(pCtx,
pBuf,
ielen,
- FFS_vendor2_ie,
- IES_vendor2_ie,
+ FFS_vendor_vht_ie,
+ IES_vendor_vht_ie,
(uint8_t *)pDst,
sizeof(*pDst));
return status;
-} /* End dot11f_unpack_ie_vendor2_ie. */
+} /* End dot11f_unpack_ie_vendor_vht_ie. */
-#define SigIevendor2_ie (0x0080)
+#define SigIevendor_vht_ie (0x0080)
static const tFFDefn FFS_AddTSRequest[] = {
@@ -6208,10 +6208,10 @@ static const tIEDefn IES_AssocRequest[] = {
{ offsetof(tDot11fAssocRequest, QosMapSet), offsetof(tDot11fIEQosMapSet,
present), 0, "QosMapSet", 0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0},
0, DOT11F_EID_QOSMAPSET, 0, },
- { offsetof(tDot11fAssocRequest, vendor2_ie),
- offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
- 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fAssocRequest, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fAssocRequest, hs20vendor_ie),
offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0},
@@ -6336,10 +6336,10 @@ static const tIEDefn IES_AssocResponse[] = {
{ offsetof(tDot11fAssocResponse, QosMapSet), offsetof(tDot11fIEQosMapSet,
present), 0, "QosMapSet", 0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0},
0, DOT11F_EID_QOSMAPSET, 0, },
- { offsetof(tDot11fAssocResponse, vendor2_ie),
- offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
- 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fAssocResponse, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx,
@@ -6567,9 +6567,10 @@ static const tIEDefn IES_Beacon[] = {
{ offsetof(tDot11fBeacon, Vendor1IE), offsetof(tDot11fIEVendor1IE,
present), 0, "Vendor1IE", 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0},
3, DOT11F_EID_VENDOR1IE, 0, },
- { offsetof(tDot11fBeacon, vendor2_ie), offsetof(tDot11fIEvendor2_ie,
- present), 0, "vendor2_ie", 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fBeacon, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fBeacon, Vendor3IE), offsetof(tDot11fIEVendor3IE,
present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
3, DOT11F_EID_VENDOR3IE, 0, },
@@ -6768,9 +6769,10 @@ static const tIEDefn IES_Beacon2[] = {
{ offsetof(tDot11fBeacon2, Vendor1IE), offsetof(tDot11fIEVendor1IE,
present), 0, "Vendor1IE", 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0},
3, DOT11F_EID_VENDOR1IE, 0, },
- { offsetof(tDot11fBeacon2, vendor2_ie), offsetof(tDot11fIEvendor2_ie,
- present), 0, "vendor2_ie", 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fBeacon2, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fBeacon2, Vendor3IE), offsetof(tDot11fIEVendor3IE,
present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
3, DOT11F_EID_VENDOR3IE, 0, },
@@ -6965,9 +6967,10 @@ static const tIEDefn IES_BeaconIEs[] = {
{ offsetof(tDot11fBeaconIEs, Vendor1IE), offsetof(tDot11fIEVendor1IE,
present), 0, "Vendor1IE", 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0},
3, DOT11F_EID_VENDOR1IE, 0, },
- { offsetof(tDot11fBeaconIEs, vendor2_ie), offsetof(tDot11fIEvendor2_ie,
- present), 0, "vendor2_ie", 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fBeaconIEs, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fBeaconIEs, Vendor3IE), offsetof(tDot11fIEVendor3IE,
present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
3, DOT11F_EID_VENDOR3IE, 0, },
@@ -7573,10 +7576,10 @@ static const tIEDefn IES_ProbeResponse[] = {
{ offsetof(tDot11fProbeResponse, Vendor1IE), offsetof(tDot11fIEVendor1IE,
present), 0, "Vendor1IE", 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0},
3, DOT11F_EID_VENDOR1IE, 0, },
- { offsetof(tDot11fProbeResponse, vendor2_ie),
- offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
- 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fProbeResponse, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fProbeResponse, Vendor3IE), offsetof(tDot11fIEVendor3IE,
present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
3, DOT11F_EID_VENDOR3IE, 0, },
@@ -7831,10 +7834,10 @@ static const tIEDefn IES_ReAssocRequest[] = {
{ offsetof(tDot11fReAssocRequest, QosMapSet),
offsetof(tDot11fIEQosMapSet, present), 0, "QosMapSet",
0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QOSMAPSET, 0, },
- { offsetof(tDot11fReAssocRequest, vendor2_ie),
- offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
- 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fReAssocRequest, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{ offsetof(tDot11fReAssocRequest, hs20vendor_ie),
offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0},
@@ -7965,10 +7968,10 @@ static const tIEDefn IES_ReAssocResponse[] = {
{ offsetof(tDot11fReAssocResponse, QosMapSet),
offsetof(tDot11fIEQosMapSet, present), 0, "QosMapSet",
0, 2, 62, SigIeQosMapSet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QOSMAPSET, 0, },
- { offsetof(tDot11fReAssocResponse, vendor2_ie),
- offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
- 0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
- 3, DOT11F_EID_VENDOR2_IE, 0, },
+ { offsetof(tDot11fReAssocResponse, vendor_vht_ie),
+ offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie",
+ 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 0, 0},
+ 3, DOT11F_EID_VENDOR_VHT_IE, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx,
@@ -10274,13 +10277,13 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx,
sizeof(tDot11fIEsec_chan_offset_ele) *
countOffset));
break;
- case SigIevendor2_ie:
+ case SigIevendor_vht_ie:
status |=
- dot11f_unpack_ie_vendor2_ie(
+ dot11f_unpack_ie_vendor_vht_ie(
pCtx, pBufRemaining, len,
- (tDot11fIEvendor2_ie *)
+ (tDot11fIEvendor_vht_ie *)
(pFrm + pIe->offset +
- sizeof(tDot11fIEvendor2_ie) *
+ sizeof(tDot11fIEvendor_vht_ie) *
countOffset));
break;
default:
@@ -11453,8 +11456,8 @@ uint32_t dot11f_get_packed_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_get_packed_ie_hs20vendor_ie. */
-uint32_t dot11f_get_packed_ie_vendor2_ie(tpAniSirGlobal pCtx,
- tDot11fIEvendor2_ie *pIe, uint32_t *pnNeeded)
+uint32_t dot11f_get_packed_ie_vendor_vht_ie(tpAniSirGlobal pCtx,
+ tDot11fIEvendor_vht_ie *pIe, uint32_t *pnNeeded)
{
uint32_t status = DOT11F_PARSE_SUCCESS;
(void)pCtx;
@@ -11462,11 +11465,11 @@ uint32_t dot11f_get_packed_ie_vendor2_ie(tpAniSirGlobal pCtx,
*pnNeeded += 1;
*pnNeeded += 1;
status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded,
- IES_vendor2_ie);
+ IES_vendor_vht_ie);
break;
}
return status;
-} /* End dot11f_get_packed_ie_vendor2_ie. */
+} /* End dot11f_get_packed_ie_vendor_vht_ie. */
uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx,
tDot11fAddTSRequest *pFrm, uint32_t *pnNeeded)
@@ -12949,11 +12952,11 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx,
(pFrm + pIe->offset + offset * i))->
present;
break;
- case SigIevendor2_ie:
- offset = sizeof(tDot11fIEvendor2_ie);
+ case SigIevendor_vht_ie:
+ offset = sizeof(tDot11fIEvendor_vht_ie);
status |=
- dot11f_get_packed_ie_vendor2_ie(
- pCtx, (tDot11fIEvendor2_ie *)
+ dot11f_get_packed_ie_vendor_vht_ie(
+ pCtx, (tDot11fIEvendor_vht_ie *)
(pFrm + pIe->offset + offset * i),
pnNeeded);
break;
@@ -20413,17 +20416,17 @@ uint32_t dot11f_pack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx,
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_ie_sec_chan_offset_ele. */
-uint32_t dot11f_pack_ie_vendor2_ie(tpAniSirGlobal pCtx,
- tDot11fIEvendor2_ie *pSrc,
- uint8_t *pBuf,
- uint32_t nBuf,
- uint32_t *pnConsumed)
+uint32_t dot11f_pack_ie_vendor_vht_ie(tpAniSirGlobal pCtx,
+ tDot11fIEvendor_vht_ie *pSrc,
+ uint8_t *pBuf,
+ uint32_t nBuf,
+ uint32_t *pnConsumed)
{
uint8_t *pIeLen = 0;
uint32_t nConsumedOnEntry = *pnConsumed;
uint32_t nNeeded = 0U;
uint32_t status = DOT11F_PARSE_SUCCESS;
- status = dot11f_get_packed_ie_vendor2_ie(pCtx, pSrc, &nNeeded);
+ status = dot11f_get_packed_ie_vendor_vht_ie(pCtx, pSrc, &nNeeded);
if (!DOT11F_SUCCEEDED(status))
return status;
while (pSrc->present) {
@@ -20450,8 +20453,8 @@ uint32_t dot11f_pack_ie_vendor2_ie(tpAniSirGlobal pCtx,
pBuf,
nBuf,
pnConsumed,
- FFS_vendor2_ie,
- IES_vendor2_ie);
+ FFS_vendor_vht_ie,
+ IES_vendor_vht_ie);
break;
}
(void)pCtx;
@@ -20459,7 +20462,7 @@ uint32_t dot11f_pack_ie_vendor2_ie(tpAniSirGlobal pCtx,
*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
}
return status;
-} /* End dot11f_pack_ie_vendor2_ie. */
+} /* End dot11f_pack_ie_vendor_vht_ie. */
uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx,
tDot11fAddTSRequest *pFrm,
@@ -22402,12 +22405,12 @@ static uint32_t pack_core(tpAniSirGlobal pCtx,
sizeof(tDot11fIEsec_chan_offset_ele) * i),
pBufRemaining, nBufRemaining, &len);
break;
- case SigIevendor2_ie:
+ case SigIevendor_vht_ie:
status |=
- dot11f_pack_ie_vendor2_ie(
- pCtx, (tDot11fIEvendor2_ie *)
+ dot11f_pack_ie_vendor_vht_ie(
+ pCtx, (tDot11fIEvendor_vht_ie *)
(pSrc + pIe->offset +
- sizeof(tDot11fIEvendor2_ie) * i),
+ sizeof(tDot11fIEvendor_vht_ie) * i),
pBufRemaining, nBufRemaining, &len);
break;
default:
diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c
index 360c76a1df92..4cfb1fff3c6f 100644
--- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c
+++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c
@@ -2561,19 +2561,19 @@ tSirRetStatus sir_convert_probe_frame2_struct(tpAniSirGlobal pMac,
pProbeResp->Vendor1IEPresent = pr->Vendor1IE.present;
pProbeResp->Vendor3IEPresent = pr->Vendor3IE.present;
- pProbeResp->vendor2_ie.present = pr->vendor2_ie.present;
- if (pr->vendor2_ie.present) {
- pProbeResp->vendor2_ie.type = pr->vendor2_ie.type;
- pProbeResp->vendor2_ie.sub_type = pr->vendor2_ie.sub_type;
- }
- if (pr->vendor2_ie.VHTCaps.present) {
- qdf_mem_copy(&pProbeResp->vendor2_ie.VHTCaps,
- &pr->vendor2_ie.VHTCaps,
+ pProbeResp->vendor_vht_ie.present = pr->vendor_vht_ie.present;
+ if (pr->vendor_vht_ie.present) {
+ pProbeResp->vendor_vht_ie.type = pr->vendor_vht_ie.type;
+ pProbeResp->vendor_vht_ie.sub_type = pr->vendor_vht_ie.sub_type;
+ }
+ if (pr->vendor_vht_ie.VHTCaps.present) {
+ qdf_mem_copy(&pProbeResp->vendor_vht_ie.VHTCaps,
+ &pr->vendor_vht_ie.VHTCaps,
sizeof(tDot11fIEVHTCaps));
}
- if (pr->vendor2_ie.VHTOperation.present) {
- qdf_mem_copy(&pProbeResp->vendor2_ie.VHTOperation,
- &pr->vendor2_ie.VHTOperation,
+ if (pr->vendor_vht_ie.VHTOperation.present) {
+ qdf_mem_copy(&pProbeResp->vendor_vht_ie.VHTOperation,
+ &pr->vendor_vht_ie.VHTOperation,
sizeof(tDot11fIEVHTOperation));
}
/* Update HS 2.0 Information Element */
@@ -2798,6 +2798,22 @@ sir_convert_assoc_req_frame2_struct(tpAniSirGlobal pMac,
ext_cap->timing_meas, ext_cap->fine_time_meas_initiator,
ext_cap->fine_time_meas_responder);
}
+
+ pAssocReq->vendor_vht_ie.present = ar->vendor_vht_ie.present;
+ if (ar->vendor_vht_ie.present) {
+ pAssocReq->vendor_vht_ie.type = ar->vendor_vht_ie.type;
+ pAssocReq->vendor_vht_ie.sub_type = ar->vendor_vht_ie.sub_type;
+
+ if (ar->vendor_vht_ie.VHTCaps.present) {
+ qdf_mem_copy(&pAssocReq->vendor_vht_ie.VHTCaps,
+ &ar->vendor_vht_ie.VHTCaps,
+ sizeof(tDot11fIEVHTCaps));
+ lim_log(pMac, LOG1,
+ FL("Received Assoc Request with Vendor specific VHT Cap"));
+ lim_log_vht_cap(pMac, &pAssocReq->VHTCaps);
+ }
+ }
+
qdf_mem_free(ar);
return eSIR_SUCCESS;
@@ -2998,27 +3014,27 @@ sir_convert_assoc_resp_frame2_struct(tpAniSirGlobal pMac,
lim_log_qos_map_set(pMac, &pAssocRsp->QosMapSet);
}
- pAssocRsp->vendor2_ie.present = ar.vendor2_ie.present;
- if (ar.vendor2_ie.present) {
- pAssocRsp->vendor2_ie.type = ar.vendor2_ie.type;
- pAssocRsp->vendor2_ie.sub_type = ar.vendor2_ie.sub_type;
+ pAssocRsp->vendor_vht_ie.present = ar.vendor_vht_ie.present;
+ if (ar.vendor_vht_ie.present) {
+ pAssocRsp->vendor_vht_ie.type = ar.vendor_vht_ie.type;
+ pAssocRsp->vendor_vht_ie.sub_type = ar.vendor_vht_ie.sub_type;
}
if (ar.OBSSScanParameters.present) {
qdf_mem_copy(&pAssocRsp->obss_scanparams,
&ar.OBSSScanParameters,
sizeof(struct sDot11fIEOBSSScanParameters));
}
- if (ar.vendor2_ie.VHTCaps.present) {
- qdf_mem_copy(&pAssocRsp->vendor2_ie.VHTCaps,
- &ar.vendor2_ie.VHTCaps,
+ if (ar.vendor_vht_ie.VHTCaps.present) {
+ qdf_mem_copy(&pAssocRsp->vendor_vht_ie.VHTCaps,
+ &ar.vendor_vht_ie.VHTCaps,
sizeof(tDot11fIEVHTCaps));
lim_log(pMac, LOG1,
FL("Received Assoc Response with Vendor specific VHT Cap"));
lim_log_vht_cap(pMac, &pAssocRsp->VHTCaps);
}
- if (ar.vendor2_ie.VHTOperation.present) {
- qdf_mem_copy(&pAssocRsp->vendor2_ie.VHTOperation,
- &ar.vendor2_ie.VHTOperation,
+ if (ar.vendor_vht_ie.VHTOperation.present) {
+ qdf_mem_copy(&pAssocRsp->vendor_vht_ie.VHTOperation,
+ &ar.vendor_vht_ie.VHTOperation,
sizeof(tDot11fIEVHTOperation));
lim_log(pMac, LOG1,
FL("Received Assoc Response with Vendor specific VHT Oper"));
@@ -3733,22 +3749,23 @@ sir_parse_beacon_ie(tpAniSirGlobal pMac,
pBeaconStruct->Vendor1IEPresent = pBies->Vendor1IE.present;
pBeaconStruct->Vendor3IEPresent = pBies->Vendor3IE.present;
- pBeaconStruct->vendor2_ie.present = pBies->vendor2_ie.present;
- if (pBies->vendor2_ie.present) {
- pBeaconStruct->vendor2_ie.type = pBies->vendor2_ie.type;
- pBeaconStruct->vendor2_ie.sub_type = pBies->vendor2_ie.sub_type;
+ pBeaconStruct->vendor_vht_ie.present = pBies->vendor_vht_ie.present;
+ if (pBies->vendor_vht_ie.present) {
+ pBeaconStruct->vendor_vht_ie.type = pBies->vendor_vht_ie.type;
+ pBeaconStruct->vendor_vht_ie.sub_type =
+ pBies->vendor_vht_ie.sub_type;
}
- if (pBies->vendor2_ie.VHTCaps.present) {
- pBeaconStruct->vendor2_ie.VHTCaps.present = 1;
- qdf_mem_copy(&pBeaconStruct->vendor2_ie.VHTCaps,
- &pBies->vendor2_ie.VHTCaps,
+ if (pBies->vendor_vht_ie.VHTCaps.present) {
+ pBeaconStruct->vendor_vht_ie.VHTCaps.present = 1;
+ qdf_mem_copy(&pBeaconStruct->vendor_vht_ie.VHTCaps,
+ &pBies->vendor_vht_ie.VHTCaps,
sizeof(tDot11fIEVHTCaps));
}
- if (pBies->vendor2_ie.VHTOperation.present) {
- pBeaconStruct->vendor2_ie.VHTOperation.present = 1;
- qdf_mem_copy(&pBeaconStruct->vendor2_ie.VHTOperation,
- &pBies->vendor2_ie.VHTOperation,
+ if (pBies->vendor_vht_ie.VHTOperation.present) {
+ pBeaconStruct->vendor_vht_ie.VHTOperation.present = 1;
+ qdf_mem_copy(&pBeaconStruct->vendor_vht_ie.VHTOperation,
+ &pBies->vendor_vht_ie.VHTOperation,
sizeof(tDot11fIEVHTOperation));
}
if (pBies->ExtCap.present) {
@@ -4090,24 +4107,24 @@ sir_convert_beacon_frame2_struct(tpAniSirGlobal pMac,
pBeaconStruct->Vendor1IEPresent = pBeacon->Vendor1IE.present;
pBeaconStruct->Vendor3IEPresent = pBeacon->Vendor3IE.present;
- pBeaconStruct->vendor2_ie.present = pBeacon->vendor2_ie.present;
- if (pBeacon->vendor2_ie.present) {
- pBeaconStruct->vendor2_ie.type = pBeacon->vendor2_ie.type;
- pBeaconStruct->vendor2_ie.sub_type =
- pBeacon->vendor2_ie.sub_type;
+ pBeaconStruct->vendor_vht_ie.present = pBeacon->vendor_vht_ie.present;
+ if (pBeacon->vendor_vht_ie.present) {
+ pBeaconStruct->vendor_vht_ie.type = pBeacon->vendor_vht_ie.type;
+ pBeaconStruct->vendor_vht_ie.sub_type =
+ pBeacon->vendor_vht_ie.sub_type;
}
- if (pBeacon->vendor2_ie.present) {
+ if (pBeacon->vendor_vht_ie.present) {
PELOG1(lim_log(pMac, LOG1,
FL("Vendor Specific VHT caps present in Beacon Frame!"));
)
}
- if (pBeacon->vendor2_ie.VHTCaps.present) {
- qdf_mem_copy(&pBeaconStruct->vendor2_ie.VHTCaps,
- &pBeacon->vendor2_ie.VHTCaps,
+ if (pBeacon->vendor_vht_ie.VHTCaps.present) {
+ qdf_mem_copy(&pBeaconStruct->vendor_vht_ie.VHTCaps,
+ &pBeacon->vendor_vht_ie.VHTCaps,
sizeof(tDot11fIEVHTCaps));
}
- if (pBeacon->vendor2_ie.VHTOperation.present) {
- qdf_mem_copy(&pBeaconStruct->vendor2_ie.VHTOperation,
+ if (pBeacon->vendor_vht_ie.VHTOperation.present) {
+ qdf_mem_copy(&pBeaconStruct->vendor_vht_ie.VHTOperation,
&pBeacon->VHTOperation,
sizeof(tDot11fIEVHTOperation));
}
diff --git a/core/pld/inc/pld_common.h b/core/pld/inc/pld_common.h
index bcf647b0b1a4..4bb77b27cb94 100644
--- a/core/pld/inc/pld_common.h
+++ b/core/pld/inc/pld_common.h
@@ -379,4 +379,7 @@ void *pld_smmu_get_mapping(struct device *dev);
int pld_smmu_map(struct device *dev, phys_addr_t paddr,
uint32_t *iova_addr, size_t size);
unsigned int pld_socinfo_get_serial_number(struct device *dev);
+
+void pld_enable_irq(struct device *dev, unsigned int ce_id);
+void pld_disable_irq(struct device *dev, unsigned int ce_id);
#endif
diff --git a/core/sap/inc/sap_api.h b/core/sap/inc/sap_api.h
index d9f06b8bf7c3..1087fe2c44e0 100644
--- a/core/sap/inc/sap_api.h
+++ b/core/sap/inc/sap_api.h
@@ -589,8 +589,8 @@ typedef struct sap_Config {
uint8_t short_retry_limit;
uint8_t long_retry_limit;
uint8_t ampdu_size;
- tSirMacRateSet supp_rate_set;
- tSirMacRateSet extended_rate_set;
+ tSirMacRateSet supported_rates;
+ tSirMacRateSet extended_rates;
enum sap_acs_dfs_mode acs_dfs_mode;
} tsap_Config_t;
diff --git a/core/sap/src/sap_fsm.c b/core/sap/src/sap_fsm.c
index 8eef7af80814..1ed36bbdef35 100644
--- a/core/sap/src/sap_fsm.c
+++ b/core/sap/src/sap_fsm.c
@@ -4199,6 +4199,22 @@ sapconvert_to_csr_profile(tsap_Config_t *pconfig_params, eCsrRoamBssType bssType
}
profile->sap_dot11mc = pconfig_params->sap_dot11mc;
+ if (pconfig_params->supported_rates.numRates) {
+ qdf_mem_copy(profile->supported_rates.rate,
+ pconfig_params->supported_rates.rate,
+ pconfig_params->supported_rates.numRates);
+ profile->supported_rates.numRates =
+ pconfig_params->supported_rates.numRates;
+ }
+
+ if (pconfig_params->extended_rates.numRates) {
+ qdf_mem_copy(profile->extended_rates.rate,
+ pconfig_params->extended_rates.rate,
+ pconfig_params->extended_rates.numRates);
+ profile->extended_rates.numRates =
+ pconfig_params->extended_rates.numRates;
+ }
+
return eSAP_STATUS_SUCCESS; /* Success. */
}
diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h
index 07e9874784d9..517a01185aab 100644
--- a/core/sme/inc/csr_api.h
+++ b/core/sme/inc/csr_api.h
@@ -965,9 +965,10 @@ typedef struct tagCsrRoamProfile {
tSirAddIeParams addIeParams;
uint8_t sap_dot11mc;
uint8_t beacon_tx_rate;
- tSirMacRateSet supp_rate_set;
- tSirMacRateSet extended_rate_set;
+ tSirMacRateSet supported_rates;
+ tSirMacRateSet extended_rates;
bool do_not_roam;
+
} tCsrRoamProfile;
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
@@ -1215,6 +1216,7 @@ typedef struct tagCsrConfigParam {
uint8_t enable_txbf_sap_mode;
uint8_t enable2x2;
bool enableVhtFor24GHz;
+ bool vendor_vht_sap;
uint8_t enableMuBformee;
uint8_t enableVhtpAid;
uint8_t enableVhtGid;
@@ -1304,6 +1306,8 @@ typedef struct tagCsrConfigParam {
enum wmi_dwelltime_adaptive_mode scan_adaptive_dwell_mode;
enum wmi_dwelltime_adaptive_mode roamscan_adaptive_dwell_mode;
struct csr_sta_roam_policy_params sta_roam_policy_params;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
} tCsrConfigParam;
/* Tush */
diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h
index dd9dffafea2c..89bf7b20a3e9 100644
--- a/core/sme/inc/csr_internal.h
+++ b/core/sme/inc/csr_internal.h
@@ -663,9 +663,12 @@ typedef struct tagCsrConfig {
uint32_t edca_bk_aifs;
uint32_t edca_be_aifs;
bool enable_fatal_event;
+ bool vendor_vht_sap;
enum wmi_dwelltime_adaptive_mode scan_adaptive_dwell_mode;
enum wmi_dwelltime_adaptive_mode roamscan_adaptive_dwell_mode;
struct csr_sta_roam_policy_params sta_roam_policy;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
} tCsrConfig;
typedef struct tagCsrChannelPowerInfo {
diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h
index 15f845510ef9..cfbbe22ec405 100644
--- a/core/sme/inc/sme_api.h
+++ b/core/sme/inc/sme_api.h
@@ -1316,4 +1316,11 @@ QDF_STATUS sme_encrypt_decrypt_msg_deregister_callback(tHalHandle h_hal);
QDF_STATUS sme_encrypt_decrypt_msg(tHalHandle hal,
struct encrypt_decrypt_req_params *encrypt_decrypt_params);
+/**
+ * sme_set_cts2self_for_p2p_go() - sme function to set ini parms to FW.
+ * @hal: reference to the HAL
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS sme_set_cts2self_for_p2p_go(tHalHandle hal);
#endif /* #if !defined( __SME_API_H ) */
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index 57c167a44b1f..7bfe3c9ff9a4 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -1073,6 +1073,104 @@ bool sme_command_pending(tpAniSirGlobal pMac)
LL_ACCESS_NOLOCK);
}
+/**
+ * sme_get_sessionid_from_activelist() - gets session id
+ * @mac: mac context
+ *
+ * This function is used to get session id from sme command
+ * active list
+ *
+ * Return: returns session id
+ */
+uint32_t sme_get_sessionid_from_activelist(tpAniSirGlobal mac)
+{
+ tListElem *entry;
+ tSmeCmd *command;
+ uint32_t session_id = CSR_SESSION_ID_INVALID;
+
+ entry = csr_ll_peek_head(&mac->sme.smeCmdActiveList, LL_ACCESS_LOCK);
+ if (entry) {
+ command = GET_BASE_ADDR(entry, tSmeCmd, Link);
+ session_id = command->sessionId;
+ }
+
+ return session_id;
+}
+
+/**
+ * sme_state_info_dump() - prints state information of sme layer
+ * @buf: buffer pointer
+ * @size: size of buffer to be filled
+ *
+ * This function is used to dump state information of sme layer
+ *
+ * Return: None
+ */
+static void sme_state_info_dump(char **buf_ptr, uint16_t *size)
+{
+ uint32_t session_id, active_session_id;
+ tHalHandle hal;
+ tpAniSirGlobal mac;
+ uint16_t len = 0;
+ char *buf = *buf_ptr;
+ eCsrConnectState connect_state;
+
+ hal = cds_get_context(QDF_MODULE_ID_SME);
+ if (hal == NULL) {
+ QDF_ASSERT(0);
+ return;
+ }
+
+ mac = PMAC_STRUCT(hal);
+ sms_log(mac, LOG1, FL("size of buffer: %d"), *size);
+
+ active_session_id = sme_get_sessionid_from_activelist(mac);
+ if (active_session_id != CSR_SESSION_ID_INVALID) {
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n active command sessionid %d", active_session_id);
+ }
+
+ for (session_id = 0; session_id < CSR_ROAM_SESSION_MAX; session_id++) {
+ if (CSR_IS_SESSION_VALID(mac, session_id)) {
+ connect_state =
+ mac->roam.roamSession[session_id].connectState;
+ if ((eCSR_ASSOC_STATE_TYPE_INFRA_ASSOCIATED ==
+ connect_state)
+ || (eCSR_ASSOC_STATE_TYPE_INFRA_CONNECTED ==
+ connect_state)) {
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n NeighborRoamState: %d",
+ mac->roam.neighborRoamInfo[session_id].
+ neighborRoamState);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n RoamState: %d", mac->roam.
+ curState[session_id]);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n RoamSubState: %d", mac->roam.
+ curSubState[session_id]);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n ConnectState: %d",
+ connect_state);
+ }
+ }
+ }
+
+ *size -= len;
+ *buf_ptr += len;
+}
+
+/**
+ * sme_register_debug_callback() - registration function sme layer
+ * to print sme state information
+ *
+ * Return: None
+ */
+static void sme_register_debug_callback(void)
+{
+ qdf_register_debug_callback(QDF_MODULE_ID_SME, &sme_state_info_dump);
+}
+
+
/* Global APIs */
/**
@@ -1134,6 +1232,7 @@ QDF_STATUS sme_open(tHalHandle hHal)
}
sme_p2p_open(pMac);
sme_trace_init(pMac);
+ sme_register_debug_callback();
return status;
}
@@ -16715,3 +16814,28 @@ QDF_STATUS sme_encrypt_decrypt_msg_deregister_callback(tHalHandle h_hal)
}
return status;
}
+
+QDF_STATUS sme_set_cts2self_for_p2p_go(tHalHandle hal_handle)
+{
+ cds_msg_t message;
+ void *wma_handle;
+
+ wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+ if (!wma_handle) {
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
+ "wma_handle is NULL");
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ message.bodyptr = NULL;
+ message.type = WMA_SET_CTS2SELF_FOR_STA;
+
+ if (QDF_STATUS_SUCCESS !=
+ wma_set_cts2self_for_p2p_go(wma_handle, true)) {
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
+ "%s: Failed to set cts2self for p2p GO to firmware",
+ __func__);
+ return QDF_STATUS_E_FAILURE;
+ }
+ return QDF_STATUS_SUCCESS;
+}
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index ad3768c3b13e..300ce13d1556 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -2427,6 +2427,8 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pParam->isRoamOffloadEnabled;
#endif
pMac->roam.configParam.obssEnabled = pParam->obssEnabled;
+ pMac->roam.configParam.vendor_vht_sap =
+ pParam->vendor_vht_sap;
pMac->roam.configParam.conc_custom_rule1 =
pParam->conc_custom_rule1;
pMac->roam.configParam.conc_custom_rule2 =
@@ -2518,6 +2520,11 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
pMac->roam.configParam.sta_roam_policy.skip_unsafe_channels =
pParam->sta_roam_policy_params.skip_unsafe_channels;
+ pMac->roam.configParam.tx_aggregation_size =
+ pParam->tx_aggregation_size;
+ pMac->roam.configParam.rx_aggregation_size =
+ pParam->rx_aggregation_size;
+
}
return status;
}
@@ -2648,8 +2655,10 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->enable_dot11p = pMac->enable_dot11p;
csr_set_channels(pMac, pParam);
pParam->obssEnabled = cfg_params->obssEnabled;
+ pParam->vendor_vht_sap =
+ pMac->roam.configParam.vendor_vht_sap;
pParam->roam_dense_rssi_thresh_offset =
- cfg_params->roam_params.dense_rssi_thresh_offset;
+ cfg_params->roam_params.dense_rssi_thresh_offset;
pParam->roam_dense_min_aps =
cfg_params->roam_params.dense_min_aps_cnt;
pParam->roam_dense_traffic_thresh =
@@ -2726,6 +2735,10 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pMac->roam.configParam.sta_roam_policy.dfs_mode;
pParam->sta_roam_policy_params.skip_unsafe_channels =
pMac->roam.configParam.sta_roam_policy.skip_unsafe_channels;
+ pParam->tx_aggregation_size =
+ pMac->roam.configParam.tx_aggregation_size;
+ pParam->rx_aggregation_size =
+ pMac->roam.configParam.rx_aggregation_size;
return QDF_STATUS_SUCCESS;
}
@@ -7315,6 +7328,20 @@ QDF_STATUS csr_roam_copy_profile(tpAniSirGlobal pMac,
}
qdf_mem_copy(&pDstProfile->addIeParams, &pSrcProfile->addIeParams,
sizeof(tSirAddIeParams));
+ if (pSrcProfile->supported_rates.numRates) {
+ qdf_mem_copy(pDstProfile->supported_rates.rate,
+ pSrcProfile->supported_rates.rate,
+ pSrcProfile->supported_rates.numRates);
+ pDstProfile->supported_rates.numRates =
+ pSrcProfile->supported_rates.numRates;
+ }
+ if (pSrcProfile->extended_rates.numRates) {
+ qdf_mem_copy(pDstProfile->extended_rates.rate,
+ pSrcProfile->extended_rates.rate,
+ pSrcProfile->extended_rates.numRates);
+ pDstProfile->extended_rates.numRates =
+ pSrcProfile->extended_rates.numRates;
+ }
end:
if (!QDF_IS_STATUS_SUCCESS(status)) {
csr_release_profile(pMac, pDstProfile);
@@ -12517,12 +12544,11 @@ uint8_t csr_roam_get_ibss_start_channel_number24(tpAniSirGlobal pMac)
return channel;
}
-
/**
* csr_populate_basic_rates() - populates OFDM or CCK rates
* @rates: rate struct to populate
- * @type: true: ofdm rates, false: cck rates
- * @masked: indicates if rates are to be masked with
+ * @is_ofdm_rates: true: ofdm rates, false: cck rates
+ * @is_basic_rates: indicates if rates are to be masked with
* CSR_DOT11_BASIC_RATE_MASK
*
* This function will populate OFDM or CCK rates
@@ -12530,8 +12556,10 @@ uint8_t csr_roam_get_ibss_start_channel_number24(tpAniSirGlobal pMac)
* Return: void
*/
static void
-csr_populate_basic_rates(tSirMacRateSet *rate_set, bool type, bool masked)
+csr_populate_basic_rates(tSirMacRateSet *rate_set, bool is_ofdm_rates,
+ bool is_basic_rates)
{
+ int i = 0;
uint8_t ofdm_rates[8] = {
SIR_MAC_RATE_6,
SIR_MAC_RATE_9,
@@ -12549,23 +12577,30 @@ csr_populate_basic_rates(tSirMacRateSet *rate_set, bool type, bool masked)
SIR_MAC_RATE_11
};
- if (type == true) {
+ if (is_ofdm_rates == true) {
rate_set->numRates = 8;
qdf_mem_copy(rate_set->rate, ofdm_rates, sizeof(ofdm_rates));
- if (masked) {
+ if (is_basic_rates) {
rate_set->rate[0] |= CSR_DOT11_BASIC_RATE_MASK;
rate_set->rate[2] |= CSR_DOT11_BASIC_RATE_MASK;
rate_set->rate[4] |= CSR_DOT11_BASIC_RATE_MASK;
}
+ for (i = 0; i < rate_set->numRates; i++)
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
+ FL("Default OFDM rate is %2x"), rate_set->rate[i]);
} else {
rate_set->numRates = 4;
qdf_mem_copy(rate_set->rate, cck_rates, sizeof(cck_rates));
- if (masked) {
+ if (is_basic_rates) {
rate_set->rate[0] |= CSR_DOT11_BASIC_RATE_MASK;
rate_set->rate[1] |= CSR_DOT11_BASIC_RATE_MASK;
rate_set->rate[2] |= CSR_DOT11_BASIC_RATE_MASK;
rate_set->rate[3] |= CSR_DOT11_BASIC_RATE_MASK;
}
+ for (i = 0; i < rate_set->numRates; i++)
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
+ FL("Default CCK rate is %2x"), rate_set->rate[i]);
+
}
}
@@ -12601,6 +12636,41 @@ csr_convert_mode_to_nw_type(eCsrCfgDot11Mode dot11_mode, eCsrBand band)
}
/**
+ * csr_populate_supported_rates_from_hostapd() - populates operational
+ * and extended rates.
+ * from hostapd.conf file
+ * @opr_rates: rate struct to populate operational rates
+ * @ext_rates: rate struct to populate extended rates
+ * @profile: bss profile
+ *
+ * Return: void
+ */
+static void csr_populate_supported_rates_from_hostapd(tSirMacRateSet *opr_rates,
+ tSirMacRateSet *ext_rates,
+ tCsrRoamProfile *pProfile)
+{
+ int i = 0;
+ if (pProfile->supported_rates.numRates) {
+ opr_rates->numRates = pProfile->supported_rates.numRates;
+ qdf_mem_copy(opr_rates->rate,
+ pProfile->supported_rates.rate,
+ pProfile->supported_rates.numRates);
+ for (i = 0; i < opr_rates->numRates; i++)
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
+ FL("Supported Rate is %2x"), opr_rates->rate[i]);
+ }
+ if (pProfile->extended_rates.numRates) {
+ ext_rates->numRates =
+ pProfile->extended_rates.numRates;
+ qdf_mem_copy(ext_rates->rate,
+ pProfile->extended_rates.rate,
+ pProfile->extended_rates.numRates);
+ for (i = 0; i < ext_rates->numRates; i++)
+ QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
+ FL("Extended Rate is %2x"), ext_rates->rate[i]);
+ }
+}
+/**
* csr_roam_get_bss_start_parms() - get bss start param from profile
* @pMac: mac global context
* @pProfile: roam profile
@@ -12642,58 +12712,77 @@ csr_roam_get_bss_start_parms(tpAniSirGlobal pMac,
nw_type = csr_convert_mode_to_nw_type(pParam->uCfgDot11Mode, band);
ext_rates->numRates = 0;
-
- switch (nw_type) {
- default:
- sms_log(pMac, LOGE, FL("sees an unknown pSirNwType (%d)"),
- nw_type);
- case eSIR_11A_NW_TYPE:
- csr_populate_basic_rates(opr_rates, true, true);
- if (eCSR_OPERATING_CHANNEL_ANY != tmp_opr_ch) {
- opr_ch = tmp_opr_ch;
- break;
- }
- opr_ch = csr_roam_get_ibss_start_channel_number50(pMac);
- if (0 == opr_ch &&
- CSR_IS_PHY_MODE_DUAL_BAND(pProfile->phyMode) &&
- CSR_IS_PHY_MODE_DUAL_BAND(pMac->roam.configParam.phyMode)) {
- /*
- * We could not find a 5G channel by auto pick, let's
- * try 2.4G channels. We only do this here because
- * csr_roam_get_phy_mode_band_for_bss always picks 11a
- * for AUTO
- */
- nw_type = eSIR_11B_NW_TYPE;
- opr_ch = csr_roam_get_ibss_start_channel_number24(pMac);
- csr_populate_basic_rates(opr_rates, false, true);
- }
- break;
- case eSIR_11B_NW_TYPE:
- csr_populate_basic_rates(opr_rates, false, true);
- if (eCSR_OPERATING_CHANNEL_ANY == tmp_opr_ch)
- opr_ch = csr_roam_get_ibss_start_channel_number24(pMac);
- else
- opr_ch = tmp_opr_ch;
- break;
- case eSIR_11G_NW_TYPE:
- /* For P2P Client and P2P GO, disable 11b rates */
- if ((pProfile->csrPersona == QDF_P2P_CLIENT_MODE)
- || (pProfile->csrPersona == QDF_P2P_GO_MODE)
- || (eCSR_CFG_DOT11_MODE_11G_ONLY ==
- pParam->uCfgDot11Mode)) {
+ /*
+ * hostapd.conf will populate its basic and extended rates
+ * as per hw_mode but if acs in ini is enabled, driver should
+ * ignore basic and extended rates from hostapd.conf and should
+ * populate default rates.
+ */
+ if (pProfile->supported_rates.numRates ||
+ pProfile->extended_rates.numRates) {
+ csr_populate_supported_rates_from_hostapd(opr_rates,
+ ext_rates, pProfile);
+ pParam->operationChn = tmp_opr_ch;
+ } else {
+ switch (nw_type) {
+ default:
+ sms_log(pMac, LOGE,
+ FL("sees an unknown pSirNwType (%d)"),
+ nw_type);
+ case eSIR_11A_NW_TYPE:
csr_populate_basic_rates(opr_rates, true, true);
- } else {
+ if (eCSR_OPERATING_CHANNEL_ANY != tmp_opr_ch) {
+ opr_ch = tmp_opr_ch;
+ break;
+ }
+ opr_ch = csr_roam_get_ibss_start_channel_number50(pMac);
+ if (0 == opr_ch &&
+ CSR_IS_PHY_MODE_DUAL_BAND(pProfile->phyMode) &&
+ CSR_IS_PHY_MODE_DUAL_BAND(
+ pMac->roam.configParam.phyMode)) {
+ /*
+ * We could not find a 5G channel by auto pick,
+ * let's try 2.4G channels. We only do this here
+ * because csr_roam_get_phy_mode_band_for_bss
+ * always picks 11a for AUTO
+ */
+ nw_type = eSIR_11B_NW_TYPE;
+ opr_ch =
+ csr_roam_get_ibss_start_channel_number24(pMac);
+ csr_populate_basic_rates(opr_rates, false,
+ true);
+ }
+ break;
+ case eSIR_11B_NW_TYPE:
csr_populate_basic_rates(opr_rates, false, true);
- csr_populate_basic_rates(ext_rates, true, false);
+ if (eCSR_OPERATING_CHANNEL_ANY == tmp_opr_ch)
+ opr_ch =
+ csr_roam_get_ibss_start_channel_number24(pMac);
+ else
+ opr_ch = tmp_opr_ch;
+ break;
+ case eSIR_11G_NW_TYPE:
+ /* For P2P Client and P2P GO, disable 11b rates */
+ if ((pProfile->csrPersona == QDF_P2P_CLIENT_MODE) ||
+ (pProfile->csrPersona == QDF_P2P_GO_MODE) ||
+ (eCSR_CFG_DOT11_MODE_11G_ONLY ==
+ pParam->uCfgDot11Mode)) {
+ csr_populate_basic_rates(opr_rates, true, true);
+ } else {
+ csr_populate_basic_rates(opr_rates, false,
+ true);
+ csr_populate_basic_rates(ext_rates, true,
+ false);
+ }
+ if (eCSR_OPERATING_CHANNEL_ANY == tmp_opr_ch)
+ opr_ch =
+ csr_roam_get_ibss_start_channel_number24(pMac);
+ else
+ opr_ch = tmp_opr_ch;
+ break;
}
-
- if (eCSR_OPERATING_CHANNEL_ANY == tmp_opr_ch)
- opr_ch = csr_roam_get_ibss_start_channel_number24(pMac);
- else
- opr_ch = tmp_opr_ch;
- break;
+ pParam->operationChn = opr_ch;
}
- pParam->operationChn = opr_ch;
pParam->sirNwType = nw_type;
pParam->ch_params.ch_width = pProfile->ch_params.ch_width;
pParam->ch_params.center_freq_seg0 =
@@ -14197,10 +14286,11 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
pIes->VHTCaps.numSoundingDim)
txBFCsnValue = QDF_MIN(txBFCsnValue,
pIes->VHTCaps.numSoundingDim);
- else if (IS_BSS_VHT_CAPABLE(pIes->vendor2_ie.VHTCaps)
- && pIes->vendor2_ie.VHTCaps.numSoundingDim)
+ else if (IS_BSS_VHT_CAPABLE(pIes->vendor_vht_ie.VHTCaps)
+ && pIes->vendor_vht_ie.VHTCaps.numSoundingDim)
txBFCsnValue = QDF_MIN(txBFCsnValue,
- pIes->vendor2_ie.VHTCaps.numSoundingDim);
+ pIes->vendor_vht_ie.
+ VHTCaps.numSoundingDim);
}
csr_join_req->vht_config.csnof_beamformer_antSup = txBFCsnValue;
@@ -14989,6 +15079,8 @@ QDF_STATUS csr_send_mb_start_bss_req_msg(tpAniSirGlobal pMac, uint32_t sessionId
sizeof(pParam->addIeParams));
pMsg->obssEnabled = pMac->roam.configParam.obssEnabled;
pMsg->sap_dot11mc = pParam->sap_dot11mc;
+ pMsg->vendor_vht_sap =
+ pMac->roam.configParam.vendor_vht_sap;
return cds_send_mb_message_to_mac(pMsg);
}
@@ -15224,6 +15316,10 @@ QDF_STATUS csr_process_add_sta_session_command(tpAniSirGlobal pMac,
add_sta_self_req->sub_type = pAddStaReq->subType;
add_sta_self_req->nss_2g = nss_2g;
add_sta_self_req->nss_5g = nss_5g;
+ add_sta_self_req->tx_aggregation_size =
+ pMac->roam.configParam.tx_aggregation_size;
+ add_sta_self_req->rx_aggregation_size =
+ pMac->roam.configParam.rx_aggregation_size;
msg.type = WMA_ADD_STA_SELF_REQ;
msg.reserved = 0;
diff --git a/core/sme/src/csr/csr_util.c b/core/sme/src/csr/csr_util.c
index bbcecf077bec..5aadb0a1f0b1 100644
--- a/core/sme/src/csr/csr_util.c
+++ b/core/sme/src/csr/csr_util.c
@@ -1467,7 +1467,7 @@ QDF_STATUS csr_get_phy_mode_from_bss(tpAniSirGlobal pMac,
if (pIes->HTCaps.present) {
phyMode = eCSR_DOT11_MODE_11n;
if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) ||
- IS_BSS_VHT_CAPABLE(pIes->vendor2_ie.VHTCaps))
+ IS_BSS_VHT_CAPABLE(pIes->vendor_vht_ie.VHTCaps))
phyMode = eCSR_DOT11_MODE_11ac;
}
*pPhyMode = phyMode;
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h
index f22aea6dac5d..d2f86a0838ac 100644
--- a/core/wma/inc/wma.h
+++ b/core/wma/inc/wma.h
@@ -991,6 +991,7 @@ struct wma_txrx_node {
uint8_t wep_default_key_idx;
tSirHostOffloadReq arp_offload_req;
tSirHostOffloadReq ns_offload_req;
+ bool is_vdev_valid;
};
#if defined(QCA_WIFI_FTM)
@@ -1070,6 +1071,18 @@ struct dbs_hw_mode_info {
uint32_t *hw_mode_list;
};
+/**
+ * struct mac_ss_bw_info - hw_mode_list PHY/MAC params for each MAC
+ * @mac_tx_stream: Max TX stream
+ * @mac_rx_stream: Max RX stream
+ * @mac_bw: Max bandwidth
+ */
+struct mac_ss_bw_info {
+ uint32_t mac_tx_stream;
+ uint32_t mac_rx_stream;
+ uint32_t mac_bw;
+};
+
/* Current HTC credit is 2, pool size of 50 is sufficient */
#define WMI_DESC_POOL_MAX 50
diff --git a/core/wma/inc/wma_api.h b/core/wma/inc/wma_api.h
index dcd121e37fdb..295973ba2bc7 100644
--- a/core/wma/inc/wma_api.h
+++ b/core/wma/inc/wma_api.h
@@ -192,7 +192,6 @@ QDF_STATUS wma_get_hw_mode_from_idx(uint32_t idx,
struct sir_hw_mode_params *hw_mode);
int8_t wma_get_num_dbs_hw_modes(void);
bool wma_is_hw_dbs_capable(void);
-bool wma_is_hw_agile_dfs_capable(void);
int8_t wma_get_mac_id_of_vdev(uint32_t vdev_id);
void wma_update_intf_hw_mode_params(uint32_t vdev_id, uint32_t mac_id,
uint32_t cfgd_hw_mode_index);
@@ -202,7 +201,6 @@ void wma_set_dbs_capability_ut(uint32_t dbs);
QDF_STATUS wma_get_dbs_hw_modes(bool *one_by_one_dbs, bool *two_by_two_dbs);
QDF_STATUS wma_get_current_hw_mode(struct sir_hw_mode_params *hw_mode);
bool wma_is_dbs_enable(void);
-bool wma_is_agile_dfs_enable(void);
QDF_STATUS wma_get_updated_scan_config(uint32_t *scan_config,
bool dbs_scan,
bool dbs_plus_agile_scan,
@@ -303,4 +301,19 @@ void wma_process_pdev_hw_mode_trans_ind(void *wma,
QDF_STATUS wma_set_powersave_config(uint8_t val);
QDF_STATUS wma_encrypt_decrypt_msg(WMA_HANDLE wma,
struct encrypt_decrypt_req_params *encrypt_decrypt_params);
+
+/**
+ * wma_set_cts2self_for_p2p_go() - set CTS2SELF command for P2P GO.
+ * @wma_handle: pointer to wma handle.
+ * @cts2self_for_p2p_go: value needs to set to firmware.
+ *
+ * At the time of driver startup, inform about ini parma to FW that
+ * if legacy client connects to P2P GO, stop using NOA for P2P GO.
+ *
+ * Return: QDF_STATUS.
+ */
+QDF_STATUS wma_set_cts2self_for_p2p_go(void *wma_handle,
+ uint32_t cts2self_for_p2p_go);
+QDF_STATUS wma_set_tx_rx_aggregation_size
+ (struct sir_set_tx_rx_aggregation_size *tx_rx_aggregation_size);
#endif
diff --git a/core/wma/inc/wma_if.h b/core/wma/inc/wma_if.h
index 31939b60a393..ac553511ed98 100644
--- a/core/wma/inc/wma_if.h
+++ b/core/wma/inc/wma_if.h
@@ -514,6 +514,8 @@ typedef struct {
uint8_t nss_2g;
uint8_t nss_5g;
uint8_t beacon_tx_rate;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
} tAddBssParams, *tpAddBssParams;
/**
@@ -1151,6 +1153,8 @@ struct add_sta_self_params {
uint8_t nss_2g;
uint8_t nss_5g;
uint32_t status;
+ uint32_t tx_aggregation_size;
+ uint32_t rx_aggregation_size;
};
/**
diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h
index 89f06c9db0b5..143bc5b53d9a 100644
--- a/core/wma/inc/wma_types.h
+++ b/core/wma/inc/wma_types.h
@@ -467,6 +467,7 @@
#define WMA_ADD_BCN_FILTER_CMDID SIR_HAL_ADD_BCN_FILTER_CMDID
#define WMA_REMOVE_BCN_FILTER_CMDID SIR_HAL_REMOVE_BCN_FILTER_CMDID
#define WMA_SET_ADAPT_DWELLTIME_CONF_PARAMS SIR_HAL_SET_ADAPT_DWELLTIME_PARAMS
+#define WMA_SET_CTS2SELF_FOR_STA SIR_HAL_SET_CTS2SELF_FOR_STA
#define WDA_BPF_GET_CAPABILITIES_REQ SIR_HAL_BPF_GET_CAPABILITIES_REQ
#define WDA_BPF_SET_INSTRUCTIONS_REQ SIR_HAL_BPF_SET_INSTRUCTIONS_REQ
diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c
index d3d479e8f427..6a7d2084b79c 100644
--- a/core/wma/src/wma_dev_if.c
+++ b/core/wma/src/wma_dev_if.c
@@ -546,6 +546,8 @@ static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
if (!generate_rsp) {
WMA_LOGE("Call txrx detach w/o callback for vdev %d", vdev_id);
ol_txrx_vdev_detach(iface->handle, NULL, NULL);
+ iface->handle = NULL;
+ wma_handle->interfaces[vdev_id].is_vdev_valid = false;
goto out;
}
@@ -573,6 +575,8 @@ static QDF_STATUS wma_handle_vdev_detach(tp_wma_handle wma_handle,
}
WMA_LOGD("Call txrx detach with callback for vdev %d", vdev_id);
ol_txrx_vdev_detach(iface->handle, NULL, NULL);
+ iface->handle = NULL;
+ wma_handle->interfaces[vdev_id].is_vdev_valid = false;
/*
* send the response immediately if WMI_SERVICE_SYNC_DELETE_CMDS
@@ -1525,6 +1529,8 @@ ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
tSirMacHTCapabilityInfo *phtCapInfo;
cds_msg_t sme_msg = { 0 };
struct vdev_create_params params = { 0 };
+ u_int8_t vdev_id;
+ struct sir_set_tx_rx_aggregation_size tx_rx_aggregation_size;
if (NULL == mac) {
WMA_LOGE("%s: Failed to get mac", __func__);
@@ -1547,6 +1553,8 @@ ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
goto end;
}
+ vdev_id = self_sta_req->session_id;
+
txrx_vdev_type = wma_get_txrx_vdev_type(self_sta_req->type);
if (wlan_op_mode_unknown == txrx_vdev_type) {
@@ -1602,6 +1610,17 @@ ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
self_sta_req->self_mac_addr,
sizeof(wma_handle->interfaces[self_sta_req->session_id].
addr));
+
+ tx_rx_aggregation_size.tx_aggregation_size =
+ self_sta_req->tx_aggregation_size;
+ tx_rx_aggregation_size.rx_aggregation_size =
+ self_sta_req->rx_aggregation_size;
+ tx_rx_aggregation_size.vdev_id = self_sta_req->session_id;
+
+ status = wma_set_tx_rx_aggregation_size(&tx_rx_aggregation_size);
+ if (status != QDF_STATUS_SUCCESS)
+ WMA_LOGE("failed to set aggregation sizes(err=%d)", status);
+
switch (self_sta_req->type) {
case WMI_VDEV_TYPE_STA:
if (wlan_cfg_get_int(mac, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD,
@@ -1652,6 +1671,7 @@ ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
}
}
+ wma_handle->interfaces[vdev_id].is_vdev_valid = true;
ret = wma_vdev_set_param(wma_handle->wmi_handle,
self_sta_req->session_id,
WMI_VDEV_PARAM_MCC_RTSCTS_PROTECTION_ENABLE,
diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c
index 567ed6e7abe4..7bd92da1bd99 100644
--- a/core/wma/src/wma_features.c
+++ b/core/wma/src/wma_features.c
@@ -7919,6 +7919,71 @@ QDF_STATUS wma_set_bpf_instructions(tp_wma_handle wma,
}
/**
+ * wma_set_tx_rx_aggregation_size() - sets tx rx aggregation sizes
+ * @tx_rx_aggregation_size: aggregation size parameters
+ *
+ * This function sets tx rx aggregation sizes
+ *
+ * Return: VOS_STATUS_SUCCESS on success, error number otherwise
+ */
+QDF_STATUS wma_set_tx_rx_aggregation_size(
+ struct sir_set_tx_rx_aggregation_size *tx_rx_aggregation_size)
+{
+ tp_wma_handle wma_handle;
+ wmi_vdev_set_custom_aggr_size_cmd_fixed_param *cmd;
+ int32_t len;
+ wmi_buf_t buf;
+ u_int8_t *buf_ptr;
+ int ret;
+
+ wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+
+ if (!tx_rx_aggregation_size) {
+ WMA_LOGE("%s: invalid pointer", __func__);
+ return QDF_STATUS_E_INVAL;
+ }
+
+ if (!wma_handle) {
+ WMA_LOGE("%s: WMA context is invald!", __func__);
+ return QDF_STATUS_E_INVAL;
+ }
+
+ len = sizeof(*cmd);
+ buf = wmi_buf_alloc(wma_handle->wmi_handle, len);
+
+ if (!buf) {
+ WMA_LOGE("%s: Failed allocate wmi buffer", __func__);
+ return QDF_STATUS_E_NOMEM;
+ }
+
+ buf_ptr = (u_int8_t *) wmi_buf_data(buf);
+ cmd = (wmi_vdev_set_custom_aggr_size_cmd_fixed_param *) buf_ptr;
+
+ WMITLV_SET_HDR(&cmd->tlv_header,
+ WMITLV_TAG_STRUC_wmi_vdev_set_custom_aggr_size_cmd_fixed_param,
+ WMITLV_GET_STRUCT_TLVLEN(
+ wmi_vdev_set_custom_aggr_size_cmd_fixed_param));
+
+ cmd->vdev_id = tx_rx_aggregation_size->vdev_id;
+ cmd->tx_aggr_size = tx_rx_aggregation_size->tx_aggregation_size;
+ cmd->rx_aggr_size = tx_rx_aggregation_size->rx_aggregation_size;
+
+ WMA_LOGI("tx aggr: %d rx aggr: %d vdev: %d",
+ cmd->tx_aggr_size, cmd->rx_aggr_size, cmd->vdev_id);
+
+ ret = wmi_unified_cmd_send(wma_handle->wmi_handle, buf, len,
+ WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID);
+ if (ret) {
+ WMA_LOGE("%s: Failed to send aggregation size command",
+ __func__);
+ wmi_buf_free(buf);
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ return QDF_STATUS_SUCCESS;
+}
+
+/**
* wma_p2p_lo_start() - P2P listen offload start
* @params: p2p listen offload parameters
*
diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c
index 00f1735cc44e..3b5f543c30ac 100644
--- a/core/wma/src/wma_main.c
+++ b/core/wma/src/wma_main.c
@@ -872,6 +872,11 @@ static void wma_process_cli_set_cmd(tp_wma_handle wma,
switch (privcmd->param_vp_dev) {
case VDEV_CMD:
+ if (!wma->interfaces[privcmd->param_vdev_id].is_vdev_valid) {
+ WMA_LOGE("%s Vdev id is not valid", __func__);
+ return ;
+ }
+
WMA_LOGD("vdev id %d pid %d pval %d", privcmd->param_vdev_id,
privcmd->param_id, privcmd->param_value);
ret = wma_vdev_set_param(wma->wmi_handle,
@@ -1668,6 +1673,146 @@ static void wma_init_max_no_of_peers(tp_wma_handle wma_handle,
struct wma_version_info g_wmi_version_info;
/**
+ * wma_state_info_dump() - prints state information of wma layer
+ * @buf: buffer pointer
+ * @size: size of buffer to be filled
+ *
+ * This function is used to dump state information of wma layer
+ *
+ * Return: None
+ */
+static void wma_state_info_dump(char **buf_ptr, uint16_t *size)
+{
+ tp_wma_handle wma_handle;
+ uint16_t len = 0;
+ char *buf = *buf_ptr;
+ struct wma_txrx_node *iface;
+ uint8_t vdev_id;
+
+ wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+ if (!wma_handle) {
+ WMA_LOGE("%s: WMA context is invald!", __func__);
+ return;
+ }
+
+ WMA_LOGI("%s: size of buffer: %d", __func__, *size);
+
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_pno_match_wake_up_count %d",
+ wma_handle->wow_pno_match_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_pno_complete_wake_up_count %d",
+ wma_handle->wow_pno_complete_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_gscan_wake_up_count %d",
+ wma_handle->wow_gscan_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_low_rssi_wake_up_count %d",
+ wma_handle->wow_low_rssi_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_rssi_breach_wake_up_count %d",
+ wma_handle->wow_rssi_breach_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_ucast_wake_up_count %d",
+ wma_handle->wow_ucast_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_bcast_wake_up_count %d",
+ wma_handle->wow_bcast_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_ipv4_mcast_wake_up_count %d",
+ wma_handle->wow_ipv4_mcast_wake_up_count);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_ipv6_mcast_ra_stats %d",
+ wma_handle->wow_ipv6_mcast_ra_stats);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_ipv6_mcast_ns_stats %d",
+ wma_handle->wow_ipv6_mcast_ns_stats);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n wow_ipv6_mcast_na_stats %d",
+ wma_handle->wow_ipv6_mcast_na_stats);
+
+ for (vdev_id = 0; vdev_id < wma_handle->max_bssid; vdev_id++) {
+ if (!wma_handle->interfaces[vdev_id].handle)
+ continue;
+
+ iface = &wma_handle->interfaces[vdev_id];
+
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n vdev_id %d",
+ vdev_id);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n conn_state %d",
+ iface->conn_state);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n dtimPeriod %d",
+ iface->dtimPeriod);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n chanmode %d",
+ iface->chanmode);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n vht_capable %d",
+ iface->vht_capable);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n ht_capable %d",
+ iface->ht_capable);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n chan_width %d",
+ iface->chan_width);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n vdev_active %d",
+ iface->vdev_active);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n vdev_up %d",
+ iface->vdev_up);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n aid %d",
+ iface->aid);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n rate_flags %d",
+ iface->rate_flags);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n nss %d",
+ iface->nss);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n tx_power %d",
+ iface->tx_power);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n max_tx_power %d",
+ iface->max_tx_power);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n nwType %d",
+ iface->nwType);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n tx_streams %d",
+ iface->tx_streams);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n rx_streams %d",
+ iface->rx_streams);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n chain_mask %d",
+ iface->chain_mask);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n nss_2g %d",
+ iface->nss_2g);
+ len += qdf_scnprintf(buf + len, *size - len,
+ "\n nss_5g %d",
+ iface->nss_5g);
+ }
+
+ *size -= len;
+ *buf_ptr += len;
+}
+
+/**
+ * wma_register_debug_callback() - registration function for wma layer
+ * to print wma state information
+ */
+static void wma_register_debug_callback(void)
+{
+ qdf_register_debug_callback(QDF_MODULE_ID_WMA, &wma_state_info_dump);
+}
+
+/**
* wma_open() - Allocate wma context and initialize it.
* @cds_context: cds context
* @wma_tgt_cfg_cb: tgt config callback fun
@@ -2152,6 +2297,8 @@ QDF_STATUS wma_open(void *cds_context,
wma_encrypt_decrypt_msg_handler,
WMA_RX_SERIALIZER_CTX);
wma_ndp_register_all_event_handlers(wma_handle);
+ wma_register_debug_callback();
+
return QDF_STATUS_SUCCESS;
err_dbglog_init:
@@ -4159,9 +4306,8 @@ void wma_dump_dbs_hw_mode(tp_wma_handle wma_handle)
WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(param),
WMI_DBS_HW_MODE_MAC1_RX_STREAMS_GET(param),
WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(param));
- WMA_LOGA("%s:[%d] DBS:%d Agile DFS:%d", __func__, i,
- WMI_DBS_HW_MODE_DBS_MODE_GET(param),
- WMI_DBS_HW_MODE_AGILE_DFS_GET(param));
+ WMA_LOGA("%s:[%d] DBS:%d", __func__, i,
+ WMI_DBS_HW_MODE_DBS_MODE_GET(param));
}
}
@@ -4801,6 +4947,200 @@ static void wma_print_populate_soc_caps(t_wma_handle *wma_handle)
}
/**
+ * wma_map_wmi_channel_width_to_hw_mode_bw() - returns bandwidth
+ * in terms of hw_mode_bandwidth
+ * @width: bandwidth in terms of wmi_channel_width
+ *
+ * This function returns the bandwidth in terms of hw_mode_bandwidth.
+ *
+ * Return: BW in terms of hw_mode_bandwidth.
+ */
+enum hw_mode_bandwidth wma_map_wmi_channel_width_to_hw_mode_bw(
+ wmi_channel_width width)
+{
+ switch (width) {
+ case WMI_CHAN_WIDTH_20:
+ return HW_MODE_20_MHZ;
+ case WMI_CHAN_WIDTH_40:
+ return HW_MODE_40_MHZ;
+ case WMI_CHAN_WIDTH_80:
+ return HW_MODE_80_MHZ;
+ case WMI_CHAN_WIDTH_160:
+ return HW_MODE_160_MHZ;
+ case WMI_CHAN_WIDTH_80P80:
+ return HW_MODE_80_PLUS_80_MHZ;
+ case WMI_CHAN_WIDTH_5:
+ return HW_MODE_5_MHZ;
+ case WMI_CHAN_WIDTH_10:
+ return HW_MODE_10_MHZ;
+ default:
+ return HW_MODE_BW_NONE;
+ }
+
+ return HW_MODE_BW_NONE;
+}
+
+/**
+ * wma_get_hw_mode_params() - get TX-RX stream and bandwidth
+ * supported from the capabilities.
+ * @caps: PHY capability
+ * @info: param to store TX-RX stream and BW information
+ *
+ * This function will calculate TX-RX stream and bandwidth supported
+ * as per the PHY capability, and assign to mac_ss_bw_info.
+ *
+ * Return: none
+ */
+static void wma_get_hw_mode_params(WMI_MAC_PHY_CAPABILITIES *caps,
+ struct mac_ss_bw_info *info)
+{
+ if (!caps) {
+ WMA_LOGE("%s: Invalid capabilities", __func__);
+ return;
+ }
+
+ info->mac_tx_stream = wma_get_num_of_setbits_from_bitmask(
+ QDF_MAX(caps->tx_chain_mask_2G,
+ caps->tx_chain_mask_5G));
+ info->mac_rx_stream = wma_get_num_of_setbits_from_bitmask(
+ QDF_MAX(caps->rx_chain_mask_2G,
+ caps->rx_chain_mask_5G));
+ info->mac_bw = wma_map_wmi_channel_width_to_hw_mode_bw(
+ QDF_MAX(caps->max_bw_supported_2G,
+ caps->max_bw_supported_5G));
+}
+
+/**
+ * wma_set_hw_mode_params() - sets TX-RX stream, bandwidth and
+ * DBS in hw_mode_list
+ * @wma_handle: pointer to wma global structure
+ * @mac0_ss_bw_info: TX-RX streams, BW for MAC0
+ * @mac1_ss_bw_info: TX-RX streams, BW for MAC1
+ * @pos: refers to hw_mode_index
+ * @dbs_mode: dbs_mode for the dbs_hw_mode
+ *
+ * This function sets TX-RX stream, bandwidth and DBS mode in
+ * hw_mode_list.
+ *
+ * Return: none
+ */
+static void wma_set_hw_mode_params(t_wma_handle *wma_handle,
+ struct mac_ss_bw_info mac0_ss_bw_info,
+ struct mac_ss_bw_info mac1_ss_bw_info,
+ uint32_t pos, uint32_t dbs_mode)
+{
+ WMI_DBS_HW_MODE_MAC0_TX_STREAMS_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac0_ss_bw_info.mac_tx_stream);
+ WMI_DBS_HW_MODE_MAC0_RX_STREAMS_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac0_ss_bw_info.mac_rx_stream);
+ WMI_DBS_HW_MODE_MAC0_BANDWIDTH_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac0_ss_bw_info.mac_bw);
+ WMI_DBS_HW_MODE_MAC1_TX_STREAMS_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac1_ss_bw_info.mac_tx_stream);
+ WMI_DBS_HW_MODE_MAC1_RX_STREAMS_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac1_ss_bw_info.mac_rx_stream);
+ WMI_DBS_HW_MODE_MAC1_BANDWIDTH_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ mac1_ss_bw_info.mac_bw);
+ WMI_DBS_HW_MODE_DBS_MODE_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ dbs_mode);
+ WMI_DBS_HW_MODE_AGILE_DFS_SET(
+ wma_handle->hw_mode.hw_mode_list[pos],
+ 0);
+}
+
+/**
+ * wma_update_hw_mode_list() - updates hw_mode_list
+ * @wma_handle: pointer to wma global structure
+ *
+ * This function updates hw_mode_list with tx_streams, rx_streams,
+ * bandwidth, dbs and agile dfs for each hw_mode.
+ *
+ * Returns: 0 for success else failure.
+ */
+static QDF_STATUS wma_update_hw_mode_list(t_wma_handle *wma_handle)
+{
+ struct extended_caps *phy_caps;
+ WMI_MAC_PHY_CAPABILITIES *tmp;
+ uint32_t i, dbs_mode, hw_config_type, j = 0;
+ struct mac_ss_bw_info mac0_ss_bw_info = {0};
+ struct mac_ss_bw_info mac1_ss_bw_info = {0};
+
+ if (!wma_handle) {
+ WMA_LOGE("%s: Invalid wma handle", __func__);
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ phy_caps = &wma_handle->phy_caps;
+ if (!phy_caps) {
+ WMA_LOGE("%s: Invalid phy capabilities", __func__);
+ return QDF_STATUS_SUCCESS;
+ }
+
+ if (!phy_caps->num_hw_modes.num_hw_modes) {
+ WMA_LOGE("%s: Number of HW modes: %d",
+ __func__, phy_caps->num_hw_modes.num_hw_modes);
+ return QDF_STATUS_SUCCESS;
+ }
+
+ /*
+ * This list was updated as part of service ready event. Re-populate
+ * HW mode list from the device capabilities.
+ */
+ if (wma_handle->hw_mode.hw_mode_list) {
+ qdf_mem_free(wma_handle->hw_mode.hw_mode_list);
+ wma_handle->hw_mode.hw_mode_list = NULL;
+ WMA_LOGI("%s: DBS list is freed", __func__);
+ }
+
+ wma_handle->num_dbs_hw_modes = phy_caps->num_hw_modes.num_hw_modes;
+ wma_handle->hw_mode.hw_mode_list =
+ qdf_mem_malloc(sizeof(*wma_handle->hw_mode.hw_mode_list) *
+ wma_handle->num_dbs_hw_modes);
+ if (!wma_handle->hw_mode.hw_mode_list) {
+ WMA_LOGE("%s: Memory allocation failed for DBS", __func__);
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ WMA_LOGA("%s: Updated HW mode list: Num modes:%d",
+ __func__, wma_handle->num_dbs_hw_modes);
+
+ for (i = 0; i < wma_handle->num_dbs_hw_modes; i++) {
+ /* Update for MAC0 */
+ tmp = &phy_caps->each_phy_cap_per_hwmode[j++];
+ wma_get_hw_mode_params(tmp, &mac0_ss_bw_info);
+ hw_config_type =
+ phy_caps->each_hw_mode_cap[i].hw_mode_config_type;
+ dbs_mode = 0;
+ mac1_ss_bw_info.mac_tx_stream = 0;
+ mac1_ss_bw_info.mac_rx_stream = 0;
+ mac1_ss_bw_info.mac_bw = 0;
+
+ /* SBS and DBS have dual MAC. Upto 2 MACs are considered. */
+ if ((hw_config_type == WMI_HW_MODE_DBS) ||
+ (hw_config_type == WMI_HW_MODE_SBS_PASSIVE) ||
+ (hw_config_type == WMI_HW_MODE_SBS)) {
+ /* Update for MAC1 */
+ tmp = &phy_caps->each_phy_cap_per_hwmode[j++];
+ wma_get_hw_mode_params(tmp, &mac1_ss_bw_info);
+ dbs_mode = 1;
+ }
+
+ /* Updating HW mode list */
+ wma_set_hw_mode_params(wma_handle, mac0_ss_bw_info,
+ mac1_ss_bw_info, i, dbs_mode);
+ }
+ wma_dump_dbs_hw_mode(wma_handle);
+ return QDF_STATUS_SUCCESS;
+}
+
+/**
* wma_populate_soc_caps() - populate entire SOC's capabilities
* @wma_handle: pointer to wma global structure
* @param_buf: pointer to param of service ready extension event from fw
@@ -4988,6 +5328,12 @@ int wma_rx_service_ready_ext_event(void *handle, uint8_t *event,
}
wma_populate_soc_caps(wma_handle, param_buf);
+ ret = wma_update_hw_mode_list(wma_handle);
+ if (QDF_IS_STATUS_ERROR(ret)) {
+ WMA_LOGE("Failed to update hw mode list");
+ return -EINVAL;
+ }
+
WMA_LOGA("WMA --> WMI_INIT_CMDID");
status = wmi_unified_send_saved_init_cmd(wma_handle->wmi_handle);
if (status != EOK)
@@ -6280,6 +6626,8 @@ QDF_STATUS wma_mc_process_msg(void *cds_context, cds_msg_t *msg)
case WDA_BPF_SET_INSTRUCTIONS_REQ:
wma_set_bpf_instructions(wma_handle, msg->bodyptr);
qdf_mem_free(msg->bodyptr);
+ case WMA_SET_CTS2SELF_FOR_STA:
+ wma_set_cts2self_for_p2p_go(wma_handle, true);
break;
case SIR_HAL_NDP_INITIATOR_REQ:
wma_handle_ndp_initiator_req(wma_handle, msg->bodyptr);
diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c
index 5a4690eb576c..a3223b2f6814 100644
--- a/core/wma/src/wma_mgmt.c
+++ b/core/wma/src/wma_mgmt.c
@@ -965,6 +965,8 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
cmd->peer_flags |= WMI_PEER_160MHZ;
cmd->peer_vht_caps = params->vht_caps;
+ if (params->p2pCapableSta)
+ cmd->peer_flags |= WMI_PEER_IS_P2P_CAPABLE;
if (params->rmfEnabled)
cmd->peer_flags |= WMI_PEER_PMF;
@@ -2655,6 +2657,32 @@ void wma_process_update_userpos(tp_wma_handle wma_handle,
}
+QDF_STATUS wma_set_cts2self_for_p2p_go(void *wma_handle,
+ uint32_t cts2self_for_p2p_go)
+{
+ int32_t ret;
+ tp_wma_handle wma = (tp_wma_handle)wma_handle;
+ struct pdev_params pdevparam;
+
+ pdevparam.param_id = WMI_PDEV_PARAM_CTS2SELF_FOR_P2P_GO_CONFIG;
+ pdevparam.param_value = cts2self_for_p2p_go;
+
+ ret = wmi_unified_pdev_param_send(wma->wmi_handle,
+ &pdevparam,
+ WMA_WILDCARD_PDEV_ID);
+ if (ret) {
+ WMA_LOGE("Fail to Set CTS2SELF for p2p GO %d",
+ cts2self_for_p2p_go);
+ return QDF_STATUS_E_FAILURE;
+ }
+
+ WMA_LOGD("Successfully Set CTS2SELF for p2p GO %d",
+ cts2self_for_p2p_go);
+
+ return QDF_STATUS_SUCCESS;
+}
+
+
/**
* wma_set_htconfig() - set ht config parameters to target
* @vdev_id: vdev id
diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c
index 945e139adfc2..b4aab11b8e34 100644
--- a/core/wma/src/wma_utils.c
+++ b/core/wma/src/wma_utils.c
@@ -2572,7 +2572,12 @@ static int8_t wma_get_matching_hw_mode_index(tp_wma_handle wma,
t_mac0_bw = WMI_DBS_HW_MODE_MAC0_BANDWIDTH_GET(
wma->hw_mode.hw_mode_list[i]);
- if (t_mac0_bw != mac0_bw)
+ /*
+ * Firmware advertises max bw capability as CBW 80+80
+ * for single MAC. Thus CBW 20/40/80 should also be
+ * supported, if CBW 80+80 is supported.
+ */
+ if (t_mac0_bw < mac0_bw)
continue;
t_mac1_tx_ss = WMI_DBS_HW_MODE_MAC1_TX_STREAMS_GET(
@@ -2587,7 +2592,7 @@ static int8_t wma_get_matching_hw_mode_index(tp_wma_handle wma,
t_mac1_bw = WMI_DBS_HW_MODE_MAC1_BANDWIDTH_GET(
wma->hw_mode.hw_mode_list[i]);
- if (t_mac1_bw != mac1_bw)
+ if (t_mac1_bw < mac1_bw)
continue;
dbs_mode = WMI_DBS_HW_MODE_DBS_MODE_GET(
@@ -2772,58 +2777,6 @@ bool wma_is_hw_dbs_capable(void)
}
/**
- * wma_is_hw_agile_dfs_capable() - Check if HW is agile DFS capable
- *
- * Checks if the HW is agile DFS capable
- *
- * Return: true if the HW is agile DFS capable
- */
-bool wma_is_hw_agile_dfs_capable(void)
-{
- tp_wma_handle wma;
- uint32_t param, i, found = 0;
-
- wma = cds_get_context(QDF_MODULE_ID_WMA);
- if (!wma) {
- WMA_LOGE("%s: Invalid WMA handle", __func__);
- return false;
- }
-
- if (!wma_is_agile_dfs_enable()) {
- WMA_LOGI("%s: Agile DFS is disabled", __func__);
- return false;
- }
-
- WMA_LOGI("%s: DBS service bit map: %d", __func__,
- WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap,
- WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT));
-
- /* The agreement with FW is that to know if the target is Agile DFS
- * capable, DBS needs to be supported in the service bit map and
- * Agile DFS needs to be supported in the HW mode list
- */
- if (!(WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap,
- WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT)))
- return false;
-
- for (i = 0; i < wma->num_dbs_hw_modes; i++) {
- param = wma->hw_mode.hw_mode_list[i];
- WMA_LOGI("%s: HW param: %x", __func__, param);
- if (WMI_DBS_HW_MODE_AGILE_DFS_GET(param)) {
- WMA_LOGI("%s: HW %d is agile DFS capable",
- __func__, i);
- found = 1;
- break;
- }
- }
-
- if (found)
- return true;
-
- return false;
-}
-
-/**
* wma_get_mac_id_of_vdev() - Get MAC id corresponding to a vdev
* @vdev_id: VDEV whose MAC ID is required
*
@@ -3093,42 +3046,6 @@ bool wma_is_dbs_enable(void)
}
/**
- * wma_is_agile_dfs_enable() - Check if master Agile DFS control is enabled
- *
- * Checks if the master Agile DFS control is enabled. This will be used
- * to override any other Agile DFS capability
- *
- * Return: True if master Agile DFS control is enabled
- */
-bool wma_is_agile_dfs_enable(void)
-{
- tp_wma_handle wma;
-
- if (wma_is_dual_mac_disabled_in_ini())
- return false;
-
- wma = cds_get_context(QDF_MODULE_ID_WMA);
- if (!wma) {
- WMA_LOGE("%s: Invalid WMA handle", __func__);
- return false;
- }
-
- WMA_LOGD("%s: DFS=%d Single mac with DFS=%d", __func__,
- WMI_DBS_FW_MODE_CFG_AGILE_DFS_GET(
- wma->dual_mac_cfg.cur_fw_mode_config),
- WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_GET(
- wma->dual_mac_cfg.cur_scan_config));
-
- if ((WMI_DBS_FW_MODE_CFG_AGILE_DFS_GET(
- wma->dual_mac_cfg.cur_fw_mode_config)) &&
- (WMI_DBS_CONC_SCAN_CFG_AGILE_DFS_SCAN_GET(
- wma->dual_mac_cfg.cur_scan_config)))
- return true;
-
- return false;
-}
-
-/**
* wma_get_updated_scan_config() - Get the updated scan configuration
* @scan_config: Pointer containing the updated scan config
* @dbs_scan: 0 or 1 indicating if DBS scan needs to be enabled/disabled