diff options
| author | Pitani Venkata Rajesh Kumar <vpitan@codeaurora.org> | 2014-02-07 17:28:09 +0530 |
|---|---|---|
| committer | Pitani Venkata Rajesh Kumar <vpitan@codeaurora.org> | 2014-02-07 17:29:32 +0530 |
| commit | 01fdac088553e2f608ced4f994eead67482a728a (patch) | |
| tree | 3d482adc789a8954d29f34d68df18d062dbbe17a | |
| parent | 20b976069f79fdce744134939fe1e86db3da3367 (diff) | |
| parent | 5acabcff3611784218cb8e9a901ba423e15db180 (diff) | |
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
Release 1.0.0.30 QCACLD WLAN Driver
* origin/caf/caf-wlan/master:
qcacld: Release 1.0.0.30 Caf Staging
qcacld: Reduce the frequency of DFS kernel logging
wlan: CLD crash wiht too many log fix
qcacld: Fix of kernel panic caused by dangling pMac pointer
qcacld: Populate bssid field after roaming ADD_BSS
qcacld: Fix of double free panic for P2P message
qcacld: Fix of kernel panic in LIM MLM response handler
| -rw-r--r-- | CORE/CLD_TXRX/TLSHIM/tl_shim.c | 2 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c | 15 | ||||
| -rw-r--r-- | CORE/SERVICES/DFS/src/dfs_phyerr_tlv.c | 20 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 44 |
5 files changed, 61 insertions, 24 deletions
diff --git a/CORE/CLD_TXRX/TLSHIM/tl_shim.c b/CORE/CLD_TXRX/TLSHIM/tl_shim.c index fcd2955aaf84..ef00f2d6fe26 100644 --- a/CORE/CLD_TXRX/TLSHIM/tl_shim.c +++ b/CORE/CLD_TXRX/TLSHIM/tl_shim.c @@ -915,7 +915,7 @@ adf_nbuf_t WLANTL_SendSTA_DataFrame(void *vos_ctx, u_int8_t sta_id, } if (!tl_shim->sta_info[sta_id].registered) { - TLSHIM_LOGE("Staion is not yet registered for data service"); + TLSHIM_LOGW("Staion is not yet registered for data service"); return skb; } diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index 9029ab40fb51..cdf522fde2e2 100644 --- a/CORE/MAC/inc/qwlan_version.h +++ b/CORE/MAC/inc/qwlan_version.h @@ -42,9 +42,9 @@ BRIEF DESCRIPTION: #define QWLAN_VERSION_MINOR 0 #define QWLAN_VERSION_PATCH 0 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 29 +#define QWLAN_VERSION_BUILD 30 -#define QWLAN_VERSIONSTR "1.0.0.29" +#define QWLAN_VERSIONSTR "1.0.0.30" #ifdef QCA_WIFI_2_0 diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c index 489b96689ab1..4cff521738f2 100644 --- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c @@ -3611,7 +3611,8 @@ static void limProcessSwitchChannelJoinReq(tpAniSirGlobal pMac, tpPESession pses goto error; } - if ( (NULL == psessionEntry ) || (NULL == psessionEntry->pLimMlmJoinReq) ) + if ( (NULL == psessionEntry ) || (NULL == psessionEntry->pLimMlmJoinReq) || + (NULL == psessionEntry->pLimJoinReq) ) { PELOGE(limLog(pMac, LOGE, FL("invalid pointer!!"));) goto error; @@ -3674,8 +3675,16 @@ static void limProcessSwitchChannelJoinReq(tpAniSirGlobal pMac, tpPESession pses error: if(NULL != psessionEntry) { - vos_mem_free(psessionEntry->pLimMlmJoinReq); - psessionEntry->pLimMlmJoinReq = NULL; + if (psessionEntry->pLimMlmJoinReq) + { + vos_mem_free(psessionEntry->pLimMlmJoinReq); + psessionEntry->pLimMlmJoinReq = NULL; + } + if (psessionEntry->pLimJoinReq) + { + vos_mem_free(psessionEntry->pLimJoinReq); + psessionEntry->pLimJoinReq = NULL; + } mlmJoinCnf.sessionId = psessionEntry->peSessionId; } else diff --git a/CORE/SERVICES/DFS/src/dfs_phyerr_tlv.c b/CORE/SERVICES/DFS/src/dfs_phyerr_tlv.c index 7458461c1cfd..09203a357999 100644 --- a/CORE/SERVICES/DFS/src/dfs_phyerr_tlv.c +++ b/CORE/SERVICES/DFS/src/dfs_phyerr_tlv.c @@ -595,6 +595,7 @@ dfs_process_phyerr_bb_tlv(struct ath_dfs *dfs, void *buf, u_int16_t datalen, { struct rx_radar_status rs; struct rx_search_fft_report rsfr; + static int invalid_phyerr_count = 0; OS_MEMZERO(&rs, sizeof(rs)); @@ -605,14 +606,25 @@ dfs_process_phyerr_bb_tlv(struct ath_dfs *dfs, void *buf, u_int16_t datalen, */ rs.rssi = rssi; rs.raw_tsf = rs_tstamp; - /* * Try parsing the TLV set. */ if (! tlv_parse_frame(dfs, &rs, &rsfr, buf, datalen, rssi)){ - VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "%s[%d]:DFS tlv parse frame FAILED", - __func__,__LINE__); - return (0); + invalid_phyerr_count++; + /* + * Print only at every 2 power times + * to avoid flushing of the kernel + * logs, since the frequency of + * invalid phyerrors is very high + * in noisy environments. + */ + if ( !(invalid_phyerr_count & 0xFF) ) + { + VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_DEBUG, + "%s[%d]:DFS-tlv parse failed invalid phyerror count = %d", + __func__,__LINE__, invalid_phyerr_count); + } + return (0); } /* For debugging, print what we have parsed */ radar_summary_print(dfs, &rs); diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 6cfd67315154..a661cdf8ef44 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -551,7 +551,7 @@ static int wma_vdev_start_resp_handler(void *handle, u_int8_t *cmd_param_info, return -EINVAL; } vos_timer_stop(&req_msg->event_timeout); - iface = &wma->interfaces[resp_event->vdev_id]; + iface = &wma->interfaces[resp_event->vdev_id]; if (req_msg->msg_type == WDA_CHNL_SWITCH_REQ) { tpSwitchChannelParams params = (tpSwitchChannelParams) req_msg->user_data; @@ -578,6 +578,7 @@ static int wma_vdev_start_resp_handler(void *handle, u_int8_t *cmd_param_info, wma_send_msg(wma, WDA_SWITCH_CHANNEL_RSP, (void *)params, 0); } else if (req_msg->msg_type == WDA_ADD_BSS_REQ) { tpAddBssParams bssParams = (tpAddBssParams) req_msg->user_data; + vos_mem_copy(iface->bssid, bssParams->bssId, ETH_ALEN); wma_vdev_start_rsp(wma, bssParams, resp_event); } vos_timer_destroy(&req_msg->event_timeout); @@ -1348,15 +1349,14 @@ static void wma_update_noa(struct beacon_info *beacon, static void wma_update_probe_resp_noa(tp_wma_handle wma_handle, struct p2p_sub_element_noa *noa_ie) { - tSirP2PNoaAttr *noa_attr = (tSirP2PNoaAttr *) adf_os_mem_alloc( - NULL, sizeof(tSirP2PNoaAttr)); + tSirP2PNoaAttr *noa_attr = (tSirP2PNoaAttr *) vos_mem_malloc(sizeof(tSirP2PNoaAttr)); WMA_LOGD("Received update NoA event"); if (!noa_attr) { WMA_LOGE("Failed to allocate memory for tSirP2PNoaAttr"); return; } - adf_os_mem_set(noa_attr, 0, sizeof(tSirP2PNoaAttr)); + vos_mem_zero(noa_attr, sizeof(tSirP2PNoaAttr)); noa_attr->index = noa_ie->index; noa_attr->oppPsFlag = noa_ie->oppPS; @@ -12688,11 +12688,18 @@ static int wma_process_receive_filter_clear_filter_req(tp_wma_handle wma_handle, static void wma_data_tx_ack_work_handler(struct work_struct *ack_work) { - struct wma_tx_ack_work_ctx *work = container_of(ack_work, - struct wma_tx_ack_work_ctx, ack_cmp_work); - tp_wma_handle wma_handle = work->wma_handle; - pWDAAckFnTxComp ack_cb = - wma_handle->umac_data_ota_ack_cb; + struct wma_tx_ack_work_ctx *work; + tp_wma_handle wma_handle; + pWDAAckFnTxComp ack_cb; + + if (vos_is_load_unload_in_progress(VOS_MODULE_ID_WDA, NULL)) { + WMA_LOGE("%s: Driver load/unload in progress", __func__); + return; + } + + work = container_of(ack_work, struct wma_tx_ack_work_ctx, ack_cmp_work); + wma_handle = work->wma_handle; + ack_cb = wma_handle->umac_data_ota_ack_cb; WMA_LOGD("Data Tx Ack Cb Status %d", work->status); @@ -14575,19 +14582,28 @@ static int wma_scan_event_callback(WMA_HANDLE handle, u_int8_t *data, static void wma_mgmt_tx_ack_work_handler(struct work_struct *ack_work) { - struct wma_tx_ack_work_ctx *work = container_of(ack_work, - struct wma_tx_ack_work_ctx, ack_cmp_work); - pWDAAckFnTxComp ack_cb = - work->wma_handle->umac_ota_ack_cb[work->sub_type]; + struct wma_tx_ack_work_ctx *work; + tp_wma_handle wma_handle; + pWDAAckFnTxComp ack_cb; + + if (vos_is_load_unload_in_progress(VOS_MODULE_ID_WDA, NULL)) { + WMA_LOGE("%s: Driver load/unload in progress", __func__); + return; + } + + work = container_of(ack_work, struct wma_tx_ack_work_ctx, ack_cmp_work); + wma_handle = work->wma_handle; + ack_cb = wma_handle->umac_ota_ack_cb[work->sub_type]; WMA_LOGD("Tx Ack Cb SubType %d Status %d", work->sub_type, work->status); /* Call the Ack Cb registered by UMAC */ - ack_cb((tpAniSirGlobal)(work->wma_handle->mac_context), + ack_cb((tpAniSirGlobal)(wma_handle->mac_context), work->status ? 0 : 1); adf_os_mem_free(work); + wma_handle->ack_work_ctx = NULL; } /** |
