diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-06-09 11:53:20 -0600 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2016-06-09 11:53:20 -0600 |
| commit | d6b021b5825fd8bd97c75ac6aa0bf7a0e7bc24e7 (patch) | |
| tree | 5fdd9b957313c2f5aafe7e1325538908867c0c6d | |
| parent | ca3abbc1896a35df69db22bd80874596067f5206 (diff) | |
| parent | 85f92847cb6db9e0aedbdc4a8398ebebd23d086d (diff) | |
Promotion of wlan-cld2.driver.lnx.1.0-00031.
CRs Change ID Subject
--------------------------------------------------------------------------------------------------------------
688141 I3044b9ccc2c5850fdde2d0b5de5d1fc4de2c2695 Release 4.0.11.96
865207 Ie7c14aadf124a0aaaad1470e678e99f2fb5d436b qcacld-2.0: CL 1524393 – update fw common interface file
688141 Ice1fda9bad14e42f774d4c6849755e507b194512 Release 4.0.11.97
1020123 I175f984a1bdb0c0f245c60f32bcc5af8ea1802a7 qcacld-2.0: Add support for dynamically disable BT/WLAN
1025291 Ia5aa53e9f9ec30f675efe9989b124201f4f15e97 qcacld-2.0: Fix tlv length assignment in WMI int message
1025261 Ibf35df89a5bfbbc24f0166878c6aea48838c1a83 qcacld-2.0: Ensure that phy mode from ini is considered
1025828 I72100df664e7defe616cd78450c1941a39dc393b qcacld-2.0: Don't enable 2.4 GHz social channels in 5 GH
1025272 I6b2fd40a5466fe5dd72d394abb682229a550e0b1 qcacld-2.0: Fix stack corruption issue in sme_RrmProcess
1006544 I579b83afa09d0cc3cb629dab4f7cc210f1237f96 qcacld-2.0: Validate watchdog context
1025185 Ie64a642abdd7923e91801186aa5743094a739fc9 qcacld-2.0: Validate CCXBEACONREQ IE fields
1021796 Ia003d02b142dcd51582c20359ee44a181620e4e3 qcacld-2.0: Set chainmask to 2x2 once TDLS is connected
1023457 Ic521c23b4001f15a382e9435413cdafca0c8b49f qcacld-2.0: Add argument to ol_tx_queue_free for vdev or
1025669 I78fd23a384590c740c0147c3f2e7ec5b0da7aea8 qcacld-2.0: Unpause all vdevs when host resumes
Change-Id: Id69a4478e5cce937f9fe5fc408c2323b10781738
CRs-Fixed: 1006544, 1021796, 1025272, 688141, 1025261, 1025828, 865207, 1020123, 1023457, 1025669, 1025185, 1025291
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx_queue.c | 24 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_tx_queue.h | 7 | ||||
| -rw-r--r-- | CORE/CLD_TXRX/TXRX/ol_txrx.c | 6 | ||||
| -rw-r--r-- | CORE/HDD/inc/wlan_hdd_cfg.h | 22 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg.c | 20 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 6 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 28 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_tdls.c | 9 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wlan_module_ids.h | 1 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 11 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 6 | ||||
| -rw-r--r-- | CORE/SME/inc/csrInternal.h | 2 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 2 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiRoam.c | 11 | ||||
| -rw-r--r-- | CORE/SME/src/rrm/sme_rrm.c | 4 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 39 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_sched.c | 6 |
19 files changed, 165 insertions, 45 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_queue.c b/CORE/CLD_TXRX/TXRX/ol_tx_queue.c index 965380909287..23bc63c5782e 100644 --- a/CORE/CLD_TXRX/TXRX/ol_tx_queue.c +++ b/CORE/CLD_TXRX/TXRX/ol_tx_queue.c @@ -69,7 +69,7 @@ void ol_tx_queue_log_free( struct ol_txrx_pdev_t *pdev, struct ol_tx_frms_queue_t *txq, - int tid, int frms, int bytes); + int tid, int frms, int bytes, bool is_peer_txq); #define OL_TX_QUEUE_LOG_ENQUEUE ol_tx_queue_log_enqueue #define OL_TX_QUEUE_LOG_DEQUEUE ol_tx_queue_log_dequeue #define OL_TX_QUEUE_LOG_FREE ol_tx_queue_log_free @@ -78,7 +78,8 @@ ol_tx_queue_log_free( #define OL_TX_QUEUE_LOG_ENQUEUE(pdev, msdu_info, frms, bytes) /* no-op */ #define OL_TX_QUEUE_LOG_DEQUEUE(pdev, txq, frms, bytes) /* no-op */ -#define OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes) /* no-op */ +/* no-op */ +#define OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes, is_peer_txq) #endif /* TXRX_DEBUG_LEVEL > 5 */ @@ -118,11 +119,12 @@ ol_tx_queue_vdev_flush(struct ol_txrx_pdev_t *pdev, struct ol_txrx_vdev_t *vdev) * into scheduler, so use same tid when we flush them */ if (i == OL_TX_VDEV_MCAST_BCAST) - ol_tx_queue_free(pdev, txq, HTT_TX_EXT_TID_NON_QOS_MCAST_BCAST); + ol_tx_queue_free(pdev, txq, HTT_TX_EXT_TID_NON_QOS_MCAST_BCAST, + false); else if (i == OL_TX_VDEV_DEFAULT_MGMT) - ol_tx_queue_free(pdev, txq, HTT_TX_EXT_TID_MGMT); + ol_tx_queue_free(pdev, txq, HTT_TX_EXT_TID_MGMT, false); else - ol_tx_queue_free(pdev, txq, (i + OL_TX_NUM_TIDS)); + ol_tx_queue_free(pdev, txq, (i + OL_TX_NUM_TIDS), false); } /* flush PEER TX queues */ do { @@ -148,7 +150,7 @@ ol_tx_queue_vdev_flush(struct ol_txrx_pdev_t *pdev, struct ol_txrx_vdev_t *vdev) for (j = 0; j < OL_TX_NUM_TIDS; j++) { txq = &peers[i]->txqs[j]; if (txq->frms) { - ol_tx_queue_free(pdev, txq, j); + ol_tx_queue_free(pdev, txq, j, true); } } TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, @@ -330,7 +332,7 @@ void ol_tx_queue_free( struct ol_txrx_pdev_t *pdev, struct ol_tx_frms_queue_t *txq, - int tid) + int tid, bool is_peer_txq) { int frms = 0, bytes = 0; struct ol_tx_desc_t *tx_desc; @@ -353,9 +355,9 @@ ol_tx_queue_free( txq->frms--; tx_desc = TAILQ_NEXT(tx_desc, tx_desc_list_elem); } - OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes); + OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes, is_peer_txq); txq->bytes -= bytes; - OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes); + OL_TX_QUEUE_LOG_FREE(pdev, txq, tid, frms, bytes, is_peer_txq); txq->flag = ol_tx_queue_empty; /* txq->head gets reset during the TAILQ_CONCAT call */ TAILQ_CONCAT(&tx_tmp_list, &txq->head, tx_desc_list_elem); @@ -1738,7 +1740,7 @@ void ol_tx_queue_log_free( struct ol_txrx_pdev_t *pdev, struct ol_tx_frms_queue_t *txq, - int tid, int frms, int bytes) + int tid, int frms, int bytes, bool is_peer_txq) { u_int16_t peer_id; struct ol_tx_log_queue_add_t *log_elem; @@ -1750,7 +1752,7 @@ ol_tx_queue_log_free( return; } - if (tid < OL_TX_NUM_TIDS) { + if ((tid < OL_TX_NUM_TIDS) && is_peer_txq) { struct ol_txrx_peer_t *peer; struct ol_tx_frms_queue_t *txq_base; diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_queue.h b/CORE/CLD_TXRX/TXRX/ol_tx_queue.h index 4b6500403322..19d3001f0bc7 100644 --- a/CORE/CLD_TXRX/TXRX/ol_tx_queue.h +++ b/CORE/CLD_TXRX/TXRX/ol_tx_queue.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -95,12 +95,13 @@ ol_tx_dequeue( * @param pdev - the physical device object, which stores the txqs * @param txq - which tx queue to free frames from * @param tid - the extended TID that the queue belongs to + * @param is_peer_txq - peer queue or not */ void ol_tx_queue_free( struct ol_txrx_pdev_t *pdev, struct ol_tx_frms_queue_t *txq, - int tid); + int tid, bool is_peer_txq); /** * @brief - discard pending tx frames from the tx queue @@ -124,7 +125,7 @@ ol_tx_queue_discard( #define ol_tx_enqueue(pdev, txq, tx_desc, tx_msdu_info) /* no-op */ #define ol_tx_dequeue(pdev, ext_tid, txq, head, num_frames, credit, bytes) 0 -#define ol_tx_queue_free(pdev, txq, tid) /* no-op */ +#define ol_tx_queue_free(pdev, txq, tid, is_peer_txq) /* no-op */ #define ol_tx_queue_discard(pdev, flush, tx_descs) /* no-op */ #endif /* defined(CONFIG_HL_SUPPORT) */ diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx.c b/CORE/CLD_TXRX/TXRX/ol_txrx.c index f61d6ed5b87e..7add94714be6 100644 --- a/CORE/CLD_TXRX/TXRX/ol_txrx.c +++ b/CORE/CLD_TXRX/TXRX/ol_txrx.c @@ -1204,10 +1204,10 @@ ol_txrx_vdev_detach( for (i = 0; i < OL_TX_VDEV_NUM_QUEUES; i++) { txq = &vdev->txqs[i]; - ol_tx_queue_free(pdev, txq, (i + OL_TX_NUM_TIDS)); + ol_tx_queue_free(pdev, txq, (i + OL_TX_NUM_TIDS), false); } } - #endif /* defined(CONFIG_HL_SUPPORT) */ +#endif /* defined(CONFIG_HL_SUPPORT) */ adf_os_spin_lock_bh(&vdev->ll_pause.mutex); adf_os_timer_cancel(&vdev->ll_pause.timer); @@ -1772,7 +1772,7 @@ ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer) for (i = 0; i < OL_TX_NUM_TIDS; i++) { txq = &peer->txqs[i]; - ol_tx_queue_free(pdev, txq, i); + ol_tx_queue_free(pdev, txq, i, true); } } #endif /* defined(CONFIG_HL_SUPPORT) */ diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h index 5c13303563e7..55ead60a0f10 100644 --- a/CORE/HDD/inc/wlan_hdd_cfg.h +++ b/CORE/HDD/inc/wlan_hdd_cfg.h @@ -3397,6 +3397,26 @@ enum dot11p_mode { #define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX (200) #define CFG_BTC_WLAN_INTERVAL_PAGE_SAP_DEFAULT (30) +/** + * Config to set BT WLAN co-existing + * 0: enable BT WLAN co-existing + * 1: dynamically disable BT WLAN co-existing + */ +#define CFG_BTC_DYNAMIC_WLAN_BT_COEX "gDynamicBTCOEX" +#define CFG_BTC_DYNAMIC_WLAN_BT_COEX_MIN (0) +#define CFG_BTC_DYNAMIC_WLAN_BT_COEX_MAX (1) +#define CFG_BTC_DYNAMIC_WLAN_BT_COEX_DEFAULT (0) + +/** + * Config to set antenna isolation + * range: 0 - 100 db + * default: 0 db + */ +#define CFG_BTC_ANTENNA_ISOLATION "gAntennaIsolation" +#define CFG_BTC_ANTENNA_ISOLATION_MIN (0) +#define CFG_BTC_ANTENNA_ISOLATION_MAX (100) +#define CFG_BTC_ANTENNA_ISOLATION_DEFAULT (0) + /* Parameters for roaming scans performed at high RSSI */ @@ -4576,6 +4596,8 @@ struct hdd_config { uint32_t coex_page_sap_bt_interval; uint32_t coex_page_sap_wlan_interval; + uint32_t dynamic_wlan_bt_coex; + uint32_t antenna_isolation; uint8_t inform_bss_rssi_raw; #ifdef WLAN_FEATURE_TSF diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c index cbb0bf8b4310..af88009372fb 100644 --- a/CORE/HDD/src/wlan_hdd_cfg.c +++ b/CORE/HDD/src/wlan_hdd_cfg.c @@ -4197,6 +4197,20 @@ REG_TABLE_ENTRY g_registry_table[] = CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MIN, CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX), + REG_VARIABLE(CFG_BTC_DYNAMIC_WLAN_BT_COEX, WLAN_PARAM_Integer, + hdd_config_t, dynamic_wlan_bt_coex, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_DYNAMIC_WLAN_BT_COEX_DEFAULT, + CFG_BTC_DYNAMIC_WLAN_BT_COEX_MIN, + CFG_BTC_DYNAMIC_WLAN_BT_COEX_MAX), + + REG_VARIABLE(CFG_BTC_ANTENNA_ISOLATION, WLAN_PARAM_Integer, + hdd_config_t, antenna_isolation, + VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, + CFG_BTC_ANTENNA_ISOLATION_DEFAULT, + CFG_BTC_ANTENNA_ISOLATION_MIN, + CFG_BTC_ANTENNA_ISOLATION_MAX), + REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer, hdd_config_t, inform_bss_rssi_raw, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT, @@ -7902,4 +7916,10 @@ void hdd_set_btc_bt_wlan_interval(hdd_context_t *hdd_ctx) if (VOS_STATUS_SUCCESS != status) hddLog(LOGE, "Fail to set coex page sap bt interval parameters"); } + + status = sme_set_btc_dynamic_bt_wlan_coex( + config->dynamic_wlan_bt_coex, config->antenna_isolation); + + if (VOS_STATUS_SUCCESS != status) + hddLog(LOGE, "Fail to set enable bt wlan coex parameters"); } diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 4749917bafe1..98bb836c6bfb 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -11983,9 +11983,9 @@ int wlan_hdd_cfg80211_init(struct device *dev, &hdd_channels_2_4_GHZ[0], sizeof(hdd_channels_2_4_GHZ)); if (hdd_is_5g_supported(pHddCtx) && - ((eHDD_DOT11_MODE_11b != pCfg->dot11Mode) || - (eHDD_DOT11_MODE_11g != pCfg->dot11Mode) || - (eHDD_DOT11_MODE_11b_ONLY != pCfg->dot11Mode) || + ((eHDD_DOT11_MODE_11b != pCfg->dot11Mode) && + (eHDD_DOT11_MODE_11g != pCfg->dot11Mode) && + (eHDD_DOT11_MODE_11b_ONLY != pCfg->dot11Mode) && (eHDD_DOT11_MODE_11g_ONLY != pCfg->dot11Mode))) { wiphy->bands[IEEE80211_BAND_5GHZ] = &wlan_hdd_band_5_GHZ; diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index b3e855aad8a7..bd5c69dd5311 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -4201,7 +4201,8 @@ static VOS_STATUS hdd_parse_ese_beacon_req(tANI_U8 *pValue, tCsrEseBeaconReq *pEseBcnReq) { tANI_U8 *inPtr = pValue; - int tempInt = 0; + uint8_t input = 0; + uint32_t tempInt = 0; int j = 0, i = 0, v = 0; char buf[32]; @@ -4224,11 +4225,11 @@ static VOS_STATUS hdd_parse_ese_beacon_req(tANI_U8 *pValue, v = sscanf(inPtr, "%31s ", buf); if (1 != v) return -EINVAL; - v = kstrtos32(buf, 10, &tempInt); + v = kstrtou8(buf, 10, &input); if (v < 0) return -EINVAL; - tempInt = VOS_MIN(tempInt, SIR_ESE_MAX_MEAS_IE_REQS); - pEseBcnReq->numBcnReqIe = tempInt; + input = VOS_MIN(input, SIR_ESE_MAX_MEAS_IE_REQS); + pEseBcnReq->numBcnReqIe = input; hddLog(LOG1, "Number of Bcn Req Ie fields: %d", pEseBcnReq->numBcnReqIe); @@ -4249,24 +4250,24 @@ static VOS_STATUS hdd_parse_ese_beacon_req(tANI_U8 *pValue, v = sscanf(inPtr, "%31s ", buf); if (1 != v) return -EINVAL; - v = kstrtos32(buf, 10, &tempInt); + v = kstrtou32(buf, 10, &tempInt); if (v < 0) return -EINVAL; switch (i) { case 0: /* Measurement token */ - if (tempInt <= 0) { + if (!tempInt) { VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, - "Invalid Measurement Token(%d)", tempInt); + "Invalid Measurement Token: %d", tempInt); return -EINVAL; } pEseBcnReq->bcnReq[j].measurementToken = tempInt; break; case 1: /* Channel number */ - if ((tempInt <= 0) || + if ((!tempInt) || (tempInt > WNI_CFG_CURRENT_CHANNEL_STAMAX)) { VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, - "Invalid Channel Number(%d)", tempInt); + "Invalid Channel Number: %d", tempInt); return -EINVAL; } pEseBcnReq->bcnReq[j].channel = tempInt; @@ -4276,19 +4277,18 @@ static VOS_STATUS hdd_parse_ese_beacon_req(tANI_U8 *pValue, if ((tempInt < eSIR_PASSIVE_SCAN) || (tempInt > eSIR_BEACON_TABLE)) { VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, - "Invalid Scan Mode(%d) Expected{0|1|2}", tempInt); + "Invalid Scan Mode: %d Expected{0|1|2}", tempInt); return -EINVAL; } pEseBcnReq->bcnReq[j].scanMode= tempInt; break; case 3: /* Measurement duration */ - if (((tempInt <= 0) && + if (((!tempInt) && (pEseBcnReq->bcnReq[j].scanMode != eSIR_BEACON_TABLE)) || - ((tempInt < 0) && - (pEseBcnReq->bcnReq[j].scanMode == eSIR_BEACON_TABLE))) { + ((pEseBcnReq->bcnReq[j].scanMode == eSIR_BEACON_TABLE))) { VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR, - "Invalid Measurement Duration(%d)", tempInt); + "Invalid Measurement Duration: %d", tempInt); return -EINVAL; } pEseBcnReq->bcnReq[j].measurementDuration = tempInt; diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c index 4c6acb27ec17..403c44eccbb7 100644 --- a/CORE/HDD/src/wlan_hdd_tdls.c +++ b/CORE/HDD/src/wlan_hdd_tdls.c @@ -2255,6 +2255,11 @@ void wlan_hdd_tdls_increment_peer_count(hdd_adapter_t *pAdapter) VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO, "%s: %d", __func__, pHddCtx->connected_peer_count); + if (pHddCtx->cfg_ini->enable_dynamic_sta_chainmask && + (HDD_ANTENNA_MODE_2X2 != pHddCtx->current_antenna_mode)) + hdd_decide_dynamic_chain_mask(pHddCtx, + HDD_ANTENNA_MODE_2X2); + mutex_unlock(&pHddCtx->tdls_lock); EXIT(); } @@ -2277,6 +2282,10 @@ void wlan_hdd_tdls_decrement_peer_count(hdd_adapter_t *pAdapter) VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO, "%s: %d", __func__, pHddCtx->connected_peer_count); + if (!pHddCtx->connected_peer_count && + pHddCtx->cfg_ini->enable_dynamic_sta_chainmask) + hdd_decide_dynamic_chain_mask(pHddCtx, + HDD_ANTENNA_MODE_INVALID); mutex_unlock(&pHddCtx->tdls_lock); EXIT(); } diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h index bc3a01579cc6..35d07b75f0ee 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 11 #define QWLAN_VERSION_EXTRA "" -#define QWLAN_VERSION_BUILD 95 +#define QWLAN_VERSION_BUILD 97 -#define QWLAN_VERSIONSTR "4.0.11.95" +#define QWLAN_VERSIONSTR "4.0.11.97" #define AR6320_REV1_VERSION 0x5000000 diff --git a/CORE/SERVICES/COMMON/wlan_module_ids.h b/CORE/SERVICES/COMMON/wlan_module_ids.h index ac69a90da7e2..716a4f68fac1 100644 --- a/CORE/SERVICES/COMMON/wlan_module_ids.h +++ b/CORE/SERVICES/COMMON/wlan_module_ids.h @@ -99,6 +99,7 @@ typedef enum { WLAN_MODULE_NAN20, /* 0x40 */ WLAN_MODULE_QBOOST, /* 0x41 */ WLAN_MODULE_P2P_LISTEN_OFFLOAD, /* 0x42 */ + WLAN_MODULE_HALPHY, /* 0x43 */ WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index 96d3a4ca2aaf..fcfba3b5de9e 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -5288,6 +5288,17 @@ typedef enum { WMI_VDEV_PARAM_MGMT_TX_POWER, /* + * Vdev level non aggregration/11g sw retry threshold. + * 0-disable, min:0, max:31, default:15 + */ + WMI_VDEV_PARAM_NON_AGG_SW_RETRY_TH, + /* + * Vdev level aggregration sw retry threshold. + * 0-disable, min:0, max:31, default:15 + */ + WMI_VDEV_PARAM_AGG_SW_RETRY_TH, + + /* * === ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are * prone to change. diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index 57c2ed41c3da..f2e272c931e4 100644 --- a/CORE/SERVICES/COMMON/wmi_version.h +++ b/CORE/SERVICES/COMMON/wmi_version.h @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 259 +#define __WMI_REVISION_ 260 /** 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 743f7a4bea60..d05dd39224ca 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -22675,14 +22675,14 @@ static void wma_unpause_vdev(tp_wma_handle wma) { if (!wma->interfaces[vdev_id].handle) continue; - #ifdef QCA_SUPPORT_TXRX_VDEV_PAUSE_LL +#if defined(CONFIG_HL_SUPPORT) || defined(QCA_SUPPORT_TXRX_VDEV_PAUSE_LL) /* When host resume, by default, unpause all active vdev */ if (wma->interfaces[vdev_id].pause_bitmap) { wdi_in_vdev_unpause(wma->interfaces[vdev_id].handle, 0xffffffff); wma->interfaces[vdev_id].pause_bitmap = 0; } - #endif /* QCA_SUPPORT_TXRX_VDEV_PAUSE_LL */ +#endif /* QCA_SUPPORT_TXRX_VDEV_PAUSE_LL || CONFIG_HL_SUPPORT */ iface = &wma->interfaces[vdev_id]; iface->conn_state = FALSE; @@ -33465,7 +33465,7 @@ static wmi_buf_t wma_setup_wmi_init_msg(tp_wma_handle wma_handle, host_mem_chunks[idx].ptr) ; } cmd->num_host_mem_chunks = wma_handle->num_mem_chunks; - len += (wma_handle->num_mem_chunks * sizeof(wlan_host_memory_chunk)); + *len += (wma_handle->num_mem_chunks * sizeof(wlan_host_memory_chunk)); WMITLV_SET_HDR((buf_ptr + sizeof(*cmd) + sizeof(wmi_resource_config)), WMITLV_TAG_ARRAY_STRUC, (sizeof(wlan_host_memory_chunk) * diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h index 1cb1d7b8914c..06d30b57e5dd 100644 --- a/CORE/SME/inc/csrInternal.h +++ b/CORE/SME/inc/csrInternal.h @@ -1521,7 +1521,7 @@ tANI_BOOLEAN csrRoamIs11rAssoc(tpAniSirGlobal pMac, tANI_U8 sessionId); //Returns whether the current association is a ESE assoc or not tANI_BOOLEAN csrRoamIsESEAssoc(tpAniSirGlobal pMac, tANI_U8 sessionId); tANI_BOOLEAN csrRoamIsEseIniFeatureEnabled(tpAniSirGlobal pMac); -tANI_BOOLEAN csrNeighborRoamIsESEAssoc(tpAniSirGlobal pMac, tANI_U8 sessionId); +tANI_BOOLEAN csrNeighborRoamIsESEAssoc(tpAniSirGlobal pMac, tANI_U32 sessionId); #endif //Remove this code once SLM_Sessionization is supported diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h index 02a42b743ccf..6d2e201679e5 100644 --- a/CORE/SME/inc/sme_Api.h +++ b/CORE/SME/inc/sme_Api.h @@ -4460,6 +4460,8 @@ VOS_STATUS sme_set_btc_bt_wlan_interval_page_sta(uint32_t bt_interval, uint32_t sta_interval); VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval, uint32_t sap_interval); +VOS_STATUS sme_set_btc_dynamic_bt_wlan_coex(uint32_t dynamic_wlan_bt_coex, + uint32_t antenna_isolation); uint8_t sme_is_any_session_in_connected_state(tHalHandle h_hal); diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c index 43c43262f0fa..055599fcaee0 100644 --- a/CORE/SME/src/csr/csrApiRoam.c +++ b/CORE/SME/src/csr/csrApiRoam.c @@ -466,18 +466,22 @@ eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac) tANI_U8 num_channel = 0; tANI_U32 bufLen; vos_msg_t msg; - tANI_U8 i, j, social_channel[MAX_SOCIAL_CHANNELS] = {1,6,11}; + tANI_U8 i; tANI_U8 channel_state; uint16_t unsafe_chan[NUM_20MHZ_RF_CHANNELS]; uint16_t unsafe_chan_cnt = 0; uint16_t cnt = 0; uint8_t channel; bool is_unsafe_chan; +#ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY + int j, social_channel[MAX_SOCIAL_CHANNELS] = {1,6,11}; +#endif vos_get_wlan_unsafe_channel(unsafe_chan, &unsafe_chan_cnt, sizeof(unsafe_chan)); +#ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY if (CSR_IS_5G_BAND_ONLY(pMac)) { for (i = 0; i < MAX_SOCIAL_CHANNELS; i++) @@ -490,6 +494,7 @@ eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac) numChan++; } } +#endif bufLen = sizeof(tSirUpdateChanList) + (sizeof(tSirUpdateChanParam) * (numChan)); @@ -569,6 +574,7 @@ eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac) } +#ifdef WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY if (CSR_IS_5G_BAND_ONLY(pMac)) { for (j = 0; j < MAX_SOCIAL_CHANNELS; j++) @@ -585,6 +591,7 @@ eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac) } } } +#endif if ((pMac->roam.configParam.uCfgDot11Mode == eCSR_CFG_DOT11_MODE_AUTO) || (pMac->roam.configParam.uCfgDot11Mode == @@ -5663,7 +5670,7 @@ tANI_BOOLEAN csrRoamIsFastRoamEnabled(tpAniSirGlobal pMac, tANI_U32 sessionId) \return eANI_BOOLEAN_TRUE if current assoc is ESE, eANI_BOOLEAN_FALSE otherwise ---------------------------------------------------------------------------*/ -tANI_BOOLEAN csrNeighborRoamIsESEAssoc(tpAniSirGlobal pMac, tANI_U8 sessionId) +tANI_BOOLEAN csrNeighborRoamIsESEAssoc(tpAniSirGlobal pMac, tANI_U32 sessionId) { return pMac->roam.neighborRoamInfo[sessionId].isESEAssoc; } diff --git a/CORE/SME/src/rrm/sme_rrm.c b/CORE/SME/src/rrm/sme_rrm.c index feff4e197490..a8aa27a39a1c 100644 --- a/CORE/SME/src/rrm/sme_rrm.c +++ b/CORE/SME/src/rrm/sme_rrm.c @@ -1228,11 +1228,11 @@ eHalStatus sme_RrmProcessNeighborReport(tpAniSirGlobal pMac, void *pMsgBuf) tpRrmNeighborReportDesc pNeighborReportDesc; tANI_U8 i = 0; VOS_STATUS vosStatus = VOS_STATUS_SUCCESS; - tANI_U8 sessionId; + tANI_U32 sessionId; /* Get the session id */ status = csrRoamGetSessionIdFromBSSID(pMac, (tCsrBssid *)pNeighborRpt->bssId, - (tANI_U32*) &sessionId); + &sessionId); if (HAL_STATUS_SUCCESS(status)) { #ifdef FEATURE_WLAN_ESE /* Clear the cache for ESE. */ diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c index 7e74be03beb5..30438b7470d7 100644 --- a/CORE/SME/src/sme_common/sme_Api.c +++ b/CORE/SME/src/sme_common/sme_Api.c @@ -18903,6 +18903,45 @@ VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval, } /** + * sme_set_btc_bt_wlan_coex() - Set the btc bt wlan coex + * @dynamic_wlan_bt_coex: enable bt wlan co-exist + * + * Return: Return VOS_STATUS. + */ +VOS_STATUS sme_set_btc_dynamic_bt_wlan_coex(uint32_t dynamic_wlan_bt_coex, + uint32_t antenna_isolation) +{ + vos_msg_t msg = {0}; + VOS_STATUS vos_status; + WMI_COEX_CONFIG_CMD_fixed_param *sme_interval; + + sme_interval = vos_mem_malloc(sizeof(*sme_interval)); + if (!sme_interval) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + FL("Malloc failed")); + return VOS_STATUS_E_NOMEM; + } + + sme_interval->config_type = WMI_COEX_CONFIG_BTC_ENABLE; + sme_interval->config_arg1 = dynamic_wlan_bt_coex; + sme_interval->config_arg2 = antenna_isolation; + + msg.type = WDA_BTC_BT_WLAN_INTERVAL_CMD; + msg.reserved = 0; + msg.bodyptr = sme_interval; + + vos_status = vos_mq_post_message(VOS_MODULE_ID_WDA,&msg); + if (!VOS_IS_STATUS_SUCCESS(vos_status)) { + VOS_TRACE(VOS_MODULE_ID_SME, VOS_TRACE_LEVEL_ERROR, + FL("Not able to post message to WDA")); + vos_mem_free(sme_interval); + return VOS_STATUS_E_FAILURE; + } + + return vos_status; +} + +/** * sme_send_disassoc_req_frame - send disassoc req * @hal: handler to hal * @session_id: session id diff --git a/CORE/VOSS/src/vos_sched.c b/CORE/VOSS/src/vos_sched.c index b76963a44f8f..03ce10e62e7e 100644 --- a/CORE/VOSS/src/vos_sched.c +++ b/CORE/VOSS/src/vos_sched.c @@ -1964,6 +1964,12 @@ VOS_STATUS vos_watchdog_wlan_shutdown(void) */ VOS_STATUS vos_watchdog_wlan_re_init(void) { + /* Make sure that Vos Watchdog context has been initialized */ + if (gpVosWatchdogContext == NULL) { + VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO, + "%s: gpVosWatchdogContext == NULL", __func__); + return VOS_STATUS_SUCCESS; + } /* watchdog task is still running, it is not closed in shutdown */ set_bit(WD_WLAN_REINIT_EVENT_MASK, &gpVosWatchdogContext->wdEventFlag); set_bit(WD_POST_EVENT_MASK, &gpVosWatchdogContext->wdEventFlag); |
