diff options
| author | Prakash Dhavali <pdhavali@codeaurora.org> | 2014-01-28 11:40:52 -0800 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@codeaurora.org> | 2014-01-28 11:44:30 -0800 |
| commit | 13622f26e3d22a53f72c808b17e2ddcffe4e0d2a (patch) | |
| tree | 2d39eb4d37fa68c70a14a50dc4fd8f084eb9763f | |
| parent | 5e9fbd13fb5a83e0d03165c37182f170265549b0 (diff) | |
| parent | da497a8ce13e6dfbe8cb12561603f145fe0dbf9b (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.c | 9 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 52 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_softap_tx_rx.c | 10 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 6 | ||||
| -rw-r--r-- | CORE/SAP/src/sapChSelect.c | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/dbglog_id.h | 3 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_services.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 27 | ||||
| -rw-r--r-- | CORE/SERVICES/DFS/src/dfs_init.c | 16 | ||||
| -rw-r--r-- | CORE/SERVICES/HTC/htc_services.c | 7 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 21 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 425 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 11 | ||||
| -rw-r--r-- | CORE/SME/src/pmc/pmc.c | 7 | ||||
| -rw-r--r-- | CORE/SYS/common/src/wlan_qct_sys.c | 9 | ||||
| -rw-r--r-- | CORE/TL/src/wlan_qct_tl.c | 4 | ||||
| -rw-r--r-- | CORE/UTILS/PKTLOG/linux_ac.c | 57 | ||||
| -rw-r--r-- | CORE/UTILS/PKTLOG/pktlog_ac.c | 45 | ||||
| -rw-r--r-- | CORE/UTILS/PKTLOG/pktlog_internal.c | 5 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 8 | ||||
| -rw-r--r-- | CORE/WDA/src/wlan_qct_wda_ds.c | 4 |
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); |
