summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrakash Dhavali <pdhavali@codeaurora.org>2014-01-28 11:40:52 -0800
committerPrakash Dhavali <pdhavali@codeaurora.org>2014-01-28 11:44:30 -0800
commit13622f26e3d22a53f72c808b17e2ddcffe4e0d2a (patch)
tree2d39eb4d37fa68c70a14a50dc4fd8f084eb9763f
parent5e9fbd13fb5a83e0d03165c37182f170265549b0 (diff)
parentda497a8ce13e6dfbe8cb12561603f145fe0dbf9b (diff)
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
Release 1.0.0.23 Caf Staging QCA WLAN Host Driver
-rw-r--r--CORE/HDD/src/wlan_hdd_early_suspend.c9
-rw-r--r--CORE/HDD/src/wlan_hdd_main.c52
-rw-r--r--CORE/HDD/src/wlan_hdd_softap_tx_rx.c10
-rw-r--r--CORE/MAC/inc/qwlan_version.h6
-rw-r--r--CORE/SAP/src/sapChSelect.c2
-rw-r--r--CORE/SERVICES/COMMON/dbglog_id.h3
-rw-r--r--CORE/SERVICES/COMMON/wmi_services.h1
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h27
-rw-r--r--CORE/SERVICES/DFS/src/dfs_init.c16
-rw-r--r--CORE/SERVICES/HTC/htc_services.c7
-rw-r--r--CORE/SERVICES/WMA/wma.c21
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c425
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c11
-rw-r--r--CORE/SME/src/pmc/pmc.c7
-rw-r--r--CORE/SYS/common/src/wlan_qct_sys.c9
-rw-r--r--CORE/TL/src/wlan_qct_tl.c4
-rw-r--r--CORE/UTILS/PKTLOG/linux_ac.c57
-rw-r--r--CORE/UTILS/PKTLOG/pktlog_ac.c45
-rw-r--r--CORE/UTILS/PKTLOG/pktlog_internal.c5
-rw-r--r--CORE/VOSS/src/vos_api.c8
-rw-r--r--CORE/WDA/src/wlan_qct_wda_ds.c4
21 files changed, 628 insertions, 101 deletions
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 4badb4ae5543..96681213fda0 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -1720,14 +1720,6 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
/* The driver should always be initialized in STA mode after SSR */
hdd_set_conparam(0);
-#ifdef CONFIG_ENABLE_LINUX_REG
- vosStatus = vos_nv_open();
- if (!VOS_IS_STATUS_SUCCESS(vosStatus))
- {
- /* NV module cannot be initialized */
- hddLog(VOS_TRACE_LEVEL_FATAL, "%s: vos_nv_open failed", __func__);
- goto err_re_init;
- }
#ifdef QCA_WIFI_ISOC
vosStatus = vos_init_wiphy_from_nv_bin();
if (!VOS_IS_STATUS_SUCCESS(vosStatus))
@@ -1737,7 +1729,6 @@ VOS_STATUS hdd_wlan_re_init(void *hif_sc)
goto err_re_init;
}
#endif
-#endif
/* Re-open VOSS, it is a re-open b'se control transport was never closed. */
vosStatus = vos_open(&pVosContext, 0);
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index a576a6af0c21..5f7812f934d1 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -1400,7 +1400,6 @@ hdd_format_batch_scan_rsp
pTemp += temp_len;
temp_total_len += temp_len;
- pAdapter->prev_batch_id = 0;
}
if (temp_total_len < rem_len)
@@ -1472,7 +1471,14 @@ tANI_U32 hdd_populate_user_batch_scan_rsp
pPrev = pHead;
pHead = pHead->pNext;
pAdapter->pBatchScanRsp = pHead;
- pAdapter->prev_batch_id = pPrev->ApInfo.batchId;
+ if (TRUE == pPrev->ApInfo.isLastAp)
+ {
+ pAdapter->prev_batch_id = 0;
+ }
+ else
+ {
+ pAdapter->prev_batch_id = pPrev->ApInfo.batchId;
+ }
vos_mem_free(pPrev);
}
@@ -6566,20 +6572,10 @@ void hdd_cleanup_adapter( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter, tANI_
struct net_device *pWlanDev = NULL;
#ifdef FEATURE_WLAN_BATCH_SCAN
- tHddBatchScanRsp *pNode;
- tHddBatchScanRsp *pPrev;
- if (pAdapter)
- {
- pNode = pAdapter->pBatchScanRsp;
- while (pNode)
- {
- pPrev = pNode;
- pNode = pNode->pNext;
- vos_mem_free((v_VOID_t * )pPrev);
- }
- pAdapter->pBatchScanRsp = NULL;
- }
+ tHddBatchScanRsp *pNode;
+ tHddBatchScanRsp *pPrev;
#endif
+
if (pAdapter)
pWlanDev = pAdapter->dev;
else {
@@ -6587,6 +6583,18 @@ void hdd_cleanup_adapter( hdd_context_t *pHddCtx, hdd_adapter_t *pAdapter, tANI_
"%s: HDD context is Null", __func__);
return;
}
+
+#ifdef FEATURE_WLAN_BATCH_SCAN
+ pNode = pAdapter->pBatchScanRsp;
+ while (pNode)
+ {
+ pPrev = pNode;
+ pNode = pNode->pNext;
+ vos_mem_free((v_VOID_t * )pPrev);
+ }
+ pAdapter->pBatchScanRsp = NULL;
+#endif
+
if(test_bit(NET_DEVICE_REGISTERED, &pAdapter->event_flags)) {
if( rtnl_held )
{
@@ -9883,10 +9891,9 @@ static int __init hdd_module_init ( void)
--------------------------------------------------------------------------*/
static void hdd_driver_exit(void)
{
-#ifdef QCA_WIFI_ISOC
hdd_context_t *pHddCtx = NULL;
int retry = 0;
-#else
+#ifndef QCA_WIFI_ISOC
adf_os_device_t adf_ctx;
#endif
v_CONTEXT_t pVosContext = NULL;
@@ -9902,7 +9909,6 @@ static void hdd_driver_exit(void)
goto done;
}
-#ifdef QCA_WIFI_ISOC
//Get the HDD context.
pHddCtx = (hdd_context_t *)vos_get_context(VOS_MODULE_ID_HDD, pVosContext );
@@ -9912,7 +9918,7 @@ static void hdd_driver_exit(void)
}
else
{
- while(isWDresetInProgress()) {
+ while(pHddCtx->isLogpInProgress) {
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
"%s:SSR in Progress; block rmmod for 1 second!!!", __func__);
msleep(1000);
@@ -9924,13 +9930,13 @@ static void hdd_driver_exit(void)
}
}
-
pHddCtx->isLoadUnloadInProgress = TRUE;
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, TRUE);
-
- //Do all the cleanup before deregistering the driver
- hdd_wlan_exit(pHddCtx);
}
+
+#ifdef QCA_WIFI_ISOC
+ //Do all the cleanup before deregistering the driver
+ hdd_wlan_exit(pHddCtx);
#else
hif_unregister_driver();
diff --git a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
index ef408bbee1bf..9baa74f1e41f 100644
--- a/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_softap_tx_rx.c
@@ -470,9 +470,19 @@ int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
WLANTL_ACEnumType ac = WLANTL_AC_BE;
hdd_adapter_t *pAdapter = (hdd_adapter_t *)netdev_priv(dev);
hdd_ap_ctx_t *pHddApCtx = WLAN_HDD_GET_AP_CTX_PTR(pAdapter);
+ hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
v_MACADDR_t *pDestMacAddress;
v_U8_t STAId;
+ /* Prevent this funtion to be called during SSR since TL context may
+ not be reinitialized at this time which will lead crash. */
+ if (pHddCtx->isLogpInProgress)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: LOGP in Progress. Ignore!!!", __func__);
+ goto drop_pkt;
+ }
+
pDestMacAddress = (v_MACADDR_t*)skb->data;
++pAdapter->hdd_stats.hddTxRxStats.txXmitCalled;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index aeb89386d16b..06538f5504dc 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -38,12 +38,12 @@ BRIEF DESCRIPTION:
===========================================================================*/
-#define QWLAN_VERSION_MAJOR 4
+#define QWLAN_VERSION_MAJOR 1
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 0
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 78
+#define QWLAN_VERSION_BUILD 23
-#define QWLAN_VERSIONSTR "4.0.0.78"
+#define QWLAN_VERSIONSTR "1.0.0.23"
#endif /* QWLAN_VERSION_H */
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index 37c60864c2fc..23aa6e03bd89 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -1468,7 +1468,7 @@ void sapComputeSpectWeight( tSapChSelSpectInfo* pSpectInfoParams,
else
channel_id = pScanResult->BssDescriptor.channelId;
- if (channel_id == pSpectCh->chNum) {
+ if (pSpectCh && (channel_id == pSpectCh->chNum)) {
if (pSpectCh->rssiAgr < pScanResult->BssDescriptor.rssi)
pSpectCh->rssiAgr = pScanResult->BssDescriptor.rssi;
diff --git a/CORE/SERVICES/COMMON/dbglog_id.h b/CORE/SERVICES/COMMON/dbglog_id.h
index 0cbfe9baf8b8..1c28f1255a75 100644
--- a/CORE/SERVICES/COMMON/dbglog_id.h
+++ b/CORE/SERVICES/COMMON/dbglog_id.h
@@ -565,6 +565,9 @@ extern "C" {
#define BEACON_EVENT_EARLY_RX_SLEEP_SLOP 2
#define BEACON_EVENT_EARLY_RX_CONT_BMISS_TIMEOUT 3
#define BEACON_EVENT_EARLY_RX_PAUSE_SKIP_BCN_NUM 4
+#define BEACON_EVENT_EARLY_RX_CLK_DRIFT 5
+#define BEACON_EVENT_EARLY_RX_AP_DRIFT 6
+#define BEACON_EVENT_EARLY_RX_BCN_TYPE 7
#define RATECTRL_DBGID_DEFINITION_START 0
#define RATECTRL_DBGID_ASSOC 1
diff --git a/CORE/SERVICES/COMMON/wmi_services.h b/CORE/SERVICES/COMMON/wmi_services.h
index 4158e1c73ce7..ee69e806789e 100644
--- a/CORE/SERVICES/COMMON/wmi_services.h
+++ b/CORE/SERVICES/COMMON/wmi_services.h
@@ -94,6 +94,7 @@ typedef enum {
WMI_SERVICE_THERMAL_MGMT,
WMI_SERVICE_RMC, /* reliable multicast support */
WMI_SERVICE_MHF_OFFLOAD, /* multi-hop forwarding offload */
+ WMI_SERVICE_COEX_SAR, /* target support SAR tx limit from WMI_PDEV_PARAM_TXPOWER_LIMITxG */
WMI_MAX_SERVICE=64 /* max service */
} WMI_SERVICE;
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 7e00d21e27f8..b6768ee7ddc1 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -2175,6 +2175,7 @@ typedef enum {
PAUSE_TYPE_P2P_CLIENT_NOA = 0x4, /** only vdev_map is valid, actually only one vdev id is set at one time */
PAUSE_TYPE_P2P_GO_PS = 0x5, /** only vdev_map is valid, actually only one vdev id is set at one time */
PAUSE_TYPE_STA_ADD_BA = 0x6, /** only peer_id and tid_map are valid, actually only one tid is set at one time */
+ PAUSE_TYPE_AP_PS = 0x7, /** for pausing AP vdev when all the connected clients are in PS. only vdev_map is valid */
} wmi_tx_pause_type;
typedef enum {
@@ -2939,6 +2940,8 @@ typedef enum {
/** max rate in kpbs, transmit rate can't go beyond it */
WMI_VDEV_PARAM_MAX_RATE,
+ /* enable/disable drift sample. 0: disable; 1: clk_drift; 2: ap_drift; 3 both clk and ap drift*/
+ WMI_VDEV_PARAM_EARLY_RX_DRIFT_SAMPLE,
} WMI_VDEV_PARAM;
enum wmi_pkt_type {
@@ -6284,6 +6287,30 @@ typedef struct {
A_UINT32 temperature_degreeC;/* temperature in degree C*/
} wmi_thermal_mgmt_event_fixed_param;
+enum {
+ WMI_PDEV_PARAM_TXPOWER_REASON_NONE = 0,
+ WMI_PDEV_PARAM_TXPOWER_REASON_SAR,
+ WMI_PDEV_PARAM_TXPOWER_REASON_MAX
+};
+
+#define PDEV_PARAM_TXPOWER_VALUE_MASK 0x000000FF
+#define PDEV_PARAM_TXPOWER_VALUE_SHIFT 0
+
+#define PDEV_PARAM_TXPOWER_REASON_MASK 0x0000FF00
+#define PDEV_PARAM_TXPOWER_REASON_SHIFT 8
+
+#define SET_PDEV_PARAM_TXPOWER_VALUE(txpower_param, value) \
+ ((txpower_param) &= ~PDEV_PARAM_TXPOWER_VALUE_MASK, (txpower_param) |= ((value) << PDEV_PARAM_TXPOWER_VALUE_SHIFT))
+
+#define SET_PDEV_PARAM_TXPOWER_REASON(txpower_param, value) \
+ ((txpower_param) &= ~PDEV_PARAM_TXPOWER_REASON_MASK, (txpower_param) |= ((value) << PDEV_PARAM_TXPOWER_REASON_SHIFT))
+
+#define GET_PDEV_PARAM_TXPOWER_VALUE(txpower_param) \
+ (((txpower_param) & PDEV_PARAM_TXPOWER_VALUE_MASK) >> PDEV_PARAM_TXPOWER_VALUE_SHIFT)
+
+#define GET_PDEV_PARAM_TXPOWER_REASON(txpower_param) \
+ (((txpower_param) & PDEV_PARAM_TXPOWER_REASON_MASK) >> PDEV_PARAM_TXPOWER_REASON_SHIFT)
+
#ifdef __cplusplus
}
#endif
diff --git a/CORE/SERVICES/DFS/src/dfs_init.c b/CORE/SERVICES/DFS/src/dfs_init.c
index 71c5ad9744b4..999dae8625c4 100644
--- a/CORE/SERVICES/DFS/src/dfs_init.c
+++ b/CORE/SERVICES/DFS/src/dfs_init.c
@@ -100,15 +100,17 @@ void dfs_reset_alldelaylines(struct ath_dfs *dfs)
pl->pl_firstelem = pl->pl_numelems = 0;
pl->pl_lastelem = DFS_MAX_PULSE_BUFFER_MASK;
- for (i = 0; i < DFS_MAX_RADAR_TYPES; i++) {
+ for (i=0; i<DFS_MAX_RADAR_TYPES; i++) {
if (dfs->dfs_radarf[i] != NULL) {
ft = dfs->dfs_radarf[i];
- for (j = 0; j < ft->ft_numfilters; j++) {
- rf = &(ft->ft_filters[j]);
- dl = &(rf->rf_dl);
- if (dl != NULL) {
- OS_MEMZERO(dl, sizeof(struct dfs_delayline));
- dl->dl_lastelem = (0xFFFFFFFF) & DFS_MAX_DL_MASK;
+ if (NULL != ft) {
+ for (j = 0; j < ft->ft_numfilters; j++) {
+ rf = &(ft->ft_filters[j]);
+ dl = &(rf->rf_dl);
+ if (dl != NULL) {
+ OS_MEMZERO(dl, sizeof(struct dfs_delayline));
+ dl->dl_lastelem = (0xFFFFFFFF) & DFS_MAX_DL_MASK;
+ }
}
}
}
diff --git a/CORE/SERVICES/HTC/htc_services.c b/CORE/SERVICES/HTC/htc_services.c
index 28f67fa2e481..77e364080292 100644
--- a/CORE/SERVICES/HTC/htc_services.c
+++ b/CORE/SERVICES/HTC/htc_services.c
@@ -91,7 +91,12 @@ A_STATUS HTCConnectService(HTC_HANDLE HTCHandle,
/* assemble connect service message */
adf_nbuf_put_tail(netbuf, length);
pConnectMsg = (HTC_CONNECT_SERVICE_MSG *)adf_nbuf_data(netbuf);
- AR_DEBUG_ASSERT(pConnectMsg != NULL);
+
+ if (NULL == pConnectMsg) {
+ AR_DEBUG_ASSERT(0);
+ status = A_EFAULT;
+ break;
+ }
A_MEMZERO(pConnectMsg,sizeof(HTC_CONNECT_SERVICE_MSG));
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 6437d1a3eb47..bc5b13022b92 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -5539,6 +5539,12 @@ static void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params)
goto send_resp;
}
pdev = vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context);
+ if (NULL == pdev) {
+ WMA_LOGE("%s: Failed to get pdev", __func__);
+ status = VOS_STATUS_E_FAILURE;
+ goto send_resp;
+ }
+
peer = ol_txrx_find_peer_by_addr(pdev, intr[vdev_id].bssid, &peer_id);
if (peer && (peer->state == ol_txrx_peer_state_conn ||
@@ -13528,13 +13534,15 @@ VOS_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
t_thermal_mgmt *pThermalParams)
{
t_thermal_cmd_params thermal_params;
- ol_txrx_pdev_handle curr_pdev =
- vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context);
+ ol_txrx_pdev_handle curr_pdev;
+
+ if (NULL == wma || NULL == pThermalParams) {
+ WMA_LOGE("%s: TM Invalid input", __func__);
+ return VOS_STATUS_E_FAILURE;
+ }
+
+ curr_pdev = vos_get_context(VOS_MODULE_ID_TXRX, wma->vos_context);
- if (NULL == wma || NULL == pThermalParams) {
- WMA_LOGE("TM Invalid input");
- return VOS_STATUS_E_FAILURE;
- }
WMA_LOGD("TM enable %d period %d", pThermalParams->thermalMgmtEnabled,
pThermalParams->throttlePeriod);
@@ -17447,7 +17455,6 @@ wma_dfs_indicate_radar(struct ieee80211com *ic,
}
hdd_ctx = vos_get_context(VOS_MODULE_ID_HDD,wma->vos_context);
-
if (wma->dfs_ic != ic)
{
WMA_LOGE("%s:DFS- Invalid WMA handle\n",__func__);
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 991f07fa8c5b..04847f6fa317 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -40,6 +40,8 @@
#include "wmi.h"
#include "wmi_unified_priv.h"
#include "wma_api.h"
+#include "wma.h"
+#include "macTrace.h"
#define WMI_MIN_HEAD_ROOM 64
@@ -66,6 +68,420 @@ wmi_buf_alloc(wmi_unified_t wmi_handle, u_int16_t len)
return wmi_buf;
}
+static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
+{
+ switch(wmi_command)
+ {
+ /** initialize the wlan sub system */
+ CASE_RETURN_STRING(WMI_INIT_CMDID);
+
+ /* Scan specific commands */
+
+ /** start scan request to FW */
+ CASE_RETURN_STRING(WMI_START_SCAN_CMDID);
+ /** stop scan request to FW */
+ CASE_RETURN_STRING(WMI_STOP_SCAN_CMDID);
+ /** full list of channels as defined by the regulatory that will be used by scanner */
+ CASE_RETURN_STRING(WMI_SCAN_CHAN_LIST_CMDID);
+ /** overwrite default priority table in scan scheduler */
+ CASE_RETURN_STRING(WMI_SCAN_SCH_PRIO_TBL_CMDID);
+ /** This command to adjust the priority and min.max_rest_time
+ * of an on ongoing scan request.
+ */
+ CASE_RETURN_STRING(WMI_SCAN_UPDATE_REQUEST_CMDID);
+
+ /* PDEV(physical device) specific commands */
+ /** set regulatorty ctl id used by FW to determine the exact ctl power limits */
+ CASE_RETURN_STRING(WMI_PDEV_SET_REGDOMAIN_CMDID);
+ /** set channel. mainly used for supporting monitor mode */
+ CASE_RETURN_STRING(WMI_PDEV_SET_CHANNEL_CMDID);
+ /** set pdev specific parameters */
+ CASE_RETURN_STRING(WMI_PDEV_SET_PARAM_CMDID);
+ /** enable packet log */
+ CASE_RETURN_STRING(WMI_PDEV_PKTLOG_ENABLE_CMDID);
+ /** disable packet log*/
+ CASE_RETURN_STRING(WMI_PDEV_PKTLOG_DISABLE_CMDID);
+ /** set wmm parameters */
+ CASE_RETURN_STRING(WMI_PDEV_SET_WMM_PARAMS_CMDID);
+ /** set HT cap ie that needs to be carried probe requests HT/VHT channels */
+ CASE_RETURN_STRING(WMI_PDEV_SET_HT_CAP_IE_CMDID);
+ /** set VHT cap ie that needs to be carried on probe requests on VHT channels */
+ CASE_RETURN_STRING(WMI_PDEV_SET_VHT_CAP_IE_CMDID);
+
+ /** Command to send the DSCP-to-TID map to the target */
+ CASE_RETURN_STRING(WMI_PDEV_SET_DSCP_TID_MAP_CMDID);
+ /** set quiet ie parameters. primarily used in AP mode */
+ CASE_RETURN_STRING(WMI_PDEV_SET_QUIET_MODE_CMDID);
+ /** Enable/Disable Green AP Power Save */
+ CASE_RETURN_STRING(WMI_PDEV_GREEN_AP_PS_ENABLE_CMDID);
+ /** get TPC config for the current operating channel */
+ CASE_RETURN_STRING(WMI_PDEV_GET_TPC_CONFIG_CMDID);
+
+ /** set the base MAC address for the physical device before a VDEV is created.
+ * For firmware that doesn’t support this feature and this command, the pdev
+ * MAC address will not be changed. */
+ CASE_RETURN_STRING(WMI_PDEV_SET_BASE_MACADDR_CMDID);
+
+ /* eeprom content dump , the same to bdboard data */
+ CASE_RETURN_STRING(WMI_PDEV_DUMP_CMDID);
+
+ /* VDEV(virtual device) specific commands */
+ /** vdev create */
+ CASE_RETURN_STRING(WMI_VDEV_CREATE_CMDID);
+ /** vdev delete */
+ CASE_RETURN_STRING(WMI_VDEV_DELETE_CMDID);
+ /** vdev start request */
+ CASE_RETURN_STRING(WMI_VDEV_START_REQUEST_CMDID);
+ /** vdev restart request (RX only, NO TX, used for CAC period)*/
+ CASE_RETURN_STRING(WMI_VDEV_RESTART_REQUEST_CMDID);
+ /** vdev up request */
+ CASE_RETURN_STRING(WMI_VDEV_UP_CMDID);
+ /** vdev stop request */
+ CASE_RETURN_STRING(WMI_VDEV_STOP_CMDID);
+ /** vdev down request */
+ CASE_RETURN_STRING(WMI_VDEV_DOWN_CMDID);
+ /* set a vdev param */
+ CASE_RETURN_STRING(WMI_VDEV_SET_PARAM_CMDID);
+ /* set a key (used for setting per peer unicast and per vdev multicast) */
+ CASE_RETURN_STRING(WMI_VDEV_INSTALL_KEY_CMDID);
+
+ /* wnm sleep mode command */
+ CASE_RETURN_STRING(WMI_VDEV_WNM_SLEEPMODE_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_WMM_ADDTS_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_WMM_DELTS_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_SET_WMM_PARAMS_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_SET_GTX_PARAMS_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID);
+
+ CASE_RETURN_STRING(WMI_VDEV_PLMREQ_START_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_PLMREQ_STOP_CMDID);
+
+ /* peer specific commands */
+
+ /** create a peer */
+ CASE_RETURN_STRING(WMI_PEER_CREATE_CMDID);
+ /** delete a peer */
+ CASE_RETURN_STRING(WMI_PEER_DELETE_CMDID);
+ /** flush specific tid queues of a peer */
+ CASE_RETURN_STRING(WMI_PEER_FLUSH_TIDS_CMDID);
+ /** set a parameter of a peer */
+ CASE_RETURN_STRING(WMI_PEER_SET_PARAM_CMDID);
+ /** set peer to associated state. will cary all parameters determined during assocication time */
+ CASE_RETURN_STRING(WMI_PEER_ASSOC_CMDID);
+ /**add a wds (4 address ) entry. used only for testing WDS feature on AP products */
+ CASE_RETURN_STRING(WMI_PEER_ADD_WDS_ENTRY_CMDID);
+ /**remove wds (4 address ) entry. used only for testing WDS feature on AP products */
+ CASE_RETURN_STRING(WMI_PEER_REMOVE_WDS_ENTRY_CMDID);
+ /** set up mcast group infor for multicast to unicast conversion */
+ CASE_RETURN_STRING(WMI_PEER_MCAST_GROUP_CMDID);
+ /** request peer info from FW. FW shall respond with PEER_INFO_EVENTID */
+ CASE_RETURN_STRING(WMI_PEER_INFO_REQ_CMDID);
+
+ /* beacon/management specific commands */
+
+ /** transmit beacon by reference . used for transmitting beacon on low latency interface like pcie */
+ CASE_RETURN_STRING(WMI_BCN_TX_CMDID);
+ /** transmit beacon by value */
+ CASE_RETURN_STRING(WMI_PDEV_SEND_BCN_CMDID);
+ /** set the beacon template. used in beacon offload mode to setup the
+ * the common beacon template with the FW to be used by FW to generate beacons */
+ CASE_RETURN_STRING(WMI_BCN_TMPL_CMDID);
+ /** set beacon filter with FW */
+ CASE_RETURN_STRING(WMI_BCN_FILTER_RX_CMDID);
+ /* enable/disable filtering of probe requests in the firmware */
+ CASE_RETURN_STRING(WMI_PRB_REQ_FILTER_RX_CMDID);
+ /** transmit management frame by value. will be deprecated */
+ CASE_RETURN_STRING(WMI_MGMT_TX_CMDID);
+ /** set the probe response template. used in beacon offload mode to setup the
+ * the common probe response template with the FW to be used by FW to generate
+ * probe responses */
+ CASE_RETURN_STRING(WMI_PRB_TMPL_CMDID);
+
+ /** commands to directly control ba negotiation directly from host. only used in test mode */
+
+ /** turn off FW Auto addba mode and let host control addba */
+ CASE_RETURN_STRING(WMI_ADDBA_CLEAR_RESP_CMDID);
+ /** send add ba request */
+ CASE_RETURN_STRING(WMI_ADDBA_SEND_CMDID);
+ CASE_RETURN_STRING(WMI_ADDBA_STATUS_CMDID);
+ /** send del ba */
+ CASE_RETURN_STRING(WMI_DELBA_SEND_CMDID);
+ /** set add ba response will be used by FW to generate addba response*/
+ CASE_RETURN_STRING(WMI_ADDBA_SET_RESP_CMDID);
+ /** send single VHT MPDU with AMSDU */
+ CASE_RETURN_STRING(WMI_SEND_SINGLEAMSDU_CMDID);
+
+ /** Station power save specific config */
+ /** enable/disable station powersave */
+ CASE_RETURN_STRING(WMI_STA_POWERSAVE_MODE_CMDID);
+ /** set station power save specific parameter */
+ CASE_RETURN_STRING(WMI_STA_POWERSAVE_PARAM_CMDID);
+ /** set station mimo powersave mode */
+ CASE_RETURN_STRING(WMI_STA_MIMO_PS_MODE_CMDID);
+
+
+ /** DFS-specific commands */
+ /** enable DFS (radar detection)*/
+ CASE_RETURN_STRING(WMI_PDEV_DFS_ENABLE_CMDID);
+ /** disable DFS (radar detection)*/
+ CASE_RETURN_STRING(WMI_PDEV_DFS_DISABLE_CMDID);
+ /** enable DFS phyerr/parse filter offload */
+ CASE_RETURN_STRING(WMI_DFS_PHYERR_FILTER_ENA_CMDID);
+ /** enable DFS phyerr/parse filter offload */
+ CASE_RETURN_STRING(WMI_DFS_PHYERR_FILTER_DIS_CMDID);
+
+ /* Roaming specific commands */
+ /** set roam scan mode */
+ CASE_RETURN_STRING(WMI_ROAM_SCAN_MODE);
+ /** set roam scan rssi threshold below which roam scan is enabled */
+ CASE_RETURN_STRING(WMI_ROAM_SCAN_RSSI_THRESHOLD);
+ /** set roam scan period for periodic roam scan mode */
+ CASE_RETURN_STRING(WMI_ROAM_SCAN_PERIOD);
+ /** set roam scan trigger rssi change threshold */
+ CASE_RETURN_STRING(WMI_ROAM_SCAN_RSSI_CHANGE_THRESHOLD);
+ /** set roam AP profile */
+ CASE_RETURN_STRING(WMI_ROAM_AP_PROFILE);
+ /** set channel list for roam scans */
+ CASE_RETURN_STRING(WMI_ROAM_CHAN_LIST);
+
+ /** offload scan specific commands */
+ /** set offload scan AP profile */
+ CASE_RETURN_STRING(WMI_OFL_SCAN_ADD_AP_PROFILE);
+ /** remove offload scan AP profile */
+ CASE_RETURN_STRING(WMI_OFL_SCAN_REMOVE_AP_PROFILE);
+ /** set offload scan period */
+ CASE_RETURN_STRING(WMI_OFL_SCAN_PERIOD);
+
+ /* P2P specific commands */
+ /**set P2P device info. FW will used by FW to create P2P IE to be carried in probe response
+ * generated during p2p listen and for p2p discoverability */
+ CASE_RETURN_STRING(WMI_P2P_DEV_SET_DEVICE_INFO);
+ /** enable/disable p2p discoverability on STA/AP VDEVs */
+ CASE_RETURN_STRING(WMI_P2P_DEV_SET_DISCOVERABILITY);
+ /** set p2p ie to be carried in beacons generated by FW for GO */
+ CASE_RETURN_STRING(WMI_P2P_GO_SET_BEACON_IE);
+ /** set p2p ie to be carried in probe response frames generated by FW for GO */
+ CASE_RETURN_STRING(WMI_P2P_GO_SET_PROBE_RESP_IE);
+ /** set the vendor specific p2p ie data. FW will use this to parse the P2P NoA
+ * attribute in the beacons/probe responses received.
+ */
+ CASE_RETURN_STRING(WMI_P2P_SET_VENDOR_IE_DATA_CMDID);
+ /** set the configure of p2p find offload */
+ CASE_RETURN_STRING(WMI_P2P_DISC_OFFLOAD_CONFIG_CMDID);
+ /** set the vendor specific p2p ie data for p2p find offload using */
+ CASE_RETURN_STRING(WMI_P2P_DISC_OFFLOAD_APPIE_CMDID);
+ /** set the BSSID/device name pattern of p2p find offload */
+ CASE_RETURN_STRING(WMI_P2P_DISC_OFFLOAD_PATTERN_CMDID);
+ /** set OppPS related parameters **/
+ CASE_RETURN_STRING(WMI_P2P_SET_OPPPS_PARAM_CMDID);
+
+ /** AP power save specific config */
+ /** set AP power save specific param */
+ CASE_RETURN_STRING(WMI_AP_PS_PEER_PARAM_CMDID);
+ /** set AP UAPSD coex pecific param */
+ CASE_RETURN_STRING(WMI_AP_PS_PEER_UAPSD_COEX_CMDID);
+
+
+ /** Rate-control specific commands */
+ CASE_RETURN_STRING(WMI_PEER_RATE_RETRY_SCHED_CMDID);
+
+ /** WLAN Profiling commands. */
+ CASE_RETURN_STRING(WMI_WLAN_PROFILE_TRIGGER_CMDID);
+ CASE_RETURN_STRING(WMI_WLAN_PROFILE_SET_HIST_INTVL_CMDID);
+ CASE_RETURN_STRING(WMI_WLAN_PROFILE_GET_PROFILE_DATA_CMDID);
+ CASE_RETURN_STRING(WMI_WLAN_PROFILE_ENABLE_PROFILE_ID_CMDID);
+ CASE_RETURN_STRING(WMI_WLAN_PROFILE_LIST_PROFILE_ID_CMDID);
+
+ /** Suspend resume command Ids */
+ CASE_RETURN_STRING(WMI_PDEV_SUSPEND_CMDID);
+ CASE_RETURN_STRING(WMI_PDEV_RESUME_CMDID);
+
+ /* Beacon filter commands */
+ /** add a beacon filter */
+ CASE_RETURN_STRING(WMI_ADD_BCN_FILTER_CMDID);
+ /** remove a beacon filter */
+ CASE_RETURN_STRING(WMI_RMV_BCN_FILTER_CMDID);
+
+ /* WOW Specific WMI commands*/
+ /** add pattern for awake */
+ CASE_RETURN_STRING(WMI_WOW_ADD_WAKE_PATTERN_CMDID);
+ /** deleta a wake pattern */
+ CASE_RETURN_STRING(WMI_WOW_DEL_WAKE_PATTERN_CMDID);
+ /** enable/deisable wake event */
+ CASE_RETURN_STRING(WMI_WOW_ENABLE_DISABLE_WAKE_EVENT_CMDID);
+ /** enable WOW */
+ CASE_RETURN_STRING(WMI_WOW_ENABLE_CMDID);
+ /** host woke up from sleep event to FW. Generated in response to WOW Hardware event */
+ CASE_RETURN_STRING(WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID);
+
+ /* RTT measurement related cmd */
+ /** reques to make an RTT measurement */
+ CASE_RETURN_STRING(WMI_RTT_MEASREQ_CMDID);
+ /** reques to report a tsf measurement */
+ CASE_RETURN_STRING(WMI_RTT_TSF_CMDID);
+
+ /** spectral scan command */
+ /** configure spectral scan */
+ CASE_RETURN_STRING(WMI_VDEV_SPECTRAL_SCAN_CONFIGURE_CMDID);
+ /** enable/disable spectral scan and trigger */
+ CASE_RETURN_STRING(WMI_VDEV_SPECTRAL_SCAN_ENABLE_CMDID);
+
+ /* F/W stats */
+ /** one time request for stats */
+ CASE_RETURN_STRING(WMI_REQUEST_STATS_CMDID);
+ /** Push MCC Adaptive Scheduler Stats to Firmware */
+ CASE_RETURN_STRING(WMI_MCC_SCHED_TRAFFIC_STATS_CMDID);
+
+ /** ARP OFFLOAD REQUEST*/
+ CASE_RETURN_STRING(WMI_SET_ARP_NS_OFFLOAD_CMDID);
+
+ /** Proactive ARP Response Add Pattern Command*/
+ CASE_RETURN_STRING(WMI_ADD_PROACTIVE_ARP_RSP_PATTERN_CMDID);
+
+ /** Proactive ARP Response Del Pattern Command*/
+ CASE_RETURN_STRING(WMI_DEL_PROACTIVE_ARP_RSP_PATTERN_CMDID);
+
+ /** NS offload confid*/
+ CASE_RETURN_STRING(WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID);
+
+ /* GTK offload Specific WMI commands*/
+ CASE_RETURN_STRING(WMI_GTK_OFFLOAD_CMDID);
+
+ /* CSA offload Specific WMI commands*/
+ /** csa offload enable */
+ CASE_RETURN_STRING(WMI_CSA_OFFLOAD_ENABLE_CMDID);
+ /** chan switch command */
+ CASE_RETURN_STRING(WMI_CSA_OFFLOAD_CHANSWITCH_CMDID);
+
+ /* Chatter commands*/
+ /* Change chatter mode of operation */
+ CASE_RETURN_STRING(WMI_CHATTER_SET_MODE_CMDID);
+ /** chatter add coalescing filter command */
+ CASE_RETURN_STRING(WMI_CHATTER_ADD_COALESCING_FILTER_CMDID);
+ /** chatter delete coalescing filter command */
+ CASE_RETURN_STRING(WMI_CHATTER_DELETE_COALESCING_FILTER_CMDID);
+ /** chatter coalecing query command */
+ CASE_RETURN_STRING(WMI_CHATTER_COALESCING_QUERY_CMDID);
+
+ /**addba specific commands */
+ /** start the aggregation on this TID */
+ CASE_RETURN_STRING(WMI_PEER_TID_ADDBA_CMDID);
+ /** stop the aggregation on this TID */
+ CASE_RETURN_STRING(WMI_PEER_TID_DELBA_CMDID);
+
+ /** set station mimo powersave method */
+ CASE_RETURN_STRING(WMI_STA_DTIM_PS_METHOD_CMDID);
+ /** Configure the Station UAPSD AC Auto Trigger Parameters */
+ CASE_RETURN_STRING(WMI_STA_UAPSD_AUTO_TRIG_CMDID);
+ /** Configure the Keep Alive Parameters */
+ CASE_RETURN_STRING(WMI_STA_KEEPALIVE_CMDID);
+
+ /* Request ssn from target for a sta/tid pair */
+ CASE_RETURN_STRING(WMI_BA_REQ_SSN_CMDID);
+ /* misc command group */
+ /** echo command mainly used for testing */
+ CASE_RETURN_STRING(WMI_ECHO_CMDID);
+
+ /* !!IMPORTANT!!
+ * If you need to add a new WMI command to the CASE_RETURN_STRING(WMI_GRP_MISC sub-group,
+ * please make sure you add it BEHIND CASE_RETURN_STRING(WMI_PDEV_UTF_CMDID);
+ * as we MUST have a fixed value here to maintain compatibility between
+ * UTF and the ART2 driver
+ */
+ /** UTF WMI commands */
+ CASE_RETURN_STRING(WMI_PDEV_UTF_CMDID);
+
+ /** set debug log config */
+ CASE_RETURN_STRING(WMI_DBGLOG_CFG_CMDID);
+ /* QVIT specific command id */
+ CASE_RETURN_STRING(WMI_PDEV_QVIT_CMDID);
+ /* Factory Testing Mode request command
+ * used for integrated chipsets */
+ CASE_RETURN_STRING(WMI_PDEV_FTM_INTG_CMDID);
+ /* set and get keepalive parameters command */
+ CASE_RETURN_STRING(WMI_VDEV_SET_KEEPALIVE_CMDID);
+ CASE_RETURN_STRING(WMI_VDEV_GET_KEEPALIVE_CMDID);
+ /* For fw recovery test command */
+ CASE_RETURN_STRING(WMI_FORCE_FW_HANG_CMDID);
+ /* Set Mcast/Bdcast filter */
+ CASE_RETURN_STRING(WMI_SET_MCASTBCAST_FILTER_CMDID);
+ /** set thermal management params **/
+ CASE_RETURN_STRING(WMI_THERMAL_MGMT_CMDID);
+
+ /* GPIO Configuration */
+ CASE_RETURN_STRING(WMI_GPIO_CONFIG_CMDID);
+ CASE_RETURN_STRING(WMI_GPIO_OUTPUT_CMDID);
+
+ /* Txbf configuration command */
+ CASE_RETURN_STRING(WMI_TXBF_CMDID);
+
+ /* FWTEST Commands */
+ CASE_RETURN_STRING(WMI_FWTEST_VDEV_MCC_SET_TBTT_MODE_CMDID);
+ /** set NoA descs **/
+ CASE_RETURN_STRING(WMI_FWTEST_P2P_SET_NOA_PARAM_CMDID);
+
+ /** TDLS Configuration */
+ /** enable/disable TDLS */
+ CASE_RETURN_STRING(WMI_TDLS_SET_STATE_CMDID);
+ /** set tdls peer state */
+ CASE_RETURN_STRING(WMI_TDLS_PEER_UPDATE_CMDID);
+
+ /** Resmgr Configuration */
+ /** Adaptive OCS is enabled by default in the FW. This command is used to
+ * disable FW based adaptive OCS.
+ */
+ CASE_RETURN_STRING(WMI_RESMGR_ADAPTIVE_OCS_ENABLE_DISABLE_CMDID);
+ /** set the requested channel time quota for the home channels */
+ CASE_RETURN_STRING(WMI_RESMGR_SET_CHAN_TIME_QUOTA_CMDID);
+ /** set the requested latency for the home channels */
+ CASE_RETURN_STRING(WMI_RESMGR_SET_CHAN_LATENCY_CMDID);
+
+ /** STA SMPS Configuration */
+ /** force SMPS mode */
+ CASE_RETURN_STRING(WMI_STA_SMPS_FORCE_MODE_CMDID);
+ /** set SMPS parameters */
+ CASE_RETURN_STRING(WMI_STA_SMPS_PARAM_CMDID);
+
+ /* Wlan HB commands*/
+ /* enalbe/disable wlan HB */
+ CASE_RETURN_STRING(WMI_HB_SET_ENABLE_CMDID);
+ /* set tcp parameters for wlan HB */
+ CASE_RETURN_STRING(WMI_HB_SET_TCP_PARAMS_CMDID);
+ /* set tcp pkt filter for wlan HB */
+ CASE_RETURN_STRING(WMI_HB_SET_TCP_PKT_FILTER_CMDID);
+ /* set udp parameters for wlan HB */
+ CASE_RETURN_STRING(WMI_HB_SET_UDP_PARAMS_CMDID);
+ /* set udp pkt filter for wlan HB */
+ CASE_RETURN_STRING(WMI_HB_SET_UDP_PKT_FILTER_CMDID);
+
+ /** Wlan RMC commands*/
+ /** enable/disable RMC */
+ CASE_RETURN_STRING(WMI_RMC_SET_MODE_CMDID);
+ /** configure action frame period */
+ CASE_RETURN_STRING(WMI_RMC_SET_ACTION_PERIOD_CMDID);
+ /** For debug/future enhancement purposes only,
+ * configures/finetunes RMC algorithms */
+ CASE_RETURN_STRING(WMI_RMC_CONFIG_CMDID);
+
+ /** WLAN multihop forwarding (MHF) offload commands */
+ /** enable/disable multihop forwarding offload */
+ CASE_RETURN_STRING(WMI_MHF_OFFLOAD_SET_MODE_CMDID);
+ /** Plumb routing table for multihop forwarding offload */
+ CASE_RETURN_STRING(WMI_MHF_OFFLOAD_PLUMB_ROUTING_TBL_CMDID);
+
+ /*location scan commands*/
+ /*start batch scan*/
+ CASE_RETURN_STRING(WMI_BATCH_SCAN_ENABLE_CMDID);
+ /*stop batch scan*/
+ CASE_RETURN_STRING(WMI_BATCH_SCAN_DISABLE_CMDID);
+ /*get batch scan result*/
+ CASE_RETURN_STRING(WMI_BATCH_SCAN_TRIGGER_RESULT_CMDID);
+ /* OEM related cmd */
+ CASE_RETURN_STRING(WMI_OEM_REQ_CMDID);
+ }
+ return "Invalid WMI cmd";
+}
+
/* WMI command API */
int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len,
WMI_CMD_ID cmd_id)
@@ -106,6 +522,7 @@ int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len,
pkt = adf_os_mem_alloc(NULL, sizeof(*pkt));
if (!pkt) {
+ adf_os_atomic_dec(&wmi_handle->pending_cmds);
pr_err("%s, Failed to alloc htc packet %x, no memory\n",
__func__, cmd_id);
return -ENOMEM;
@@ -121,8 +538,16 @@ int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, int len,
SET_HTC_PACKET_NET_BUF_CONTEXT(pkt, buf);
+ WMA_LOGD("Send WMI command:%s command_id:%d\n",
+ get_wmi_cmd_string(cmd_id), cmd_id);
status = HTCSendPkt(wmi_handle->htc_handle, pkt);
+ if (A_OK != status) {
+ adf_os_atomic_dec(&wmi_handle->pending_cmds);
+ pr_err("%s %d, HTCSendPkt failed\n", __func__, __LINE__);
+ }
+
+
return ((status == A_OK) ? EOK : -1);
}
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 2c4b7559dafa..64fcbc431b83 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -2438,15 +2438,10 @@ eHalStatus csrRoamCallCallback(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoam
smsLog(pMac, LOG1, "%s Session is not Active", __func__);
return eHAL_STATUS_FAILURE;
}
- if (NULL == pRoamInfo)
- {
- smsLog(pMac, LOGE, "%s: pRoamInfo is NULL", __func__);
- VOS_ASSERT(0);
- return eHAL_STATUS_FAILURE;
- }
+
smsLog(pMac, LOG4, "Recieved RoamCmdStatus %d with Roam Result %d", u1, u2);
- if(eCSR_ROAM_ASSOCIATION_COMPLETION == u1)
+ if(eCSR_ROAM_ASSOCIATION_COMPLETION == u1 && pRoamInfo)
{
smsLog(pMac, LOGW, " Assoc complete result = %d statusCode = %d reasonCode = %d", u2, pRoamInfo->statusCode, pRoamInfo->reasonCode);
}
@@ -2487,7 +2482,7 @@ eHalStatus csrRoamCallCallback(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoam
vos_mem_set(&connectionStatus,
sizeof(vos_event_wlan_status_payload_type), 0);
- if((eCSR_ROAM_ASSOCIATION_COMPLETION == u1) && (eCSR_ROAM_RESULT_ASSOCIATED == u2))
+ if((eCSR_ROAM_ASSOCIATION_COMPLETION == u1) && (eCSR_ROAM_RESULT_ASSOCIATED == u2) && pRoamInfo)
{
connectionStatus.eventId = eCSR_WLAN_STATUS_CONNECT;
connectionStatus.bssType = pRoamInfo->u.pConnectedProfile->BSSType;
diff --git a/CORE/SME/src/pmc/pmc.c b/CORE/SME/src/pmc/pmc.c
index 59cee6a46ce6..85a79846d17a 100644
--- a/CORE/SME/src/pmc/pmc.c
+++ b/CORE/SME/src/pmc/pmc.c
@@ -3575,10 +3575,9 @@ void pmcOffloadProcessResponse(tpAniSirGlobal pMac, tSirSmeRsp *pMsg)
}
else
{
- /*
- * TODO Whether pmc->fullPowerReqPend needs to be cleared
- * If not cleared it will retry again
- */
+ pmc = &pMac->pmcOffloadInfo.pmc[pCommand->sessionId];
+ pmc->fullPowerReqPend = FALSE;
+
/* Indicate Full Power Req Failure */
pmcOffloadDoFullPowerCallbacks(pMac, pCommand->sessionId,
eHAL_STATUS_FAILURE);
diff --git a/CORE/SYS/common/src/wlan_qct_sys.c b/CORE/SYS/common/src/wlan_qct_sys.c
index ff5a8bec0e37..d27f9c5050f3 100644
--- a/CORE/SYS/common/src/wlan_qct_sys.c
+++ b/CORE/SYS/common/src/wlan_qct_sys.c
@@ -146,11 +146,10 @@ VOS_STATUS sysStop( v_CONTEXT_t pVosContext )
/* post a message to SYS module in MC to stop SME and MAC */
sysBuildMessageHeader( SYS_MSG_ID_MC_STOP, &sysMsg );
- // Save the user callback and user data to callback in the body pointer
- // and body data portion of the message.
+ // Save the user callback and user data
// finished.
- sysMsg.bodyptr = (void *)sysStopCompleteCb;
- sysMsg.bodyval = (v_U32_t) &gStopEvt;
+ sysMsg.callback = sysStopCompleteCb;
+ sysMsg.bodyptr = (void *) &gStopEvt;
// post the message..
vosStatus = vos_mq_post_message( VOS_MQ_ID_SYS, &sysMsg );
@@ -361,7 +360,7 @@ VOS_STATUS sysMcProcessMsg( v_CONTEXT_t pVosContext, vos_msg_t *pMsg )
vosStatus = macStop( hHal, HAL_STOP_TYPE_SYS_DEEP_SLEEP );
VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) );
- ((sysResponseCback)pMsg->bodyptr)((v_VOID_t *)pMsg->bodyval);
+ ((sysResponseCback)pMsg->callback)((v_VOID_t *)pMsg->bodyptr);
vosStatus = VOS_STATUS_SUCCESS;
}
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 5e90b7593a6b..6e0359410256 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -8727,8 +8727,8 @@ WLANTL_TxProcessMsg
break;
case WDA_DS_FINISH_ULA:
- callbackContext = (void *)message->bodyval;
- callbackRoutine = message->bodyptr;
+ callbackRoutine = message->callback;
+ callbackContext = message->bodyptr;
callbackRoutine(callbackContext);
break;
diff --git a/CORE/UTILS/PKTLOG/linux_ac.c b/CORE/UTILS/PKTLOG/linux_ac.c
index 7bd746d4f2f4..dc5927616125 100644
--- a/CORE/UTILS/PKTLOG/linux_ac.c
+++ b/CORE/UTILS/PKTLOG/linux_ac.c
@@ -105,7 +105,7 @@ void ol_pl_set_name(ol_softc_handle scn, net_device_handle dev)
void pktlog_disable_adapter_logging(struct ol_softc *scn)
{
struct ol_pktlog_dev_t *pl_dev = get_pl_handle(scn);
- pl_dev->pl_info->log_state = 0;
+ if (pl_dev) pl_dev->pl_info->log_state = 0;
}
int pktlog_alloc_buf(struct ol_softc *scn)
@@ -204,7 +204,21 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_enable, ctl, write, filp, buffer, lenp,
struct ol_pktlog_dev_t *pl_dev;
scn = (ol_ath_generic_softc_handle) ctl->extra1;
+
+ if (!scn) {
+ printk("%s: Invalid scn context\n", __func__);
+ ASSERT(0);
+ return -EINVAL;
+ }
+
pl_dev = get_pl_handle((struct ol_softc *)scn);
+
+ if (!pl_dev) {
+ printk("%s: Invalid pktlog context\n", __func__);
+ ASSERT(0);
+ return -ENODEV;
+ }
+
ctl->data = &enable;
ctl->maxlen = sizeof(enable);
@@ -212,7 +226,7 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_enable, ctl, write, filp, buffer, lenp,
ret = ATH_SYSCTL_PROC_DOINTVEC(ctl, write, filp, buffer,
lenp, ppos);
if (ret == 0)
- return pl_dev->pl_funcs->pktlog_enable(
+ ret = pl_dev->pl_funcs->pktlog_enable(
(struct ol_softc *)scn,
enable);
else
@@ -225,6 +239,10 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_enable, ctl, write, filp, buffer, lenp,
printk(PKTLOG_TAG "%s:proc_dointvec failed\n",
__func__);
}
+
+ ctl->data = NULL;
+ ctl->maxlen = 0;
+
return ret;
}
@@ -243,7 +261,21 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_size, ctl, write, filp, buffer, lenp,
struct ol_pktlog_dev_t *pl_dev;
scn = (ol_ath_generic_softc_handle) ctl->extra1;
+
+ if (!scn) {
+ printk("%s: Invalid scn context\n", __func__);
+ ASSERT(0);
+ return -EINVAL;
+ }
+
pl_dev = get_pl_handle((struct ol_softc *)scn);
+
+ if (!pl_dev) {
+ printk("%s: Invalid pktlog handle\n", __func__);
+ ASSERT(0);
+ return -ENODEV;
+ }
+
ctl->data = &size;
ctl->maxlen = sizeof(size);
@@ -251,7 +283,7 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_size, ctl, write, filp, buffer, lenp,
ret = ATH_SYSCTL_PROC_DOINTVEC(ctl, write, filp, buffer,
lenp, ppos);
if (ret == 0)
- return pl_dev->pl_funcs->pktlog_setsize(
+ ret = pl_dev->pl_funcs->pktlog_setsize(
(struct ol_softc *)scn,
size);
} else {
@@ -259,6 +291,10 @@ ATH_SYSCTL_DECL(ath_sysctl_pktlog_size, ctl, write, filp, buffer, lenp,
ret = ATH_SYSCTL_PROC_DOINTVEC(ctl, write, filp, buffer,
lenp, ppos);
}
+
+ ctl->data = NULL;
+ ctl->maxlen = 0;
+
return ret;
}
@@ -474,6 +510,12 @@ static void pktlog_sysctl_unregister(struct ol_pktlog_dev_t *pl_dev)
{
struct ath_pktlog_info_lnx *pl_info_lnx;
+ if (!pl_dev) {
+ printk("%s: Invalid pktlog context\n", __func__);
+ ASSERT(0);
+ return;
+ }
+
pl_info_lnx = (pl_dev) ? PL_INFO_LNX(pl_dev->pl_info) :
PL_INFO_LNX(g_pktlog_info);
@@ -487,8 +529,15 @@ static void pktlog_detach(struct ol_softc *scn)
{
struct ol_pktlog_dev_t *pl_dev = (struct ol_pktlog_dev_t *)
get_pl_handle(scn);
- struct ath_pktlog_info *pl_info = pl_dev->pl_info;
+ struct ath_pktlog_info *pl_info;
+
+ if (!pl_dev) {
+ printk("%s: Invalid pktlog context\n", __func__);
+ ASSERT(0);
+ return;
+ }
+ pl_info = pl_dev->pl_info;
remove_proc_entry(WLANDEV_BASENAME, g_pktlog_pde);
pktlog_sysctl_unregister(pl_dev);
pktlog_cleanup(pl_info);
diff --git a/CORE/UTILS/PKTLOG/pktlog_ac.c b/CORE/UTILS/PKTLOG/pktlog_ac.c
index b4c43714ccfb..fd11a1044c68 100644
--- a/CORE/UTILS/PKTLOG/pktlog_ac.c
+++ b/CORE/UTILS/PKTLOG/pktlog_ac.c
@@ -46,8 +46,6 @@
#include "vos_api.h"
#include "wlan_qct_wda.h"
-static int g_pktlog_mode = PKTLOG_MODE_SYSTEM;
-
void pktlog_init(struct ol_softc *scn);
int pktlog_enable(struct ol_softc *scn, int32_t log_state);
int pktlog_setsize(struct ol_softc *scn, int32_t log_state);
@@ -327,34 +325,49 @@ pktlog_init(struct ol_softc *scn)
int
pktlog_enable(struct ol_softc *scn, int32_t log_state)
{
- struct ol_pktlog_dev_t *pl_dev = scn->pdev_txrx_handle->pl_dev;
- struct ath_pktlog_info *pl_info = pl_dev->pl_info;
- struct ol_txrx_pdev_t *txrx_pdev = scn->pdev_txrx_handle;
+ struct ol_pktlog_dev_t *pl_dev;
+ struct ath_pktlog_info *pl_info;
+ struct ol_txrx_pdev_t *txrx_pdev;
int error;
+ if (!scn) {
+ printk("%s: Invalid scn context\n", __func__);
+ ASSERT(0);
+ return -1;
+ }
+
+ txrx_pdev = scn->pdev_txrx_handle;
+ if (!txrx_pdev) {
+ printk("%s: Invalid txrx_pdev context\n", __func__);
+ ASSERT(0);
+ return -1;
+ }
+
+ pl_dev = scn->pdev_txrx_handle->pl_dev;
+ if (!pl_dev) {
+ printk("%s: Invalid pktlog context\n", __func__);
+ ASSERT(0);
+ return -1;
+ }
+
+ pl_info = pl_dev->pl_info;
pl_dev->sc_osdev = scn->sc_osdev;
if (!pl_info)
return 0;
if (log_state != 0 && !pl_dev->tgt_pktlog_enabled) {
- if (!scn) {
- if (g_pktlog_mode == PKTLOG_MODE_ADAPTER) {
- pktlog_disable_adapter_logging(scn);
- g_pktlog_mode = PKTLOG_MODE_SYSTEM;
- }
- } else {
- if (g_pktlog_mode == PKTLOG_MODE_SYSTEM)
- g_pktlog_mode = PKTLOG_MODE_ADAPTER;
- }
-
if (pl_info->buf == NULL) {
error = pktlog_alloc_buf(scn);
if (error != 0)
return error;
- ASSERT(pl_info->buf);
+ if (!pl_info->buf) {
+ printk("%s: pktlog buf alloc failed\n", __func__);
+ ASSERT(0);
+ return -1;
+ }
pl_info->buf->bufhdr.version = CUR_PKTLOG_VER;
pl_info->buf->bufhdr.magic_num = PKTLOG_MAGIC_NUM;
diff --git a/CORE/UTILS/PKTLOG/pktlog_internal.c b/CORE/UTILS/PKTLOG/pktlog_internal.c
index 0aeae952d700..e43f30f880cb 100644
--- a/CORE/UTILS/PKTLOG/pktlog_internal.c
+++ b/CORE/UTILS/PKTLOG/pktlog_internal.c
@@ -71,10 +71,11 @@ pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg)
printk("Invalid parg in %s\n", __func__);
return;
}
+
pl_info = plarg->pl_info;
- log_buf = pl_info->buf;
log_type = plarg->log_type;
log_size = plarg->log_size;
+ log_buf = pl_info->buf;
flags = plarg->flags;
if (!log_buf) {
@@ -329,6 +330,8 @@ process_tx_info(struct ol_txrx_pdev_t *txrx_pdev,
adf_nbuf_t netbuf;
u_int32_t len;
+ adf_os_mem_set(&pl_msdu_info, 0, sizeof(pl_msdu_info));
+
pl_msdu_info.num_msdu = *msdu_id_info;
pl_msdu_info.priv_size = sizeof(uint32_t) *
pl_msdu_info.num_msdu +
diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c
index c5cdfe2b577e..afdf112d527e 100644
--- a/CORE/VOSS/src/vos_api.c
+++ b/CORE/VOSS/src/vos_api.c
@@ -2224,14 +2224,6 @@ VOS_STATUS vos_shutdown(v_CONTEXT_t vosContext)
((pVosContextType)vosContext)->pMACContext = NULL;
- vosStatus = vos_nv_close();
- if (!VOS_IS_STATUS_SUCCESS(vosStatus))
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s: Failed to close NV", __func__);
- VOS_ASSERT( VOS_IS_STATUS_SUCCESS( vosStatus ) );
- }
-
vosStatus = sysClose( vosContext );
if (!VOS_IS_STATUS_SUCCESS(vosStatus))
{
diff --git a/CORE/WDA/src/wlan_qct_wda_ds.c b/CORE/WDA/src/wlan_qct_wda_ds.c
index 6b736277ddf3..b6e8117d3933 100644
--- a/CORE/WDA/src/wlan_qct_wda_ds.c
+++ b/CORE/WDA/src/wlan_qct_wda_ds.c
@@ -353,8 +353,8 @@ WDA_DS_FinishULA
vos_mem_zero( &sMessage, sizeof(vos_msg_t) );
- sMessage.bodyval = (v_U32_t)callbackContext;
- sMessage.bodyptr = callbackRoutine;
+ sMessage.callback = callbackRoutine;
+ sMessage.bodyptr = callbackContext;
sMessage.type = WDA_DS_FINISH_ULA;
return vos_tx_mq_serialize(VOS_MQ_ID_TL, &sMessage);