diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2014-08-09 20:16:05 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-08-09 20:16:05 -0700 |
| commit | 2da583b38170addaede55de83a9092b9044c1cf6 (patch) | |
| tree | cfb435ff86f9fbdc8bf1c5274f1c415cbc452eb8 | |
| parent | e387fa8686acd0fbbd7be2f1e2a58e2875eb1a56 (diff) | |
| parent | 9457fec0d3e90c599faa7b3e6dbb494fcb500b3e (diff) | |
Merge "Release 1.0.0.165 QCACLD WLAN Driver"
53 files changed, 353 insertions, 589 deletions
diff --git a/CORE/CLD_TXRX/HTT/htt.c b/CORE/CLD_TXRX/HTT/htt.c index c16e6c8d31b6..7ce284a19bae 100644 --- a/CORE/CLD_TXRX/HTT/htt.c +++ b/CORE/CLD_TXRX/HTT/htt.c @@ -184,8 +184,6 @@ htt_attach( /* for efficiency, store a local copy of the is_high_latency flag */ pdev->cfg.is_high_latency = ol_cfg_is_high_latency(pdev->ctrl_pdev); - pdev->cfg.default_tx_comp_req = - !ol_cfg_tx_free_at_download(pdev->ctrl_pdev); pdev->cfg.is_full_reorder_offload = ol_cfg_is_full_reorder_offload(pdev->ctrl_pdev); diff --git a/CORE/CLD_TXRX/HTT/htt_h2t.c b/CORE/CLD_TXRX/HTT/htt_h2t.c index d9d5ee573776..3ac693fd6f13 100644 --- a/CORE/CLD_TXRX/HTT/htt_h2t.c +++ b/CORE/CLD_TXRX/HTT/htt_h2t.c @@ -158,10 +158,6 @@ htt_h2t_ver_req_msg(struct htt_pdev_t *pdev) #else HTCSendPkt(pdev->htc_pdev, &pkt->htc_pkt); #endif - if ((pdev->cfg.is_high_latency) && - (!pdev->cfg.default_tx_comp_req)) { - ol_tx_target_credit_update(pdev->txrx_pdev, -1); - } return A_OK; } @@ -490,9 +486,6 @@ htt_h2t_rx_ring_cfg_msg_hl(struct htt_pdev_t *pdev) #else HTCSendPkt(pdev->htc_pdev, &pkt->htc_pkt); #endif - if (!pdev->cfg.default_tx_comp_req) { - ol_tx_target_credit_update(pdev->txrx_pdev, -1); - } return A_OK; } @@ -583,10 +576,6 @@ htt_h2t_dbg_stats_get( #else HTCSendPkt(pdev->htc_pdev, &pkt->htc_pkt); #endif - if ((pdev->cfg.is_high_latency) && - (!pdev->cfg.default_tx_comp_req)) { - ol_tx_target_credit_update(pdev->txrx_pdev, -1); - } return 0; } @@ -645,10 +634,6 @@ htt_h2t_sync_msg(struct htt_pdev_t *pdev, u_int8_t sync_cnt) #else HTCSendPkt(pdev->htc_pdev, &pkt->htc_pkt); #endif - if ((pdev->cfg.is_high_latency) && - (!pdev->cfg.default_tx_comp_req)) { - ol_tx_target_credit_update(pdev->txrx_pdev, -1); - } return A_OK; } @@ -716,10 +701,6 @@ htt_h2t_aggr_cfg_msg(struct htt_pdev_t *pdev, #else HTCSendPkt(pdev->htc_pdev, &pkt->htc_pkt); #endif - if ((pdev->cfg.is_high_latency) && - (!pdev->cfg.default_tx_comp_req)) { - ol_tx_target_credit_update(pdev->txrx_pdev, -1); - } return 0; } diff --git a/CORE/CLD_TXRX/HTT/htt_t2h.c b/CORE/CLD_TXRX/HTT/htt_t2h.c index 2593ff29377e..bd0ec60c0632 100644 --- a/CORE/CLD_TXRX/HTT/htt_t2h.c +++ b/CORE/CLD_TXRX/HTT/htt_t2h.c @@ -334,14 +334,28 @@ htt_t2h_lp_msg_handler(void *context, adf_nbuf_t htt_t2h_msg ) #endif case HTT_T2H_MSG_TYPE_TX_CREDIT_UPDATE_IND: { - u_int32_t htt_credit_delta_abs; - int32_t htt_credit_delta; - int sign; - - htt_credit_delta_abs = HTT_TX_CREDIT_DELTA_ABS_GET(*msg_word); - sign = HTT_TX_CREDIT_SIGN_BIT_GET(*msg_word) ? -1 : 1; - htt_credit_delta = sign * htt_credit_delta_abs; - ol_tx_credit_completion_handler(pdev->txrx_pdev, htt_credit_delta); + A_INT16 htt_credit_delta_abs = HTT_TX_CREDIT_DELTA_ABS_GET(*msg_word); + struct ol_txrx_pdev_t* ptxrx_pdev = pdev->txrx_pdev; + if ( HTT_TX_CREDIT_SIGN_BIT_GET(*msg_word) ) { + /* negative delta */ +#if DEBUG_CREDIT + adf_os_print(" <HTT> Decrease Credit %d - %d = %d(Msg).\n", + adf_os_atomic_read(&ptxrx_pdev->target_tx_credit), + htt_credit_delta_abs, + adf_os_atomic_read(&ptxrx_pdev->target_tx_credit) - htt_credit_delta_abs); +#endif + adf_os_atomic_add((A_INT32)(-htt_credit_delta_abs), &ptxrx_pdev->target_tx_credit); + } else { + /* positive delta */ +#if DEBUG_CREDIT + adf_os_print(" <HTT> Increase Credit %d + %d = %d(Msg).\n", + adf_os_atomic_read(&ptxrx_pdev->target_tx_credit), + htt_credit_delta_abs, + adf_os_atomic_read(&ptxrx_pdev->target_tx_credit) + htt_credit_delta_abs); +#endif + adf_os_atomic_add((A_INT32)htt_credit_delta_abs, &ptxrx_pdev->target_tx_credit); + } + break; } diff --git a/CORE/CLD_TXRX/HTT/htt_types.h b/CORE/CLD_TXRX/HTT/htt_types.h index 56369a42c303..51fddfc3552a 100644 --- a/CORE/CLD_TXRX/HTT/htt_types.h +++ b/CORE/CLD_TXRX/HTT/htt_types.h @@ -213,7 +213,6 @@ struct htt_pdev_t { struct { int is_high_latency; int is_full_reorder_offload; - int default_tx_comp_req; } cfg; struct { u_int8_t major; diff --git a/CORE/CLD_TXRX/TXRX/ol_cfg.c b/CORE/CLD_TXRX/TXRX/ol_cfg.c index 98954f0af8b1..ba111262162c 100644 --- a/CORE/CLD_TXRX/TXRX/ol_cfg.c +++ b/CORE/CLD_TXRX/TXRX/ol_cfg.c @@ -53,9 +53,6 @@ ol_pdev_handle ol_pdev_cfg_attach(adf_os_device_t osdev, cfg_ctx->is_high_latency = 1; /* 802.1Q and SNAP / LLC headers are accounted for elsewhere */ cfg_ctx->tx_download_size = 1500; -#ifdef HIF_SDIO - cfg_ctx->tx_free_at_download = 0; -#endif #else /* * Need to change HTT_LL_TX_HDR_SIZE_IP accordingly. diff --git a/CORE/CLD_TXRX/TXRX/ol_tx.c b/CORE/CLD_TXRX/TXRX/ol_tx.c index 5bf89dc46fe3..1d9233bb8a60 100644 --- a/CORE/CLD_TXRX/TXRX/ol_tx.c +++ b/CORE/CLD_TXRX/TXRX/ol_tx.c @@ -480,8 +480,7 @@ static inline adf_nbuf_t ol_tx_hl_base( ol_txrx_vdev_handle vdev, enum ol_tx_spec tx_spec, - adf_nbuf_t msdu_list, - int tx_comp_req) + adf_nbuf_t msdu_list) { struct ol_txrx_pdev_t *pdev = vdev->pdev; adf_nbuf_t msdu = msdu_list; @@ -563,7 +562,6 @@ ol_tx_hl_base( tx_msdu_info.htt.info.vdev_id = vdev->vdev_id; tx_msdu_info.htt.info.frame_type = htt_frm_type_data; tx_msdu_info.htt.info.l2_hdr_type = pdev->htt_pkt_type; - tx_msdu_info.htt.action.tx_comp_req = tx_comp_req; txq = ol_tx_classify(vdev, tx_desc, msdu, &tx_msdu_info); @@ -646,10 +644,7 @@ MSDU_LOOP_BOTTOM: adf_nbuf_t ol_tx_hl(ol_txrx_vdev_handle vdev, adf_nbuf_t msdu_list) { - struct ol_txrx_pdev_t *pdev = vdev->pdev; - int tx_comp_req = pdev->cfg.default_tx_comp_req; - - return ol_tx_hl_base(vdev, ol_tx_spec_std, msdu_list, tx_comp_req); + return ol_tx_hl_base(vdev, ol_tx_spec_std, msdu_list); } adf_nbuf_t @@ -658,16 +653,7 @@ ol_tx_non_std_hl( enum ol_tx_spec tx_spec, adf_nbuf_t msdu_list) { - struct ol_txrx_pdev_t *pdev = vdev->pdev; - int tx_comp_req = pdev->cfg.default_tx_comp_req; - - if (!tx_comp_req) { - if ((tx_spec == ol_tx_spec_no_free) && - (pdev->tx_data_callback.func)) { - tx_comp_req = 1; - } - } - return ol_tx_hl_base(vdev, tx_spec, msdu_list, tx_comp_req); + return ol_tx_hl_base(vdev, tx_spec, msdu_list); } adf_nbuf_t @@ -768,7 +754,6 @@ ol_txrx_mgmt_send( adf_nbuf_map_single(pdev->osdev, tx_mgmt_frm, ADF_OS_DMA_TO_DEVICE); if (pdev->cfg.is_high_latency) { - tx_msdu_info.htt.action.tx_comp_req = 1; tx_desc = ol_tx_desc_hl(pdev, vdev, tx_mgmt_frm, &tx_msdu_info); } else { tx_desc = ol_tx_desc_ll(pdev, vdev, tx_mgmt_frm, &tx_msdu_info); diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_send.c b/CORE/CLD_TXRX/TXRX/ol_tx_send.c index 86c86adaeae7..faf499ddf2a4 100644 --- a/CORE/CLD_TXRX/TXRX/ol_tx_send.c +++ b/CORE/CLD_TXRX/TXRX/ol_tx_send.c @@ -326,14 +326,7 @@ ol_tx_download_done_hl_free( tx_desc = ol_tx_desc_find(pdev, msdu_id); adf_os_assert(tx_desc); - - ol_tx_download_done_base(pdev, status, msdu, msdu_id); - - if ((tx_desc->pkt_type != ol_tx_frm_no_free) && - (tx_desc->pkt_type < OL_TXRX_MGMT_TYPE_BASE)) { - adf_os_atomic_add(1, &pdev->tx_queue.rsrc_cnt); - ol_tx_desc_frame_free_nonstd(pdev, tx_desc, status != A_OK); - } + ol_tx_desc_frame_free_nonstd(pdev, tx_desc, status != A_OK); #if 0 /* TODO: Advanced feature */ //ol_tx_dwl_sched(pdev, OL_TX_HL_SCHED_DOWNLOAD_DONE); adf_os_assert(0); @@ -475,17 +468,6 @@ ol_tx_discard_target_frms(ol_txrx_pdev_handle pdev) } } -void -ol_tx_credit_completion_handler(ol_txrx_pdev_handle pdev, int credits) -{ - ol_tx_target_credit_update(pdev, credits); - if (pdev->cfg.is_high_latency) { - ol_tx_sched(pdev); - } - /* UNPAUSE OS Q */ - OL_TX_FLOW_CT_UNPAUSE_OS_Q(pdev); -} - /* WARNING: ol_tx_inspect_handler()'s bahavior is similar to that of ol_tx_completion_handler(). * any change in ol_tx_completion_handler() must be mirrored in ol_tx_inspect_handler(). */ diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx.c b/CORE/CLD_TXRX/TXRX/ol_txrx.c index ea8382edf4d2..9b7c1a903d9b 100644 --- a/CORE/CLD_TXRX/TXRX/ol_txrx.c +++ b/CORE/CLD_TXRX/TXRX/ol_txrx.c @@ -255,7 +255,6 @@ ol_txrx_pdev_attach( /* init LL/HL cfg here */ pdev->cfg.is_high_latency = ol_cfg_is_high_latency(ctrl_pdev); - pdev->cfg.default_tx_comp_req = !ol_cfg_tx_free_at_download(ctrl_pdev); /* store provided params */ pdev->ctrl_pdev = ctrl_pdev; diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx_types.h b/CORE/CLD_TXRX/TXRX/ol_txrx_types.h index a60c1acb8286..42d7e69adb38 100644 --- a/CORE/CLD_TXRX/TXRX/ol_txrx_types.h +++ b/CORE/CLD_TXRX/TXRX/ol_txrx_types.h @@ -391,7 +391,6 @@ struct ol_txrx_pdev_t { int is_high_latency; int host_addba; int ll_pause_txq_limit; - int default_tx_comp_req; } cfg; /* WDI subscriber's event list */ diff --git a/CORE/EPPING/src/epping_helper.c b/CORE/EPPING/src/epping_helper.c index 353b4bdef823..fb720de2ba04 100644 --- a/CORE/EPPING/src/epping_helper.c +++ b/CORE/EPPING/src/epping_helper.c @@ -46,7 +46,6 @@ #include <linux/delay.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/EPPING/src/epping_main.c b/CORE/EPPING/src/epping_main.c index 3bb63e857f01..cfd8338b5ed1 100644 --- a/CORE/EPPING/src/epping_main.c +++ b/CORE/EPPING/src/epping_main.c @@ -45,7 +45,6 @@ #include <linux/firmware.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/EPPING/src/epping_rx.c b/CORE/EPPING/src/epping_rx.c index cb9e6c795083..909729956894 100644 --- a/CORE/EPPING/src/epping_rx.c +++ b/CORE/EPPING/src/epping_rx.c @@ -45,7 +45,6 @@ #include <linux/firmware.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/EPPING/src/epping_tx.c b/CORE/EPPING/src/epping_tx.c index 2499e15f1c21..75f6a0cc6fad 100644 --- a/CORE/EPPING/src/epping_tx.c +++ b/CORE/EPPING/src/epping_tx.c @@ -45,7 +45,6 @@ #include <linux/firmware.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/EPPING/src/epping_txrx.c b/CORE/EPPING/src/epping_txrx.c index cf2a7d4074d3..bd8c7154687f 100644 --- a/CORE/EPPING/src/epping_txrx.c +++ b/CORE/EPPING/src/epping_txrx.c @@ -45,7 +45,6 @@ #include <linux/firmware.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c index a16e5a560245..7e9c869c280d 100644 --- a/CORE/HDD/src/wlan_hdd_assoc.c +++ b/CORE/HDD/src/wlan_hdd_assoc.c @@ -1579,6 +1579,14 @@ static eHalStatus hdd_AssociationCompletionHandler( hdd_adapter_t *pAdapter, tCs { if ( !hddDisconInProgress ) { + /* After roaming is completed, active session count is + * incremented as a part of connect indication but + * effectively the active session count should still + * be the same and hence upon successful reassoc + * decrement the active session count here */ + wlan_hdd_decr_active_session(pHddCtx, + pAdapter->device_mode); + hddLog(LOG1, "%s ft_carrier_on is %d, sending roamed " "indication", __FUNCTION__, ft_carrier_on); chan = ieee80211_get_channel(pAdapter->wdev.wiphy, diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 3b5b01eb558a..c724d236eb87 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -12953,26 +12953,29 @@ static int wlan_hdd_cfg80211_set_mac_acl(struct wiphy *wiphy, #ifdef FEATURE_WLAN_LPHB void wlan_hdd_cfg80211_lphb_ind_handler ( - void *pAdapter, - void *indCont + void *pHddCtx, + tSirLPHBInd *lphbInd ) { - tSirLPHBInd *lphbInd; struct sk_buff *skb; VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, "LPHB indication arrived"); - if (NULL == indCont) - { + if (0 != wlan_hdd_validate_context((hdd_context_t *)pHddCtx)) { + VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, + "%s: invalid argument pHddCtx", __func__); + return; + } + + if (NULL == lphbInd) { VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, - "LPHB IND, invalid argument"); + "%s: invalid argument lphbInd", __func__); return; } - lphbInd = (tSirLPHBInd *)indCont; skb = cfg80211_testmode_alloc_event_skb( - ((hdd_adapter_t *)pAdapter)->wdev.wiphy, + ((hdd_context_t *)pHddCtx)->wiphy, sizeof(tSirLPHBInd), GFP_ATOMIC); if (!skb) diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 5a9493e34914..ec16099fd152 100755 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -67,7 +67,6 @@ #include <linux/firmware.h> #include <wcnss_api.h> #include <wlan_hdd_tx_rx.h> -#include <palTimer.h> #include <wniApi.h> #include <wlan_nlink_srv.h> #include <wlan_btc_svc.h> diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c index 4c9f73e81221..6b10f8d915e8 100644 --- a/CORE/HDD/src/wlan_hdd_tdls.c +++ b/CORE/HDD/src/wlan_hdd_tdls.c @@ -2122,6 +2122,8 @@ static void __wlan_hdd_tdls_pre_setup(struct work_struct *work) vos_mem_copy(&peer_mac, curr_peer->peerMac, sizeof(peer_mac)); + mutex_unlock(&pHddCtx->tdls_lock); + /* * If Powersave Offload is enabled * Fw will take care incase of concurrency @@ -2137,6 +2139,9 @@ static void __wlan_hdd_tdls_pre_setup(struct work_struct *work) } temp_peer = wlan_hdd_tdls_is_progress(pHddCtx, NULL, 0); + + mutex_lock(&pHddCtx->tdls_lock); + if (NULL != temp_peer) { VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "%s: " MAC_ADDRESS_STR " ongoing. pre_setup ignored", diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index dd66c6ef7415..2870030a8316 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 164 +#define QWLAN_VERSION_BUILD 165 -#define QWLAN_VERSIONSTR "1.0.0.164" +#define QWLAN_VERSIONSTR "1.0.0.165" #ifdef QCA_WIFI_2_0 diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h index 1f734bcee41d..e7972f973fe6 100644 --- a/CORE/MAC/inc/sirApi.h +++ b/CORE/MAC/inc/sirApi.h @@ -3406,6 +3406,7 @@ typedef struct sSirUpdateAPWPARSNIEsReq #ifdef WLAN_FEATURE_ROAM_OFFLOAD #define SIR_ROAM_SCAN_PSK_SIZE 32 +#define SIR_ROAM_R0KH_ID_MAX_LEN 48 #endif // SME -> HAL - This is the host offload request. #define SIR_IPV4_ARP_REPLY_OFFLOAD 0 @@ -3764,7 +3765,7 @@ typedef struct sSirRoamOffloadScanReq tANI_U8 BTK[SIR_BTK_KEY_LEN]; tANI_U32 ReassocFailureTimeout; tSirAcUapsd AcUapsd; - tANI_U32 R0KH_ID; + tANI_U8 R0KH_ID[SIR_ROAM_R0KH_ID_MAX_LEN]; tANI_U32 R0KH_ID_Length; #endif } tSirRoamOffloadScanReq, *tpSirRoamOffloadScanReq; diff --git a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c index f83aebc95dc9..8dcd0e641e00 100644 --- a/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c +++ b/CORE/MAC/src/pe/lim/limProcessAssocRspFrame.c @@ -320,7 +320,6 @@ limProcessAssocRspFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tANI_U8 sub tSchBeaconStruct *pBeaconStruct; #ifdef WLAN_FEATURE_ROAM_OFFLOAD tANI_U8 smeSessionId = 0; - tANI_U32 r0kh_id_len; #endif //Initialize status code to success. @@ -535,19 +534,19 @@ limProcessAssocRspFrame(tpAniSirGlobal pMac, tANI_U8 *pRxPacketInfo, tANI_U8 sub #endif #ifdef WLAN_FEATURE_ROAM_OFFLOAD - if(pAssocRsp->FTInfo.R0KH_ID.present) + if (pAssocRsp->FTInfo.R0KH_ID.present) { - r0kh_id_len = pAssocRsp->FTInfo.R0KH_ID.num_PMK_R0_ID; pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id_len = - (r0kh_id_len >= sizeof(tANI_U32))? sizeof(tANI_U32):r0kh_id_len; - vos_mem_copy(&pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id, - &pAssocRsp->FTInfo.R0KH_ID.PMK_R0_ID[0], - pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id_len); + pAssocRsp->FTInfo.R0KH_ID.num_PMK_R0_ID; + vos_mem_copy(pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id, + pAssocRsp->FTInfo.R0KH_ID.PMK_R0_ID, + pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id_len); } else { pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id_len = 0; - pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id = 0; + vos_mem_zero(pMac->roam.roamSession[smeSessionId].ftSmeContext.r0kh_id, + SIR_ROAM_R0KH_ID_MAX_LEN); } #endif diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c index e0ac873cce73..ac227b7e32b2 100644 --- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c @@ -435,6 +435,10 @@ limProcessMlmStartCnf(tpAniSirGlobal pMac, tANI_U32 *pMsgBuf) (vos_nv_getChannelEnabledState(channelId) != NV_CHANNEL_DFS)) ) { //Configure beacon and send beacons to HAL + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, + FL("Start Beacon with ssid %s Ch %d"), + psessionEntry->ssId.ssId, + psessionEntry->currentOperChannel); limSendBeaconInd(pMac, psessionEntry); } } diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c index b696c2b5d9bb..0673a0333d1e 100644 --- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c +++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c @@ -5871,6 +5871,10 @@ limProcessSmeStartBeaconReq(tpAniSirGlobal pMac, tANI_U32 * pMsg) * Tx right after the WDA_ADD_BSS_RSP. */ limApplyConfiguration(pMac,psessionEntry); + VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO, + FL("Start Beacon with ssid %s Ch %d"), + psessionEntry->ssId.ssId, + psessionEntry->currentOperChannel); limSendBeaconInd(pMac, psessionEntry); } else diff --git a/CORE/SERVICES/COMMON/dbglog.h b/CORE/SERVICES/COMMON/dbglog.h index 1eae88b9ef89..afc3bb0e02eb 100644 --- a/CORE/SERVICES/COMMON/dbglog.h +++ b/CORE/SERVICES/COMMON/dbglog.h @@ -129,83 +129,6 @@ PREPACK struct dbglog_hdr_host { #define DBGLOG_MAX_VDEVID 15 /* 0-15 */ -/** value representing all modules */ -#define WMI_DEBUG_LOG_MODULE_ALL 0xffff - -/* param definitions */ - -/** - * Log level for a given module. Value contains both module id and log level. - * here is the bitmap definition for value. - * module Id : 16 - * Flags : reserved - * Level : 8 - * if odule Id is WMI_DEBUG_LOG_MODULE_ALL then log level is applied to all modules (global). - * WMI_DEBUG_LOG_MIDULE_ALL will overwrites per module level setting. - */ -#define WMI_DEBUG_LOG_PARAM_LOG_LEVEL 0x1 - -#define WMI_DBGLOG_SET_LOG_LEVEL(val,lvl) do { \ - (val) |= (lvl & 0xff); \ - } while(0) - -#define WMI_DBGLOG_GET_LOG_LEVEL(val) ((val) & 0xff) - -#define WMI_DBGLOG_SET_MODULE_ID(val,mid) do { \ - (val) |= ((mid & 0xffff) << 16); \ - } while(0) - -#define WMI_DBGLOG_GET_MODULE_ID(val) (( (val) >> 16) & 0xffff) - -/** - * Enable the debug log for a given vdev. Value is vdev id - */ -#define WMI_DEBUG_LOG_PARAM_VDEV_ENABLE 0x2 - -/** - * Disable the debug log for a given vdev. Value is vdev id - * All the log level for a given VDEV is disabled except the ERROR log messages - */ -#define WMI_DEBUG_LOG_PARAM_VDEV_DISABLE 0x3 - -/** - * set vdev enable bitmap. value is the vden enable bitmap - */ -#define WMI_DEBUG_LOG_PARAM_VDEV_ENABLE_BITMAP 0x4 - -/** - * set a given log level to all the modules specified in the module bitmap. - * and set the log levle for all other modules to DBGLOG_ERR. - * value: log levelt to be set. - * module_id_bitmap : identifies the modules for which the log level should be set and - * modules for which the log level should be reset to DBGLOG_ERR. - */ -#define WMI_DEBUG_LOG_PARAM_MOD_ENABLE_BITMAP 0x5 - -#define NUM_MODULES_PER_ENTRY ((sizeof(A_UINT32)) << 3) - -#define WMI_MODULE_ENABLE(pmid_bitmap,mod_id) \ - ( (pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY] |= \ - (1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) - -#define WMI_MODULE_DISABLE(pmid_bitmap,mod_id) \ - ( (pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY] &= \ - ( ~(1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) ) - -#define WMI_MODULE_IS_ENABLED(pmid_bitmap,mod_id) \ - ( ((pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY ] & \ - (1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) != 0) - -#define MAX_MODULE_ID_BITMAP_WORDS 16 /* 16*32=512 module ids. should be more than sufficient */ -typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_debug_log_config_cmd_fixed_param */ - A_UINT32 dbg_log_param; /** param types are defined above */ - A_UINT32 value; - /* The below array will follow this tlv ->fixed length module_id_bitmap[] - A_UINT32 module_id_bitmap[MAX_MODULE_ID_BITMAP_WORDS]; - */ -} wmi_debug_log_config_cmd_fixed_param; - #ifdef __cplusplus } #endif diff --git a/CORE/SERVICES/COMMON/ol_htt_tx_api.h b/CORE/SERVICES/COMMON/ol_htt_tx_api.h index f4eeafbf9aac..323c71d0b2fa 100644 --- a/CORE/SERVICES/COMMON/ol_htt_tx_api.h +++ b/CORE/SERVICES/COMMON/ol_htt_tx_api.h @@ -154,8 +154,6 @@ struct htt_msdu_info_t { u_int8_t use_6mbps; /* mgmt frames: option to force 6 Mbps rate */ u_int8_t do_encrypt; u_int8_t do_tx_complete; - u_int8_t tx_comp_req; - /* * cksum_offload - Specify whether checksum offload is enabled or not * Target FW uses this flag to turn on HW checksumming @@ -411,7 +409,6 @@ htt_tx_desc_init( HTT_TX_DESC_VDEV_ID_SET(local_word0, msdu_info->info.vdev_id); HTT_TX_DESC_EXT_TID_SET(local_word0, msdu_info->info.ext_tid); HTT_TX_DESC_CKSUM_OFFLOAD_SET(local_word0, msdu_info->action.cksum_offload); - HTT_TX_DESC_TX_COMP_SET(local_word0, msdu_info->action.tx_comp_req); HTT_TX_DESC_NO_ENCRYPT_SET(local_word0, msdu_info->action.do_encrypt ? 0 : 1); *word0 = local_word0; diff --git a/CORE/SERVICES/COMMON/ol_txrx_htt_api.h b/CORE/SERVICES/COMMON/ol_txrx_htt_api.h index 9a1f164f9b3c..e0e07e6ccf69 100644 --- a/CORE/SERVICES/COMMON/ol_txrx_htt_api.h +++ b/CORE/SERVICES/COMMON/ol_txrx_htt_api.h @@ -164,9 +164,6 @@ ol_tx_completion_handler( enum htt_tx_status status, void *tx_msdu_id_iterator); -void -ol_tx_credit_completion_handler(ol_txrx_pdev_handle pdev, int credits); - /** * @brief Init the total amount of target credit. * @details diff --git a/CORE/SERVICES/COMMON/targaddrs.h b/CORE/SERVICES/COMMON/targaddrs.h index 48b628a6c67e..4f916980567f 100644 --- a/CORE/SERVICES/COMMON/targaddrs.h +++ b/CORE/SERVICES/COMMON/targaddrs.h @@ -283,6 +283,9 @@ PREPACK64 struct host_interest_s { /* minidump buffer */ A_UINT32 hi_minidump; /* 0x118 */ + /* bdata's sig and key addr */ + A_UINT32 hi_bd_sig_key; /* 0x11c */ + } POSTPACK64; /* bitmap for hi_test_apps_related */ diff --git a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h index 513d03259148..1016a25dec2a 100644 --- a/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h +++ b/CORE/SERVICES/COMMON/wlan_tgt_def_config_hl.h @@ -210,7 +210,17 @@ #ifndef HIF_SDIO #define CFG_TGT_NUM_MSDU_DESC (32) #else -#define CFG_TGT_NUM_MSDU_DESC (0) +/* + * For SDIO Only 16 tx-buffers are hooked onto SDIO MBOX DMA engine + * in Firmware. So set the targe number of descriptors to map the + * same. + * This is only temporary solution. + * The better solution is defining CFG_TGT_NUM_MSDU_DESC to be 0 + * and waiting for an initial TX_TARGET_CREDIT_UPDATE_IND message + * from the FW to know how many tx buffers the FW has provided + * for the host's downloads. + */ +#define CFG_TGT_NUM_MSDU_DESC (16) #endif /* * Maximum number of frag table entries diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index cffcb13d4dfa..f756ab3f4e92 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -230,7 +230,7 @@ typedef enum { WMI_PDEV_GET_TPC_CONFIG_CMDID, /** set the base MAC address for the physical device before a VDEV is created. - * For firmware that doesnt support this feature and this command, the pdev + * For firmware that doesn't support this feature and this command, the pdev * MAC address will not be changed. */ WMI_PDEV_SET_BASE_MACADDR_CMDID, @@ -4178,8 +4178,6 @@ typedef struct { * is assigned up to 127 */ /* Reserved from 128 - 255 for * target internal use.*/ - WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created - * during offload roam */ }; typedef struct { @@ -4637,6 +4635,7 @@ typedef struct _wlan_dcs_im_tgt_stats { * and target chip is not in sleep. * */ + /** listen time from ANI */ A_INT32 listen_time; @@ -5044,7 +5043,7 @@ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_11r_offload_fixed_param */ A_UINT32 mdie_present; A_UINT32 mdid; - A_UINT32 r0kh_id; + A_UINT32 r0kh_id[ROAM_OFFLOAD_R0KH_ID_MAX_LEN>>2]; A_UINT32 r0kh_id_len; A_UINT32 psk_msk[ROAM_OFFLOAD_PSK_MSK_BYTES>>2]; /* psk/msk offload. As this 4 byte aligned, we don't declare it as tlv array */ } wmi_roam_11r_offload_tlv_param; @@ -5358,6 +5357,7 @@ typedef enum event_type_e { WOW_ACER_IOAC_EXTEND_EVENT, WOW_ACER_IOAC_TIMER_EVENT, WOW_DFS_PHYERR_RADAR_EVENT, + WOW_BEACON_EVENT, }WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -5388,6 +5388,7 @@ typedef enum wake_reason_e { WOW_REASON_ACER_IOAC_TIMER_EVENT, WOW_REASON_ROAM_HO, WOW_REASON_DFS_PHYERR_RADADR_EVENT, + WOW_REASON_BEACON_RECV, WOW_REASON_DEBUG_TEST = 0xFF, }WOW_WAKE_REASON_TYPE; @@ -7170,7 +7171,7 @@ typedef enum { WMI_LPI_STATUS_REQ_TIME_OUT = 5, /** Medium Bussy, already there * is a scan is going on */ - WMI_LPI_STATUS_MEDIUM_BUSSY = 6, + WMI_LPI_STATUS_MEDIUM_BUSY = 6, }wmi_lpi_staus; typedef struct @@ -7187,8 +7188,9 @@ typedef struct A_UINT32 tlv_header; wmi_mac_addr bssid; wmi_ssid ssid; - A_UINT16 freq; + A_UINT32 freq; A_UINT32 rssi; + A_UINT32 vdev_id; } wmi_lpi_handoff_event_fixed_param; typedef struct @@ -8435,6 +8437,85 @@ typedef struct{ A_UINT32 reserved0; /* for future need */ } wmi_d0_wow_disable_ack_event_fixed_param; +/** value representing all modules */ +#define WMI_DEBUG_LOG_MODULE_ALL 0xffff + +/* param definitions */ + +/** + * Log level for a given module. Value contains both module id and log level. + * here is the bitmap definition for value. + * module Id : 16 + * Flags : reserved + * Level : 8 + * if odule Id is WMI_DEBUG_LOG_MODULE_ALL then log level is applied to all modules (global). + * WMI_DEBUG_LOG_MIDULE_ALL will overwrites per module level setting. + */ +#define WMI_DEBUG_LOG_PARAM_LOG_LEVEL 0x1 + +#define WMI_DBGLOG_SET_LOG_LEVEL(val,lvl) do { \ + (val) |= (lvl & 0xff); \ + } while(0) + +#define WMI_DBGLOG_GET_LOG_LEVEL(val) ((val) & 0xff) + +#define WMI_DBGLOG_SET_MODULE_ID(val,mid) do { \ + (val) |= ((mid & 0xffff) << 16); \ + } while(0) + +#define WMI_DBGLOG_GET_MODULE_ID(val) (( (val) >> 16) & 0xffff) + +/** + * Enable the debug log for a given vdev. Value is vdev id + */ +#define WMI_DEBUG_LOG_PARAM_VDEV_ENABLE 0x2 + + +/** + * Disable the debug log for a given vdev. Value is vdev id + * All the log level for a given VDEV is disabled except the ERROR log messages + */ + +#define WMI_DEBUG_LOG_PARAM_VDEV_DISABLE 0x3 + +/** + * set vdev enable bitmap. value is the vden enable bitmap + */ +#define WMI_DEBUG_LOG_PARAM_VDEV_ENABLE_BITMAP 0x4 + +/** + * set a given log level to all the modules specified in the module bitmap. + * and set the log levle for all other modules to DBGLOG_ERR. + * value: log levelt to be set. + * module_id_bitmap : identifies the modules for which the log level should be set and + * modules for which the log level should be reset to DBGLOG_ERR. + */ +#define WMI_DEBUG_LOG_PARAM_MOD_ENABLE_BITMAP 0x5 + +#define NUM_MODULES_PER_ENTRY ((sizeof(A_UINT32)) << 3) + +#define WMI_MODULE_ENABLE(pmid_bitmap,mod_id) \ + ( (pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY] |= \ + (1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) + +#define WMI_MODULE_DISABLE(pmid_bitmap,mod_id) \ + ( (pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY] &= \ + ( ~(1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) ) + +#define WMI_MODULE_IS_ENABLED(pmid_bitmap,mod_id) \ + ( ((pmid_bitmap)[(mod_id)/NUM_MODULES_PER_ENTRY ] & \ + (1 << ((mod_id)%NUM_MODULES_PER_ENTRY)) ) != 0) + +#define MAX_MODULE_ID_BITMAP_WORDS 16 /* 16*32=512 module ids. should be more than sufficient */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_debug_log_config_cmd_fixed_param */ + A_UINT32 dbg_log_param; /** param types are defined above */ + A_UINT32 value; + /* The below array will follow this tlv ->fixed length module_id_bitmap[] + A_UINT32 module_id_bitmap[MAX_MODULE_ID_BITMAP_WORDS]; + */ +} wmi_debug_log_config_cmd_fixed_param; + #ifdef __cplusplus } #endif diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 45b7470e5def..5fe292d8e3f2 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/wmi_version.h @@ -37,7 +37,7 @@ /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 57 +#define __WMI_REVISION_ 58 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index e7ed64cd0280..7086de41231d 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -7316,8 +7316,9 @@ VOS_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle, buf_ptr += WMI_TLV_HDR_SIZE; roam_offload_11r = (wmi_roam_11r_offload_tlv_param *) buf_ptr; - roam_offload_11r->r0kh_id = roam_req->R0KH_ID; roam_offload_11r->r0kh_id_len = roam_req->R0KH_ID_Length; + vos_mem_copy (roam_offload_11r->r0kh_id, roam_req->R0KH_ID, + roam_offload_11r->r0kh_id_len); vos_mem_copy (roam_offload_11r->psk_msk, roam_req->PSK_PMK, sizeof(roam_req->PSK_PMK)); roam_offload_11r->mdie_present = roam_req->MDID.mdiePresent; @@ -8403,11 +8404,15 @@ VOS_STATUS wma_process_roam_scan_req(tp_wma_handle wma_handle, #ifdef FEATURE_WLAN_LPHB /* function : wma_lphb_conf_hbenable * Description : handles the enable command of LPHB configuration requests - * Args : + * Args : wma_handle - WMA handle + * lphb_conf_req - configuration info + * by_user - whether this call is from user or cached resent * Returns : */ VOS_STATUS wma_lphb_conf_hbenable(tp_wma_handle wma_handle, - tSirLPHBReq *lphb_conf_req) + tSirLPHBReq *lphb_conf_req, + v_BOOL_t by_user) + { VOS_STATUS vos_status = VOS_STATUS_SUCCESS; int status = 0; @@ -8416,6 +8421,7 @@ VOS_STATUS wma_lphb_conf_hbenable(tp_wma_handle wma_handle, u_int8_t *buf_ptr; wmi_hb_set_enable_cmd_fixed_param *hb_enable_fp; int len = sizeof(wmi_hb_set_enable_cmd_fixed_param); + int i; if (lphb_conf_req == NULL) { @@ -8430,6 +8436,13 @@ VOS_STATUS wma_lphb_conf_hbenable(tp_wma_handle wma_handle, ts_lphb_enable->item, ts_lphb_enable->session); + if ((ts_lphb_enable->item != 1) && (ts_lphb_enable->item != 2)) { + WMA_LOGE("%s : LPHB configuration wrong item %d", + __func__, + ts_lphb_enable->item); + return VOS_STATUS_E_FAILURE; + } + buf = wmi_buf_alloc(wma_handle->wmi_handle, len); if (!buf) { WMA_LOGE("%s : wmi_buf_alloc failed", __func__); @@ -8458,6 +8471,29 @@ VOS_STATUS wma_lphb_conf_hbenable(tp_wma_handle wma_handle, goto error; } + if (by_user) { + /* target already configured, now cache command status */ + if (ts_lphb_enable->enable) { + i = ts_lphb_enable->item-1; + wma_handle->wow.lphb_cache[i].cmd + = LPHB_SET_EN_PARAMS_INDID; + wma_handle->wow.lphb_cache[i].params.lphbEnableReq.enable + = ts_lphb_enable->enable; + wma_handle->wow.lphb_cache[i].params.lphbEnableReq.item + = ts_lphb_enable->item; + wma_handle->wow.lphb_cache[i].params.lphbEnableReq.session + = ts_lphb_enable->session; + + WMA_LOGI("%s: cached LPHB status in WMA context for item %d", + __func__, i); + } else { + vos_mem_zero((void *)&wma_handle->wow.lphb_cache, + sizeof(wma_handle->wow.lphb_cache)); + WMA_LOGI("%s: cleared all cached LPHB status in WMA context", + __func__); + } + } + return VOS_STATUS_SUCCESS; error: return vos_status; @@ -8778,7 +8814,7 @@ VOS_STATUS wma_process_lphb_conf_req(tp_wma_handle wma_handle, switch (lphb_conf_req->cmd) { case LPHB_SET_EN_PARAMS_INDID: vos_status = wma_lphb_conf_hbenable(wma_handle, - lphb_conf_req); + lphb_conf_req, TRUE); break; case LPHB_SET_TCP_PARAMS_INDID: @@ -13117,8 +13153,12 @@ static void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta) oper_mode = BSS_OPERATIONAL_MODE_AP; } #ifdef QCA_IBSS_SUPPORT - else if (wma_is_vdev_in_ibss_mode(wma, add_sta->smesessionId)) + else if (wma_is_vdev_in_ibss_mode(wma, add_sta->smesessionId)) { oper_mode = BSS_OPERATIONAL_MODE_IBSS; +#ifdef FEATURE_WLAN_D0WOW + wma_add_pm_vote(wma); +#endif + } #endif switch (oper_mode) { @@ -13774,8 +13814,11 @@ static void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta) #ifdef QCA_IBSS_SUPPORT if (wma_is_vdev_in_ibss_mode(wma, del_sta->smesessionId)) { oper_mode = BSS_OPERATIONAL_MODE_IBSS; +#ifdef FEATURE_WLAN_D0WOW + wma_del_pm_vote(wma); +#endif WMA_LOGD("%s: to delete sta for IBSS mode", __func__); - } + } #endif switch (oper_mode) { @@ -15930,6 +15973,8 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason) case WOW_REASON_RA_MATCH: return "WOW_REASON_RA_MATCH"; #endif + case WOW_REASON_BEACON_RECV: + return "WOW_REASON_IBSS_BEACON_RECV"; #ifdef FEATURE_WLAN_AUTO_SHUTDOWN case WOW_REASON_HOST_AUTO_SHUTDOWN: return "WOW_REASON_HOST_AUTO_SHUTDOWN"; @@ -16926,6 +16971,9 @@ static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma, u_int8_t vdev_id; u_int8_t enable_ptrn_match = 0; v_BOOL_t ap_vdev_available = FALSE; +#ifdef QCA_IBSS_SUPPORT + v_BOOL_t ibss_vdev_available = FALSE; +#endif /* Gather list of free ptrn id. This is needed while configuring * default wow patterns. @@ -16951,6 +16999,11 @@ static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma, ) ap_vdev_available = TRUE; +#ifdef QCA_IBSS_SUPPORT + if (wma_is_vdev_in_ibss_mode(wma, vdev_id)) + ibss_vdev_available = TRUE; +#endif + if (wma_is_wow_prtn_cached(wma, vdev_id)) { /* Configure wow patterns provided by the user */ ret = wma_wow_usr(wma, vdev_id, &enable_ptrn_match); @@ -17139,6 +17192,20 @@ static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma, } else WMA_LOGE("Configure auto shutdown WOW event to FW: success"); #endif + +#ifdef QCA_IBSS_SUPPORT + /* Configure beacon based wakeup */ + ret = wma_add_wow_wakeup_event(wma, + WOW_BEACON_EVENT,ibss_vdev_available); + if (ret != VOS_STATUS_SUCCESS) { + WMA_LOGE("Failed to configure IBSS Beacon based wakeup"); + goto end; + } else { + WMA_LOGD("IBSS Beacon based wakeup is %s in fw", + ibss_vdev_available ? "enabled" : "disabled"); + } +#endif + /* WOW is enabled in pcie suspend callback */ wma->wow.wow_enable = TRUE; wma->wow.wow_enable_cmd_sent = FALSE; @@ -17373,6 +17440,23 @@ enable_wow: * At this point, suspend indication is received on * last vdev. It's the time to enable wow in fw. */ +#ifdef FEATURE_WLAN_LPHB + /* LPHB cache, if any item was enabled, should be + * applied. + */ + WMA_LOGD("%s: checking LPHB cache", __func__); + for (i = 0; i < 2; i++) { + if (wma->wow.lphb_cache[i].params.lphbEnableReq.enable) { + WMA_LOGD("%s: LPHB cache for item %d is marked as enable", + __func__, i + 1); + wma_lphb_conf_hbenable( + wma, + &(wma->wow.lphb_cache[i]), + FALSE); + } + } +#endif + ret = wma_feed_wow_config_to_fw(wma, pno_in_progress); if (ret != VOS_STATUS_SUCCESS) { vos_mem_free(info); @@ -19483,7 +19567,6 @@ VOS_STATUS wma_process_init_thermal_info(tp_wma_handle wma, VOS_STATUS wma_process_set_thermal_level(tp_wma_handle wma, u_int8_t *pThermalLevel) { - t_thermal_cmd_params thermal_params; u_int8_t thermal_level; ol_txrx_pdev_handle curr_pdev; @@ -19501,7 +19584,7 @@ VOS_STATUS wma_process_set_thermal_level(tp_wma_handle wma, return VOS_STATUS_E_FAILURE; } - WMA_LOGD("TM set level %d", thermal_level); + WMA_LOGE("TM set level %d", thermal_level); /* Check if thermal mitigation is enabled */ if (!wma->thermal_mgmt_info.thermalMgmtEnabled) { @@ -19524,20 +19607,6 @@ VOS_STATUS wma_process_set_thermal_level(tp_wma_handle wma, ol_tx_throttle_set_level(curr_pdev, thermal_level); - /*set the thermal level in the firmware*/ - /* Get the temperature thresholds to set in firmware */ - thermal_params.minTemp = - wma->thermal_mgmt_info.thermalLevels[thermal_level].minTempThreshold; - thermal_params.maxTemp = - wma->thermal_mgmt_info.thermalLevels[thermal_level].maxTempThreshold; - thermal_params.thermalEnable = - wma->thermal_mgmt_info.thermalMgmtEnabled; - - if (VOS_STATUS_SUCCESS != wma_set_thermal_mgmt(wma, thermal_params)) { - WMA_LOGE("Could not send thermal mgmt command to the firmware!"); - return VOS_STATUS_E_FAILURE; - } - return VOS_STATUS_SUCCESS; } @@ -22037,14 +22106,18 @@ static int wma_mcc_vdev_tx_pause_evt_handler(void *handle, u_int8_t *event, /* UNPAUSE action, clean bitmap */ else if (ACTION_UNPAUSE == wmi_event->action) { - wma->interfaces[vdev_id].pause_bitmap &= ~(1 << wmi_event->pause_type); - - if (!wma->interfaces[vdev_id].pause_bitmap) + /* Handle unpause only if already paused*/ + if(wma->interfaces[vdev_id].pause_bitmap) { - /* PAUSE BIT MAP is cleared - * UNPAUSE VDEV */ - wdi_in_vdev_unpause(wma->interfaces[vdev_id].handle, - OL_TXQ_PAUSE_REASON_FW); + wma->interfaces[vdev_id].pause_bitmap &= ~(1 << wmi_event->pause_type); + + if (!wma->interfaces[vdev_id].pause_bitmap) + { + /* PAUSE BIT MAP is cleared + * UNPAUSE VDEV */ + wdi_in_vdev_unpause(wma->interfaces[vdev_id].handle, + OL_TXQ_PAUSE_REASON_FW); + } } } else @@ -24199,7 +24272,9 @@ VOS_STATUS WDA_TxPacket(void *wma_context, void *tx_frame, u_int16_t frmLen, if (wma_handle->roam_preauth_scan_state == WMA_ROAM_PREAUTH_ON_CHAN) { chanfreq = wma_handle->roam_preauth_chanfreq; WMA_LOGI("%s: Preauth frame on channel %d", __func__, chanfreq); - } else { + } else if(pFc->subType == SIR_MAC_MGMT_PROBE_RSP){ + chanfreq = wma_handle->interfaces[vdev_id].mhz; + } else { chanfreq = 0; } if (pMac->fEnableDebugLog & 0x1) { diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 2846e03f99f0..9b82dc6d21c5 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -431,6 +431,12 @@ struct wma_wow { v_BOOL_t bmiss_enable; v_BOOL_t gtk_pdev_enable; v_BOOL_t gtk_err_enable[WMA_MAX_SUPPORTED_BSS]; +#ifdef FEATURE_WLAN_LPHB + /* currently supports only vdev 0. + * cache has two entries: one for TCP and one for UDP. + */ + tSirLPHBReq lphb_cache[2]; +#endif }; #ifdef WLAN_FEATURE_11W #define CMAC_IPN_LEN (6) diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index eac4e1f3b818..01efc56769ba 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -39,7 +39,7 @@ #include "vos_status.h" #include "vos_lock.h" -#include "palTimer.h" +#include "vos_timer.h" #include "csrSupport.h" #include "vos_nvitem.h" #include "wlan_qct_tl.h" @@ -716,7 +716,6 @@ typedef struct tagCsrScanStruct vos_timer_t hTimerIdleScan; vos_timer_t hTimerResultAging; vos_timer_t hTimerResultCfgAging; - tPalTimerHandle hTimerBgScan; //changes on every scan, it is used as a flag for whether 11d info is found on every scan tANI_U8 channelOf11dInfo; tANI_U8 scanResultCfgAgingTime; diff --git a/CORE/SME/inc/oemDataInternal.h b/CORE/SME/inc/oemDataInternal.h index e914562fb1b1..99742f127ee0 100644 --- a/CORE/SME/inc/oemDataInternal.h +++ b/CORE/SME/inc/oemDataInternal.h @@ -40,7 +40,6 @@ #ifndef __OEM_DATA_INTERNAL_H__ #define __OEM_DATA_INTERNAL_H__ -#include "palTimer.h" #include "csrSupport.h" #include "vos_nvitem.h" #include "wlan_qct_tl.h" diff --git a/CORE/SME/inc/p2p_Api.h b/CORE/SME/inc/p2p_Api.h index 37cfbc0e4f26..4a04c84997fa 100644 --- a/CORE/SME/inc/p2p_Api.h +++ b/CORE/SME/inc/p2p_Api.h @@ -40,7 +40,7 @@ #include "vos_types.h" #include "halTypes.h" -#include "palTimer.h" +#include "vos_timer.h" #include "vos_lock.h" typedef struct sP2pPsConfig{ diff --git a/CORE/SME/inc/pmc.h b/CORE/SME/inc/pmc.h index 2d9b151fdf73..ff618b4c33f9 100644 --- a/CORE/SME/inc/pmc.h +++ b/CORE/SME/inc/pmc.h @@ -39,7 +39,6 @@ #define __PMC_H__ -#include "palTimer.h" #include "csrLinkList.h" #include "pmcApi.h" #include "smeInternal.h" diff --git a/CORE/SME/inc/smeInternal.h b/CORE/SME/inc/smeInternal.h index ce9772d8755d..2cb7a14d9d3b 100644 --- a/CORE/SME/inc/smeInternal.h +++ b/CORE/SME/inc/smeInternal.h @@ -143,7 +143,7 @@ typedef struct tagSmeStruct void *pTxPerHitCbContext; tVOS_CON_MODE currDeviceMode; #ifdef FEATURE_WLAN_LPHB - void (*pLphbIndCb) (void *pAdapter, void *indParam); + void (*pLphbIndCb) (void *pHddCtx, tSirLPHBInd *indParam); #endif /* FEATURE_WLAN_LPHB */ //pending scan command list tDblLinkList smeScanCmdPendingList; diff --git a/CORE/SME/inc/smeRrmInternal.h b/CORE/SME/inc/smeRrmInternal.h index e0a1e0fa00f0..20a90e40e38b 100644 --- a/CORE/SME/inc/smeRrmInternal.h +++ b/CORE/SME/inc/smeRrmInternal.h @@ -46,7 +46,6 @@ #include "vos_trace.h" #include "vos_memory.h" #include "vos_types.h" -#include "palTimer.h" #include "rrmGlobal.h" /*-------------------------------------------------------------------------- diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 44bafb79eed6..46568b4b8607 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -3436,7 +3436,7 @@ VOS_STATUS sme_isSta_p2p_clientConnected(tHalHandle hHal); eHalStatus sme_LPHBConfigReq( tHalHandle hHal, tSirLPHBReq *lphdReq, - void (*pCallbackfn)(void *pAdapter, void *indParam)); + void (*pCallbackfn)(void *pHddCtx, tSirLPHBInd *indParam)); #endif /* FEATURE_WLAN_LPHB */ /* --------------------------------------------------------------------------- diff --git a/CORE/SME/inc/sme_FTApi.h b/CORE/SME/inc/sme_FTApi.h index 759a629143cd..b963843db6a3 100644 --- a/CORE/SME/inc/sme_FTApi.h +++ b/CORE/SME/inc/sme_FTApi.h @@ -30,7 +30,6 @@ #define __SME_FTAPI_H #include <limFTDefs.h> -#include <palTimer.h> /**========================================================================= @@ -83,7 +82,7 @@ typedef struct sFTSMEContext #ifdef WLAN_FEATURE_ROAM_OFFLOAD tANI_U32 r0kh_id_len; - tANI_U32 r0kh_id; + tANI_U8 r0kh_id[SIR_ROAM_R0KH_ID_MAX_LEN]; #endif /* User context for the timer callback */ diff --git a/CORE/SME/src/QoS/sme_Qos.c b/CORE/SME/src/QoS/sme_Qos.c index d629876f3b72..4cefb9cd061d 100644 --- a/CORE/SME/src/QoS/sme_Qos.c +++ b/CORE/SME/src/QoS/sme_Qos.c @@ -3221,7 +3221,7 @@ eHalStatus sme_QosESEProcessReassocTspecRsp(tpAniSirGlobal pMac, v_U8_t sessionI tspecIeLen = pCsrConnectedInfo->nTspecIeLength; if (tspecIeLen < sizeof(tDot11fIEWMMTSPEC)) { VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, - FL("ESE Tspec IE len %d less than min %d"), + FL("ESE Tspec IE len %d less than min %zu"), tspecIeLen, sizeof(tDot11fIEWMMTSPEC)); return eHAL_STATUS_FAILURE; } diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 0ba5537dae84..e4fb1dde1643 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -69,8 +69,8 @@ #endif /* FEATURE_WLAN_ESE && !FEATURE_WLAN_ESE_UPLOAD */ #define CSR_NUM_IBSS_START_CHANNELS_50 4 #define CSR_NUM_IBSS_START_CHANNELS_24 3 -#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD ( 5 * PAL_TIMER_TO_SEC_UNIT ) // 5 seconds, for WPA, WPA2, CCKM -#define CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD ( 120 * PAL_TIMER_TO_SEC_UNIT ) // 120 seconds, for WPS +#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD ( 5 * VOS_TIMER_TO_SEC_UNIT ) // 5 seconds, for WPA, WPA2, CCKM +#define CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD ( 120 * VOS_TIMER_TO_SEC_UNIT ) // 120 seconds, for WPS /*--------------------------------------------------------------------------- OBIWAN recommends [8 10]% : pick 9% ---------------------------------------------------------------------------*/ @@ -1708,7 +1708,9 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa if (pParam->impsSleepTime) { //Change the unit from second to microsecond - tANI_U32 impsSleepTime = pParam->impsSleepTime * PAL_TIMER_TO_SEC_UNIT; + tANI_U32 impsSleepTime = + pParam->impsSleepTime * VOS_TIMER_TO_SEC_UNIT; + if(CSR_IDLE_SCAN_NO_PS_INTERVAL_MIN <= impsSleepTime) { pMac->roam.configParam.impsSleepTime = impsSleepTime; @@ -1925,7 +1927,8 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam) pParam->nNumP2PChanCombinedConc = pMac->roam.configParam.nNumP2PChanCombinedConc; #endif //Change the unit from microsecond to second - pParam->impsSleepTime = pMac->roam.configParam.impsSleepTime / PAL_TIMER_TO_SEC_UNIT; + pParam->impsSleepTime = + pMac->roam.configParam.impsSleepTime / VOS_TIMER_TO_SEC_UNIT; pParam->eBand = pMac->roam.configParam.eBand; pParam->nScanResultAgeCount = pMac->roam.configParam.agingCount; pParam->scanAgeTimeNCNPS = pMac->roam.configParam.scanAgeTimeNCNPS; @@ -10667,7 +10670,8 @@ tANI_BOOLEAN csrRoamCompleteRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId, else { pSession->roamResult = roamResult; - if(!HAL_STATUS_SUCCESS(csrRoamStartRoamingTimer(pMac, sessionId, PAL_TIMER_TO_SEC_UNIT))) + if(!HAL_STATUS_SUCCESS(csrRoamStartRoamingTimer(pMac, sessionId, + VOS_TIMER_TO_SEC_UNIT))) { csrCallRoamingCompletionCallback(pMac, pSession, NULL, 0, roamResult); pSession->roamingReason = eCsrNotRoaming; @@ -10747,7 +10751,8 @@ eHalStatus csrRoamStartRoamingTimer(tpAniSirGlobal pMac, tANI_U32 sessionId, tAN smsLog(pMac, LOG1, " csrScanStartRoamingTimer"); pSession->roamingTimerInfo.sessionId = (tANI_U8)sessionId; - status = vos_timer_start(&pSession->hTimerRoaming, interval/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pSession->hTimerRoaming, + interval/VOS_TIMER_TO_MS_UNIT); return (status); } @@ -10844,7 +10849,8 @@ eHalStatus csrRoamStartWaitForKeyTimer(tpAniSirGlobal pMac, tANI_U32 interval) } #endif smsLog(pMac, LOG1, " csrScanStartWaitForKeyTimer"); - status = vos_timer_start(&pMac->roam.hTimerWaitForKey, interval/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pMac->roam.hTimerWaitForKey, + interval/VOS_TIMER_TO_MS_UNIT); return (status); } @@ -16298,7 +16304,8 @@ void csrRoamOffload(tpAniSirGlobal pMac, tSirRoamOffloadScanReq *pRequestBuf, { vos_mem_copy(pRequestBuf->PSK_PMK, pSession->psk_pmk, sizeof(pRequestBuf->PSK_PMK)); pRequestBuf->R0KH_ID_Length = pSession->ftSmeContext.r0kh_id_len; - pRequestBuf->R0KH_ID = pSession->ftSmeContext.r0kh_id; + vos_mem_copy(pRequestBuf->R0KH_ID, pSession->ftSmeContext.r0kh_id, + pRequestBuf->R0KH_ID_Length); pRequestBuf->Prefer5GHz = pMac->roam.configParam.nRoamPrefer5GHz; pRequestBuf->RoamRssiCatGap = pMac->roam.configParam.bCatRssiOffset; pRequestBuf->Select5GHzMargin = pMac->roam.configParam.nSelect5GHzMargin; @@ -17780,7 +17787,7 @@ eHalStatus csrRoamStartJoinRetryTimer(tpAniSirGlobal pMac, tANI_U32 sessionId, pSession->joinRetryTimerInfo.sessionId = (tANI_U8)sessionId; status = vos_timer_start(&pSession->hTimerJoinRetry, - interval/PAL_TIMER_TO_MS_UNIT); + interval/VOS_TIMER_TO_MS_UNIT); if (!HAL_STATUS_SUCCESS(status)) { smsLog(pMac, LOGE, FL(" fail to start timer status %s"), status); diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c index 0627330f3151..ad3782b91acc 100644 --- a/CORE/SME/src/csr/csrApiScan.c +++ b/CORE/SME/src/csr/csrApiScan.c @@ -6492,7 +6492,7 @@ eHalStatus csrScanStartGetResultTimer(tpAniSirGlobal pMac) if(pMac->scan.fScanEnable) { - status = vos_timer_start(&pMac->scan.hTimerGetResult, CSR_SCAN_GET_RESULT_INTERVAL/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pMac->scan.hTimerGetResult, CSR_SCAN_GET_RESULT_INTERVAL/VOS_TIMER_TO_MS_UNIT); } else { @@ -6515,7 +6515,7 @@ void csrScanGetResultTimerHandler(void *pv) csrScanRequestResult(pMac); - vos_timer_start(&pMac->scan.hTimerGetResult, CSR_SCAN_GET_RESULT_INTERVAL/PAL_TIMER_TO_MS_UNIT); + vos_timer_start(&pMac->scan.hTimerGetResult, CSR_SCAN_GET_RESULT_INTERVAL/VOS_TIMER_TO_MS_UNIT); } #ifdef WLAN_AP_STA_CONCURRENCY @@ -6665,7 +6665,7 @@ eHalStatus csrScanStartResultAgingTimer(tpAniSirGlobal pMac) if(pMac->scan.fScanEnable) { - status = vos_timer_start(&pMac->scan.hTimerResultAging, CSR_SCAN_RESULT_AGING_INTERVAL/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pMac->scan.hTimerResultAging, CSR_SCAN_RESULT_AGING_INTERVAL/VOS_TIMER_TO_MS_UNIT); } return (status); } @@ -6676,7 +6676,7 @@ eHalStatus csrScanStartResultCfgAgingTimer(tpAniSirGlobal pMac) if(pMac->scan.fScanEnable) { - status = vos_timer_start(&pMac->scan.hTimerResultCfgAging, CSR_SCAN_RESULT_CFG_AGING_INTERVAL/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pMac->scan.hTimerResultCfgAging, CSR_SCAN_RESULT_CFG_AGING_INTERVAL/VOS_TIMER_TO_MS_UNIT); } return (status); } @@ -6787,7 +6787,7 @@ void csrScanResultAgingTimerHandler(void *pv) } csrLLUnlock(&pMac->scan.scanResultList); } - vos_timer_start(&pMac->scan.hTimerResultAging, CSR_SCAN_RESULT_AGING_INTERVAL/PAL_TIMER_TO_MS_UNIT); + vos_timer_start(&pMac->scan.hTimerResultAging, CSR_SCAN_RESULT_AGING_INTERVAL/VOS_TIMER_TO_MS_UNIT); } static void csrScanResultCfgAgingTimerHandler(void *pv) @@ -6812,7 +6812,7 @@ static void csrScanResultCfgAgingTimerHandler(void *pv) pEntry = tmpEntry; } csrLLUnlock(&pMac->scan.scanResultList); - vos_timer_start(&pMac->scan.hTimerResultCfgAging, CSR_SCAN_RESULT_CFG_AGING_INTERVAL/PAL_TIMER_TO_MS_UNIT); + vos_timer_start(&pMac->scan.hTimerResultCfgAging, CSR_SCAN_RESULT_CFG_AGING_INTERVAL/VOS_TIMER_TO_MS_UNIT); } eHalStatus csrScanStartIdleScanTimer(tpAniSirGlobal pMac, tANI_U32 interval) @@ -6824,7 +6824,7 @@ eHalStatus csrScanStartIdleScanTimer(tpAniSirGlobal pMac, tANI_U32 interval) { pMac->scan.nIdleScanTimeGap += interval; vos_timer_stop(&pMac->scan.hTimerIdleScan); - status = vos_timer_start(&pMac->scan.hTimerIdleScan, interval/PAL_TIMER_TO_MS_UNIT); + status = vos_timer_start(&pMac->scan.hTimerIdleScan, interval/VOS_TIMER_TO_MS_UNIT); if( !HAL_STATUS_SUCCESS(status) ) { smsLog(pMac, LOGE, " Fail to start Idle scan timer. status = %d interval = %d", status, interval); @@ -6963,7 +6963,9 @@ eHalStatus csrScanTriggerIdleScan(tpAniSirGlobal pMac, tANI_U32 *pTimeInterval) *pTimeInterval = pMac->roam.configParam.impsSleepTime; } //pmcRequestImps take a period in millisecond unit. - status = pmcRequestImps(pMac, pMac->roam.configParam.impsSleepTime / PAL_TIMER_TO_MS_UNIT, csrScanIMPSCallback, pMac); + status = pmcRequestImps(pMac, + pMac->roam.configParam.impsSleepTime / VOS_TIMER_TO_MS_UNIT, + csrScanIMPSCallback, pMac); if(!HAL_STATUS_SUCCESS(status)) { if(eHAL_STATUS_PMC_ALREADY_IN_IMPS != status) diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h index 585f9da694be..ef3c2557f9ae 100644 --- a/CORE/SME/src/csr/csrInsideApi.h +++ b/CORE/SME/src/csr/csrInsideApi.h @@ -75,16 +75,16 @@ #define CSR_AGING_COUNT 3 //The following defines are used by palTimer //This is used for palTimer when request to imps fails -#define CSR_IDLE_SCAN_WAIT_TIME (1 * PAL_TIMER_TO_SEC_UNIT) //1 second +#define CSR_IDLE_SCAN_WAIT_TIME (1 * VOS_TIMER_TO_SEC_UNIT) //1 second //This is used for palTimer when imps ps is disabled //This number shall not be smaller than 5-6 seconds in general because a full scan may take 3-4 seconds -#define CSR_IDLE_SCAN_NO_PS_INTERVAL (10 * PAL_TIMER_TO_SEC_UNIT) //10 second -#define CSR_IDLE_SCAN_NO_PS_INTERVAL_MIN (5 * PAL_TIMER_TO_SEC_UNIT) -#define CSR_SCAN_GET_RESULT_INTERVAL (5 * PAL_TIMER_TO_SEC_UNIT) //5 seconds -#define CSR_MIC_ERROR_TIMEOUT (60 * PAL_TIMER_TO_SEC_UNIT) //60 seconds -#define CSR_TKIP_COUNTER_MEASURE_TIMEOUT (60 * PAL_TIMER_TO_SEC_UNIT) //60 seconds -#define CSR_SCAN_RESULT_AGING_INTERVAL (5 * PAL_TIMER_TO_SEC_UNIT) //5 seconds -#define CSR_SCAN_RESULT_CFG_AGING_INTERVAL (PAL_TIMER_TO_SEC_UNIT) // 1 second +#define CSR_IDLE_SCAN_NO_PS_INTERVAL (10 * VOS_TIMER_TO_SEC_UNIT) //10 second +#define CSR_IDLE_SCAN_NO_PS_INTERVAL_MIN (5 * VOS_TIMER_TO_SEC_UNIT) +#define CSR_SCAN_GET_RESULT_INTERVAL (5 * VOS_TIMER_TO_SEC_UNIT) //5 seconds +#define CSR_MIC_ERROR_TIMEOUT (60 * VOS_TIMER_TO_SEC_UNIT) //60 seconds +#define CSR_TKIP_COUNTER_MEASURE_TIMEOUT (60 * VOS_TIMER_TO_SEC_UNIT) //60 seconds +#define CSR_SCAN_RESULT_AGING_INTERVAL (5 * VOS_TIMER_TO_SEC_UNIT) //5 seconds +#define CSR_SCAN_RESULT_CFG_AGING_INTERVAL (VOS_TIMER_TO_SEC_UNIT) // 1 second //the following defines are NOT used by palTimer #define CSR_SCAN_AGING_TIME_NOT_CONNECT_NO_PS 50 //50 seconds #define CSR_SCAN_AGING_TIME_NOT_CONNECT_W_PS 300 //300 seconds @@ -108,7 +108,7 @@ #ifdef FEATURE_WLAN_BTAMP_UT_RF #define CSR_JOIN_MAX_RETRY_COUNT 10 -#define CSR_JOIN_RETRY_TIMEOUT_PERIOD ( 1 * PAL_TIMER_TO_SEC_UNIT ) // 1 second +#define CSR_JOIN_RETRY_TIMEOUT_PERIOD ( 1 * VOS_TIMER_TO_SEC_UNIT ) // 1 second #endif #define CSR_ROAMING_DFS_CHANNEL_DISABLED (0) diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c index f750529a551b..2af386a039bb 100644 --- a/CORE/SME/src/csr/csrNeighborRoam.c +++ b/CORE/SME/src/csr/csrNeighborRoam.c @@ -2406,7 +2406,7 @@ static VOS_STATUS csrNeighborRoamHandleEmptyScanResult(tpAniSirGlobal pMac, else { smsLog(pMac, LOG2, FL("Neighbor results refresh timer started (%d ms)"), - (pNeighborRoamInfo->cfgParams.neighborResultsRefreshPeriod * PAL_TIMER_TO_MS_UNIT)); + (pNeighborRoamInfo->cfgParams.neighborResultsRefreshPeriod * VOS_TIMER_TO_MS_UNIT)); } } } @@ -3767,8 +3767,6 @@ void csrNeighborRoamRRMNeighborReportResult(void *context, VOS_STATUS vosStatus) pNeighborRoamInfo->scanRequestTimeStamp = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd); /* Now ready for neighbor scan based on the channel list created */ - /* Start Neighbor scan timer now. Multiplication by PAL_TIMER_TO_MS_UNIT is to convert ms to us which is - what palTimerStart expects */ status = vos_timer_start(&pNeighborRoamInfo->neighborScanTimer, pNeighborRoamInfo->cfgParams.neighborScanPeriod); if (eHAL_STATUS_SUCCESS != status) @@ -4316,8 +4314,6 @@ VOS_STATUS csrNeighborRoamTransitToCFGChanScan(tpAniSirGlobal pMac, pNeighborRoamInfo->scanRequestTimeStamp = (tANI_TIMESTAMP)palGetTickCount(pMac->hHdd); vos_timer_stop(&pNeighborRoamInfo->neighborScanTimer); - /* Start Neighbor scan timer now. Multiplication by PAL_TIMER_TO_MS_UNIT is to convert ms to us which is - what palTimerStart expects */ status = vos_timer_start(&pNeighborRoamInfo->neighborScanTimer, pNeighborRoamInfo->cfgParams.neighborScanPeriod); diff --git a/CORE/SME/src/pmc/pmcApi.c b/CORE/SME/src/pmc/pmcApi.c index 50bc4c9e45aa..3633b543e402 100644 --- a/CORE/SME/src/pmc/pmcApi.c +++ b/CORE/SME/src/pmc/pmcApi.c @@ -37,7 +37,6 @@ #include "palTypes.h" #include "aniGlobal.h" -#include "palTimer.h" #include "csrLinkList.h" #include "smsDebug.h" #include "pmcApi.h" diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index 1c6904ef0f48..44afee76178d 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -3602,7 +3602,7 @@ eHalStatus sme_RoamDeauthSta(tHalHandle hHal, tANI_U8 sessionId, if( CSR_IS_SESSION_VALID( pMac, sessionId ) ) { status = csrRoamIssueDeauthStaCmd( pMac, sessionId, pPeerMacAddr, - eSIR_MAC_PREV_AUTH_NOT_VALID_REASON); + eSIR_MAC_DEAUTH_LEAVING_BSS_REASON); } else { @@ -11526,7 +11526,7 @@ eHalStatus sme_LPHBConfigReq ( tHalHandle hHal, tSirLPHBReq *lphdReq, - void (*pCallbackfn)(void *pAdapter, void *indParam) + void (*pCallbackfn)(void *pHddCtx, tSirLPHBInd *indParam) ) { eHalStatus status = eHAL_STATUS_SUCCESS; diff --git a/CORE/SYS/legacy/src/pal/inc/palTimer.h b/CORE/SYS/legacy/src/pal/inc/palTimer.h deleted file mode 100644 index eee07a894a0b..000000000000 --- a/CORE/SYS/legacy/src/pal/inc/palTimer.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2011-2012 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - - -/** ------------------------------------------------------------------------- * - ------------------------------------------------------------------------- * - - - \file palTimer.h - - \brief Define data structure and ptototype for PAL timer. - - $Id$... description... - - ========================================================================== */ - -#if !defined( PALTIMER_H__ ) -#define PALTIMER_H__ - - -/* -PAL TIMER - This timer can be used for every module in Windows side. - On Linus side, this can only be used by timer for HDD. Not for timers used in rtlib, hence it doesn't replace TX_TIMER -*/ - -typedef void * tPalTimerHandle; - -#define PAL_INVALID_TIMER_HANDLE (NULL) - -typedef void (*palTimerCallback)(void *); - -#define PAL_TIMER_TO_MS_UNIT 1000 -#define PAL_TIMER_TO_SEC_UNIT 1000000 - -#ifndef FEATURE_WLAN_PAL_TIMER_DISABLE -//PAL timer functions -//pPalTimer is a pointer to a caller allocated tPalTimer object -//pContext is a pointer to an object that will be passed in when callback is called -//fRestart to set whether the timer is restart after callback returns -#ifdef TIMER_MANAGER -#define palTimerAlloc(hHdd, phPalTimer, pCallback, pContext) \ - palTimerAlloc_debug(hHdd, phPalTimer, pCallback, pContext, __FILE__, __LINE__) -eHalStatus palTimerAlloc_debug( tHddHandle hHdd, tPalTimerHandle *phPalTimer, - palTimerCallback pCallback, void *pContext, char* fileName, v_U32_t lineNum ); -#else -eHalStatus palTimerAlloc(tHddHandle hHdd, tPalTimerHandle *phPalTimer, palTimerCallback pCallback, void *pContext); -#endif -//This function will free the timer -//On Windows platform, it can only be called when device is unloading. -eHalStatus palTimerFree(tHddHandle, tPalTimerHandle); -//To start a timer -//uExpireTime is the timer lapse before timer fires. If the timer is in running state and the fRestart is true, -//uExpireTime is set so that it is the new interval, in units of microseconds -eHalStatus palTimerStart(tHddHandle, tPalTimerHandle, tANI_U32 uExpireTime, tANI_BOOLEAN fRestart); -//palTimerStop will cancel the timer but doesn't guarrantee the callback will not called afterwards -//For Windows, if the driver is halting, the callback is not called after this function returns. -eHalStatus palTimerStop(tHddHandle, tPalTimerHandle); -#endif - -#endif diff --git a/CORE/SYS/legacy/src/pal/src/palTimer.c b/CORE/SYS/legacy/src/pal/src/palTimer.c deleted file mode 100644 index 41ab2d862a0f..000000000000 --- a/CORE/SYS/legacy/src/pal/src/palTimer.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2011-2013 The Linux Foundation. All rights reserved. - * - * Previously licensed under the ISC license by Qualcomm Atheros, Inc. - * - * - * Permission to use, copy, modify, and/or distribute this software for - * any purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * This file was originally distributed by Qualcomm Atheros, Inc. - * under proprietary terms before Copyright ownership was assigned - * to the Linux Foundation. - */ - -/** - - \file palTimer.c - - \brief Implemenation of the Platform Abstracion Layer timer functions - - $Id$This file contains function implementations for the Platform - Abstration Layer. - - */ - -#include <halTypes.h> -#include <palTimer.h> -#include <vos_timer.h> -#include <vos_memory.h> - -#ifndef FEATURE_WLAN_PAL_TIMER_DISABLE -typedef struct sPalTimer -{ - palTimerCallback timerCallback; - void *pContext; - tHddHandle hHdd; // not really needed when mapping to vos timers - tANI_U32 uTimerInterval; //meaningful only is fRestart is true - tANI_BOOLEAN fRestart; - - vos_timer_t vosTimer; - -} tPalTimer, *tpPalTimer; - -v_VOID_t internalTimerCallback( v_PVOID_t userData ) -{ - tPalTimer *pPalTimer = (tPalTimer *)userData; - - if ( pPalTimer ) - { - if ( pPalTimer->timerCallback ) - { - pPalTimer->timerCallback( pPalTimer->pContext ); - } - - if ( pPalTimer->fRestart ) - { - palTimerStart( pPalTimer->hHdd, pPalTimer, pPalTimer->uTimerInterval, eANI_BOOLEAN_TRUE ); - } - } -} - -#ifdef TIMER_MANAGER -eHalStatus palTimerAlloc_debug( tHddHandle hHdd, tPalTimerHandle *phPalTimer, - palTimerCallback pCallback, void *pContext, char* fileName, v_U32_t lineNum ) -{ - eHalStatus halStatus = eHAL_STATUS_FAILURE; - tPalTimer *pPalTimer = NULL; - VOS_STATUS vosStatus; - - do - { - // allocate the internal timer structure. - pPalTimer = vos_mem_malloc( sizeof( tPalTimer ) ); - if ( NULL == pPalTimer ) break; - - // initialize the vos Timer that underlies the pal Timer. - vosStatus = vos_timer_init_debug( &pPalTimer->vosTimer, VOS_TIMER_TYPE_SW, - internalTimerCallback, pPalTimer, fileName, lineNum ); - if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) - { - // if fail to init the vos timer, free the memory and bail out. - vos_mem_free( pPalTimer ); - break; - } - - // initialize the info in the internal palTimer struct so we can - pPalTimer->timerCallback = pCallback; - pPalTimer->pContext = pContext; - pPalTimer->hHdd = hHdd; - - // return a 'handle' to the caller. - *phPalTimer = pPalTimer; - - halStatus = eHAL_STATUS_SUCCESS; - - } while( 0 ); - - return( halStatus ); -} -#else -eHalStatus palTimerAlloc( tHddHandle hHdd, tPalTimerHandle *phPalTimer, - palTimerCallback pCallback, void *pContext ) -{ - eHalStatus halStatus = eHAL_STATUS_FAILURE; - tPalTimer *pPalTimer = NULL; - VOS_STATUS vosStatus; - - do - { - // allocate the internal timer structure. - pPalTimer = vos_mem_malloc( sizeof( tPalTimer ) ); - if ( NULL == pPalTimer ) break; - - // initialize the vos Timer that underlies the pal Timer. - vosStatus = vos_timer_init( &pPalTimer->vosTimer, VOS_TIMER_TYPE_SW, - internalTimerCallback, pPalTimer ); - if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) - { - // if fail to init the vos timer, free the memory and bail out. - vos_mem_free( pPalTimer ); - break; - } - - // initialize the info in the internal palTimer struct so we can - pPalTimer->timerCallback = pCallback; - pPalTimer->pContext = pContext; - pPalTimer->hHdd = hHdd; - - // return a 'handle' to the caller. - *phPalTimer = pPalTimer; - - halStatus = eHAL_STATUS_SUCCESS; - - } while( 0 ); - - return( halStatus ); -} -#endif - - -eHalStatus palTimerFree( tHddHandle hHdd, tPalTimerHandle hPalTimer ) -{ - eHalStatus status = eHAL_STATUS_INVALID_PARAMETER; - VOS_STATUS vosStatus; - tPalTimer *pPalTimer = (tPalTimer *)hPalTimer; - - do - { - if ( NULL == pPalTimer ) break; - - // Destroy the vos timer... - vosStatus = vos_timer_destroy( &pPalTimer->vosTimer ); - if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) break; - - // Free the memory for the intrnal timer struct... - vos_mem_free( pPalTimer ); - - status = eHAL_STATUS_SUCCESS; - - } while( 0 ); - - return( status ); -} - - -eHalStatus palTimerStart(tHddHandle hHdd, tPalTimerHandle hPalTimer, tANI_U32 uExpireTime, tANI_BOOLEAN fRestart) -{ - eHalStatus status = eHAL_STATUS_INVALID_PARAMETER; - VOS_STATUS vosStatus; - tANI_U32 expireTimeInMS = 0; - - tPalTimer *pPalTimer = (tPalTimer *)hPalTimer; - - do - { - if ( NULL == pPalTimer ) break; - - pPalTimer->fRestart = fRestart; - pPalTimer->uTimerInterval = uExpireTime; - - // vos Timer takes expiration time in milliseconds. palTimerStart and - // the uTimerIntervl in tPalTimer struct have expiration tiem in - // microseconds. Make and adjustment from microseconds to milliseconds - // before calling the vos_timer_start(). - expireTimeInMS = uExpireTime / 1000; - vosStatus = vos_timer_start( &pPalTimer->vosTimer, expireTimeInMS ); - if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) - { - status = eHAL_STATUS_FAILURE; - break; - } - - status = eHAL_STATUS_SUCCESS; - - } while( 0 ); - - return( status ); -} - - -eHalStatus palTimerStop(tHddHandle hHdd, tPalTimerHandle hPalTimer) -{ - eHalStatus status = eHAL_STATUS_INVALID_PARAMETER; - - tPalTimer *pPalTimer = (tPalTimer *)hPalTimer; - - do - { - if ( NULL == pPalTimer ) break; - - vos_timer_stop( &pPalTimer->vosTimer ); - - // make sure the timer is not re-started. - pPalTimer->fRestart = eANI_BOOLEAN_FALSE; - - status = eHAL_STATUS_SUCCESS; - - } while( 0 ); - - return( status ); -} - -#endif diff --git a/CORE/VOSS/inc/vos_timer.h b/CORE/VOSS/inc/vos_timer.h index 98ee433f998b..96ecfd1934f9 100644 --- a/CORE/VOSS/inc/vos_timer.h +++ b/CORE/VOSS/inc/vos_timer.h @@ -56,6 +56,8 @@ Preprocessor definitions and constants ------------------------------------------------------------------------*/ #define VOS_TIMER_STATE_COOKIE 0x12 +#define VOS_TIMER_TO_MS_UNIT 1000 +#define VOS_TIMER_TO_SEC_UNIT 1000000 /*-------------------------------------------------------------------------- Type declarations @@ -639,7 +639,6 @@ SYS_COMMON_SRC_DIR := $(SYS_DIR)/common/src SYS_LEGACY_SRC_DIR := $(SYS_DIR)/legacy/src SYS_OBJS := $(SYS_COMMON_SRC_DIR)/wlan_qct_sys.o \ $(SYS_LEGACY_SRC_DIR)/pal/src/palApiComm.o \ - $(SYS_LEGACY_SRC_DIR)/pal/src/palTimer.o \ $(SYS_LEGACY_SRC_DIR)/platform/src/VossWrapper.o \ $(SYS_LEGACY_SRC_DIR)/system/src/macInitApi.o \ $(SYS_LEGACY_SRC_DIR)/system/src/sysEntryFunc.o \ diff --git a/firmware_bin/WCNSS_qcom_cfg.usb.ini b/firmware_bin/WCNSS_qcom_cfg.usb.ini index 70aa00215a57..ae9ae4886728 100644 --- a/firmware_bin/WCNSS_qcom_cfg.usb.ini +++ b/firmware_bin/WCNSS_qcom_cfg.usb.ini @@ -122,7 +122,7 @@ gEnableApOBSSProt=0 #Enable/Disable UAPSD for SoftAP -gEnableApUapsd=0 +gEnableApUapsd=1 # Fixed Rate diff --git a/tools/fwdebuglog/nan-parser.c b/tools/fwdebuglog/nan-parser.c index 7a4d297380b3..7def50bebec7 100644 --- a/tools/fwdebuglog/nan-parser.c +++ b/tools/fwdebuglog/nan-parser.c @@ -1,7 +1,28 @@ /* - * Copyright (c) 2014 Qualcomm Atheros, Inc. - * All Rights Reserved. - * Qualcomm Atheros Confidential and Proprietary. + * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved. + * + * Previously licensed under the ISC license by Qualcomm Atheros, Inc. + * + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * This file was originally distributed by Qualcomm Atheros, Inc. + * under proprietary terms before Copyright ownership was assigned + * to the Linux Foundation. */ #include <stdlib.h> |
