summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkash Patel <akashp@codeaurora.org>2014-07-03 18:45:08 -0700
committerAkash Patel <akashp@codeaurora.org>2014-07-03 18:46:30 -0700
commitec15cf99dff603f31cde423e8e8da3214a05b4dc (patch)
tree7a59c86ab6c13403faaf15dc906bd522256a58e5
parent738c23739435ed19d8d5ecc52563c3e30f4c9bf0 (diff)
parent67fca6c9fb7c49768eb86fa71f8f26a1ca0917e7 (diff)
Release 1.0.0.138 QCACLD WLAN Driver
Merge remote-tracking branch 'origin/caf/caf-wlan/master' * origin/caf/caf-wlan/master: Cafstaging Release 1.0.0.138 qcacld: Fix the SME reassoc command stuck issue qcacld-new: Increase TX DESC number in HL system qcacld-new: Loss callback in HL once QCA_LL_TX_FLOW_CT defined SDIO: Intialize Packetlog for SDIO qca-cld:sap: Select channel based on scan band preference qcacld: [SERVICES]Enable IBSS PS per peer ATIM, warmup time ini conf. qcacld: [Protocol]Enable IBSS PS per peer ATIM, warmup time ini conf. qcacld: [HDD Part]Enable IBSS PS per peer ATIM, warmup time ini conf. qcacld: Debug log support for IBSS Power Save Change-Id: I5a15d75e96f811e3b53c6f405075218b15ed9e08
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_txrx.c12
-rw-r--r--CORE/HDD/inc/wlan_hdd_cfg.h13
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg.c8
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c12
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/include/parserApi.h1
-rw-r--r--CORE/MAC/src/pe/include/limGlobal.h5
-rw-r--r--CORE/MAC/src/pe/lim/limAssocUtils.c7
-rw-r--r--CORE/MAC/src/pe/lim/limIbssPeerMgmt.c6
-rw-r--r--CORE/SAP/src/sapChSelect.c27
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c30
-rw-r--r--CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.h4
-rw-r--r--CORE/SERVICES/WMA/wma.c51
-rw-r--r--CORE/SERVICES/WMA/wma.h2
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c7
-rw-r--r--CORE/SYS/legacy/src/utils/src/parserApi.c9
-rw-r--r--CORE/UTILS/FWLOG/dbglog_host.c36
-rw-r--r--CORE/WDA/inc/legacy/halMsgApi.h6
18 files changed, 223 insertions, 17 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_txrx.c b/CORE/CLD_TXRX/TXRX/ol_txrx.c
index a65a47d5c120..e62b850bccff 100644
--- a/CORE/CLD_TXRX/TXRX/ol_txrx.c
+++ b/CORE/CLD_TXRX/TXRX/ol_txrx.c
@@ -82,12 +82,6 @@
#define OL_TX_DESC_POOL_SIZE_MAX_HL 5000
#endif
-/* Here it's a temporal solution, to avoid FW overflow. */
-#undef OL_TX_DESC_POOL_SIZE_MIN_HL
-#define OL_TX_DESC_POOL_SIZE_MIN_HL 640
-#undef OL_TX_DESC_POOL_SIZE_MAX_HL
-#define OL_TX_DESC_POOL_SIZE_MAX_HL 640
-
/*=== function definitions ===*/
@@ -893,10 +887,10 @@ void ol_txrx_osif_vdev_register(ol_txrx_vdev_handle vdev,
} else {
txrx_ops->tx.std = vdev->tx = OL_TX_LL;
txrx_ops->tx.non_std = ol_tx_non_std_ll;
-#ifdef QCA_LL_TX_FLOW_CT
- vdev->osif_flow_control_cb = txrx_ops->tx.flow_control_cb;
-#endif /* QCA_LL_TX_FLOW_CT */
}
+ #ifdef QCA_LL_TX_FLOW_CT
+ vdev->osif_flow_control_cb = txrx_ops->tx.flow_control_cb;
+ #endif /* QCA_LL_TX_FLOW_CT */
}
void
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index ddeffe32e584..b2fbd24077b4 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2447,6 +2447,18 @@ This feature requires the dependent cfg.ini "gRoamPrefer5GHz" set to 1 */
#define CFG_IBSS_TXSP_END_INACTIVITY_MAX (100)
#define CFG_IBSS_TXSP_END_INACTIVITY_DEFAULT (0)
+/*
+ * When IBSS network is initialized, PS-supporting device
+ * does not enter protocol sleep state during first
+ * gIbssPsWarmupTime seconds.
+ */
+#define CFG_IBSS_PS_WARMUP_TIME_NAME "gIbssPsWarmupTime"
+#define CFG_IBSS_PS_WARMUP_TIME_MIN (0)
+/* Allow unsigned Int Max for now */
+#define CFG_IBSS_PS_WARMUP_TIME_MAX (65535)
+#define CFG_IBSS_PS_WARMUP_TIME_DEFAULT (0)
+
+
#define CFG_SAP_MAX_NO_PEERS "gSoftApMaxPeers"
#define CFG_SAP_MAX_NO_PEERS_MIN (1)
#define CFG_SAP_MAX_NO_PEERS_MAX (32)
@@ -3085,6 +3097,7 @@ typedef struct
v_U8_t isIbssAwakeOnTxRx;
v_U32_t ibssInactivityCount;
v_U32_t ibssTxSpEndInactivityTime;
+ v_U32_t ibssPsWarmupTime;
v_BOOL_t enableTCPChkSumOffld;
v_BOOL_t enableIPChecksumOffload;
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index f53bcfa458b9..1a02df5d5bf4 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -3249,6 +3249,13 @@ REG_TABLE_ENTRY g_registry_table[] =
CFG_IBSS_TXSP_END_INACTIVITY_MIN,
CFG_IBSS_TXSP_END_INACTIVITY_MAX ),
+ REG_VARIABLE( CFG_IBSS_PS_WARMUP_TIME_NAME, WLAN_PARAM_Integer,
+ hdd_config_t, ibssPsWarmupTime,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_IBSS_PS_WARMUP_TIME_DEFAULT,
+ CFG_IBSS_PS_WARMUP_TIME_MIN,
+ CFG_IBSS_PS_WARMUP_TIME_MAX ),
+
#ifndef QCA_WIFI_ISOC
REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
hdd_config_t, thermalTempMinLevel0,
@@ -4101,6 +4108,7 @@ static void print_hdd_cfg(hdd_context_t *pHddCtx)
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssAwakeOnTxRx] Value = [%u] ",pHddCtx->cfg_ini->isIbssAwakeOnTxRx);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssInactivityCount);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssTxSpEndInactivityTime);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssPsWarmupTime] Value = [%u] ",pHddCtx->cfg_ini->ibssPsWarmupTime);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",pHddCtx->cfg_ini->fDfsPhyerrFilterOffload);
#ifdef IPA_OFFLOAD
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index adc35fe89421..e0cb3ee87d5d 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -1089,6 +1089,18 @@ VOS_STATUS hdd_setIbssPowerSaveParams(hdd_adapter_t *pAdapter)
return VOS_STATUS_E_FAILURE;
}
+ ret = process_wma_set_command((int)pAdapter->sessionId,
+ (int)WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS,
+ (int)pHddCtx->cfg_ini->ibssPsWarmupTime,
+ VDEV_CMD);
+ if (VOS_STATUS_SUCCESS != ret)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS failed %d",
+ __func__, ret);
+ return VOS_STATUS_E_FAILURE;
+ }
+
return ret;
}
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 34cddef088c5..709cbbd0ce5a 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 137
+#define QWLAN_VERSION_BUILD 138
-#define QWLAN_VERSIONSTR "1.0.0.137"
+#define QWLAN_VERSIONSTR "1.0.0.138"
#ifdef QCA_WIFI_2_0
diff --git a/CORE/MAC/src/include/parserApi.h b/CORE/MAC/src/include/parserApi.h
index c30aeb87b23b..2ac2cee50f3a 100644
--- a/CORE/MAC/src/include/parserApi.h
+++ b/CORE/MAC/src/include/parserApi.h
@@ -143,6 +143,7 @@ typedef struct sSirProbeRespBeacon
tANI_U8 Vendor1IEPresent;
tANI_U8 Vendor2IEPresent;
tANI_U8 Vendor3IEPresent;
+ tDot11fIEIBSSParams IBSSParams;
} tSirProbeRespBeacon, *tpSirProbeRespBeacon;
diff --git a/CORE/MAC/src/pe/include/limGlobal.h b/CORE/MAC/src/pe/include/limGlobal.h
index 8728bde39dea..f87ba013c518 100644
--- a/CORE/MAC/src/pe/include/limGlobal.h
+++ b/CORE/MAC/src/pe/include/limGlobal.h
@@ -562,6 +562,11 @@ struct tLimIbssPeerNode
tANI_U8 vhtSupportedChannelWidthSet;
tANI_U8 vhtBeamFormerCapable;
#endif
+ /*
+ * Peer Atim Info
+ */
+ tANI_U8 atimIePresent;
+ tANI_U32 peerAtimWindowLength;
};
// Enums used for channel switching.
diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c
index 8d8b86412ce3..abe87e5e83bd 100644
--- a/CORE/MAC/src/pe/lim/limAssocUtils.c
+++ b/CORE/MAC/src/pe/lim/limAssocUtils.c
@@ -2593,6 +2593,13 @@ limAddSta(
return eSIR_HAL_STA_DOES_NOT_EXIST;
}
+ if (pPeerNode->atimIePresent)
+ {
+ pAddStaParams->atimIePresent = pPeerNode->atimIePresent;
+ pAddStaParams->peerAtimWindowLength =
+ pPeerNode->peerAtimWindowLength;
+ }
+
pAddStaParams->ht_caps =
( pPeerNode->htSupportedChannelWidthSet <<
SIR_MAC_HT_CAP_CHWIDTH40_S ) |
diff --git a/CORE/MAC/src/pe/lim/limIbssPeerMgmt.c b/CORE/MAC/src/pe/lim/limIbssPeerMgmt.c
index 2c114a91fb15..5334e32de3f1 100644
--- a/CORE/MAC/src/pe/lim/limIbssPeerMgmt.c
+++ b/CORE/MAC/src/pe/lim/limIbssPeerMgmt.c
@@ -183,6 +183,12 @@ ibss_peer_collect(
pPeer->wmeEdcaPresent = pBeacon->wmeEdcaPresent;
pPeer->wmeInfoPresent = pBeacon->wmeInfoPresent;
+ if (pBeacon->IBSSParams.present)
+ {
+ pPeer->atimIePresent = pBeacon->IBSSParams.present;
+ pPeer->peerAtimWindowLength = pBeacon->IBSSParams.atim;
+ }
+
if(IS_DOT11_MODE_HT(psessionEntry->dot11mode) &&
(pBeacon->HTCaps.present))
{
diff --git a/CORE/SAP/src/sapChSelect.c b/CORE/SAP/src/sapChSelect.c
index 4b66717c8c2c..af52187c96d2 100644
--- a/CORE/SAP/src/sapChSelect.c
+++ b/CORE/SAP/src/sapChSelect.c
@@ -2394,10 +2394,30 @@ v_U8_t sapSelectChannel(tHalHandle halHandle, ptSapContext pSapCtx, tScanResult
{
VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
"%s: No external AP present\n", __func__);
+
+#ifndef SOFTAP_CHANNEL_RANGE
+ return bestChNum;
+#else
//scan is successfull, but no AP is present
- ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL, &startChannelNum);
- ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL, &endChannelNum);
- VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ switch (pSapCtx->scanBandPreference)
+ {
+ case eCSR_BAND_24:
+ startChannelNum = 1;
+ endChannelNum = 11;
+ break;
+
+ case eCSR_BAND_5G:
+ startChannelNum = 36;
+ endChannelNum = 165;
+ break;
+
+ case eCSR_BAND_ALL:
+ default:
+ ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_START_CHANNEL, &startChannelNum);
+ ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_END_CHANNEL, &endChannelNum);
+ }
+
+ VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
"%s: start - end: %d - %d\n", __func__,
startChannelNum, endChannelNum);
@@ -2435,6 +2455,7 @@ v_U8_t sapSelectChannel(tHalHandle halHandle, ptSapContext pSapCtx, tScanResult
else
return startChannelNum;
#endif /* !FEATURE_WLAN_CH_AVOID */
+#endif /* SOFTAP_CHANNEL_RANGE */
}
// Initialize the structure pointed by pSpectInfoParams
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
index 9f674a066066..45767a0330b4 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c
@@ -42,6 +42,13 @@
#include <linux/mmc/sd.h>
#include "bmi_msg.h" /* TARGET_TYPE_ */
#include "if_ath_sdio.h"
+#include "vos_api.h"
+
+#ifndef REMOVE_PKT_LOG
+#include "ol_txrx_types.h"
+#include "pktlog_ac_api.h"
+#include "pktlog_ac.h"
+#endif
#ifndef ATH_BUS_PM
#ifdef CONFIG_PM
@@ -49,6 +56,10 @@
#endif /* CONFIG_PM */
#endif /* ATH_BUS_PM */
+#ifndef REMOVE_PKT_LOG
+struct ol_pl_os_dep_funcs *g_ol_pl_os_dep_funcs = NULL;
+#endif
+
typedef void * hif_handle_t;
typedef void * hif_softc_t;
@@ -151,6 +162,18 @@ ath_hif_sdio_probe(void *context, void *hif_handle)
VOS_TRACE(VOS_MODULE_ID_HIF, VOS_TRACE_LEVEL_INFO," hdd_wlan_startup success!");
}
+#ifndef REMOVE_PKT_LOG
+ if (vos_get_conparam() != VOS_FTM_MODE) {
+ /*
+ * pktlog initialization
+ */
+ ol_pl_sethandle(&ol_sc->pdev_txrx_handle->pl_dev, ol_sc);
+
+ if (pktlogmod_init(ol_sc))
+ printk(KERN_ERR "%s: pktlogmod_init failed\n", __func__);
+ }
+#endif
+
return 0;
err_attach2:
@@ -187,6 +210,13 @@ ath_hif_sdio_remove(void *context, void *hif_handle)
athdiag_procfs_remove();
+#ifndef REMOVE_PKT_LOG
+ if (vos_get_conparam() != VOS_FTM_MODE){
+ if (sc && sc->ol_sc)
+ pktlogmod_exit(sc->ol_sc);
+ }
+#endif
+
if (sc && sc->ol_sc){
A_FREE(sc->ol_sc);
sc->ol_sc = NULL;
diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.h b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.h
index d326a919882e..5512e6e33f04 100644
--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.h
+++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.h
@@ -72,6 +72,10 @@ static inline int athdiag_procfs_init(void *scn) { return 0; }
static inline void athdiag_procfs_remove(void) { return; }
#endif
+#ifndef REMOVE_PKT_LOG
+extern int pktlogmod_init(void *context);
+extern void pktlogmod_exit(void *context);
+#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
#define DMA_MAPPING_ERROR(dev, addr) dma_mapping_error((addr))
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index ac79f77f5e42..adde417034f8 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -8449,6 +8449,16 @@ static int32_t wma_set_priv_cfg(tp_wma_handle wma_handle,
}
}
break;
+ case WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS:
+ {
+ wma_handle->wma_ibss_power_save_params.ibssPsWarmupTime =
+ privcmd->param_value;
+ WMA_LOGD("%s: IBSS Power Save Warm Up Time in Seconds = %d",
+ __func__,
+ wma_handle->wma_ibss_power_save_params.ibssPsWarmupTime);
+ }
+ break;
+
default:
WMA_LOGE("Invalid wma config command id:%d",
privcmd->param_id);
@@ -9713,6 +9723,15 @@ wma_set_ibss_pwrsave_params(tp_wma_handle wma, u_int8_t vdev_id)
return VOS_STATUS_E_FAILURE;
}
+ ret = wmi_unified_vdev_set_param_send(wma->wmi_handle, vdev_id,
+ WMI_VDEV_PARAM_IBSS_PS_WARMUP_TIME_SECS,
+ wma->wma_ibss_power_save_params.ibssPsWarmupTime);
+ if (ret < 0) {
+ WMA_LOGE("Failed, set WMI_VDEV_PARAM_IBSS_PS_WARMUP_TIME_SECS ret=%d",
+ ret);
+ return VOS_STATUS_E_FAILURE;
+ }
+
return VOS_STATUS_SUCCESS;
}
@@ -10384,6 +10403,38 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta)
wma_remove_peer(wma, add_sta->staMac, add_sta->smesessionId, peer);
goto send_rsp;
}
+
+#ifdef QCA_IBSS_SUPPORT
+ /*
+ * In IBSS mode send the peer
+ * Atim Window length if IBSS
+ * power save is enabled by the
+ * firmware.
+ */
+ if ( wma_is_vdev_in_ibss_mode(wma, add_sta->smesessionId) &&
+ WMI_SERVICE_IS_ENABLED(wma->wmi_service_bitmap,
+ WMI_SERVICE_IBSS_PWRSAVE) ) {
+ /*
+ * If ATIM Window is present in the peer
+ * beacon then send it to firmware else
+ * configure Zero ATIM Window length to
+ * firmware.
+ */
+ if(add_sta->atimIePresent) {
+ wma_set_peer_param(wma, add_sta->staMac,
+ WMI_PEER_IBSS_ATIM_WINDOW_LENGTH,
+ add_sta->peerAtimWindowLength,
+ add_sta->smesessionId);
+ }
+ else {
+ wma_set_peer_param(wma, add_sta->staMac,
+ WMI_PEER_IBSS_ATIM_WINDOW_LENGTH,
+ 0,
+ add_sta->smesessionId);
+ }
+ }
+#endif
+
#ifdef WLAN_FEATURE_11W
if (add_sta->rmfEnabled) {
/*
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index 99cef5ba3d5a..c505d65bc97d 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -527,6 +527,7 @@ typedef struct {
u_int32_t isAwakeonTxRxEnabled;
u_int32_t inactivityCount;
u_int32_t txSPEndInactivityTime;
+ u_int32_t ibssPsWarmupTime;
}ibss_power_save_params;
typedef struct {
@@ -1316,6 +1317,7 @@ enum wma_cfg_cmd_id {
WMA_VDEV_IBSS_SET_AWAKE_ON_TX_RX,
WMA_VDEV_IBSS_SET_INACTIVITY_TIME,
WMA_VDEV_IBSS_SET_TXSP_END_INACTIVITY_TIME,
+ WMA_VDEV_IBSS_PS_SET_WARMUP_TIME_SECS,
/* dfs control interface */
WMA_VDEV_DFS_CONTROL_CMDID,
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index ac8212b9ba77..476e6009aca3 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -4747,6 +4747,12 @@ eHalStatus csrRoamProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand )
pIes = NULL;
}
}
+ else
+ {
+ smsLog(pMac, LOGE, FL
+ ("Reassoc To Same AP failed since Connected BSS is NULL"));
+ return eHAL_STATUS_FAILURE;
+ }
break;
}
case eCsrCapsChange:
@@ -6619,6 +6625,7 @@ eHalStatus csrRoamIssueReassoc(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoam
pCommand->u.roamCmd.hBSSList = CSR_INVALID_SCANRESULT_HANDLE;
pCommand->u.roamCmd.fReleaseBssList = eANI_BOOLEAN_FALSE;
pCommand->u.roamCmd.fReassoc = eANI_BOOLEAN_TRUE;
+ csrRoamRemoveDuplicateCommand(pMac, sessionId, pCommand, reason);
status = csrQueueSmeCommand(pMac, pCommand, fImediate);
if( !HAL_STATUS_SUCCESS( status ) )
{
diff --git a/CORE/SYS/legacy/src/utils/src/parserApi.c b/CORE/SYS/legacy/src/utils/src/parserApi.c
index fbe71325b7b3..714307e03da7 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -3674,6 +3674,15 @@ sirConvertBeaconFrame2Struct(tpAniSirGlobal pMac,
sizeof( tDot11fIEWiderBWChanSwitchAnn));
}
#endif
+
+ /* IBSS Peer Params */
+ if(pBeacon->IBSSParams.present)
+ {
+ pBeaconStruct->IBSSParams.present = 1;
+ vos_mem_copy( &pBeaconStruct->IBSSParams, &pBeacon->IBSSParams,
+ sizeof( tDot11fIEIBSSParams ));
+ }
+
pBeaconStruct->Vendor1IEPresent = pBeacon->Vendor1IE.present;
pBeaconStruct->Vendor2IEPresent = pBeacon->Vendor2IE.present;
pBeaconStruct->Vendor3IEPresent = pBeacon->Vendor3IE.present;
diff --git a/CORE/UTILS/FWLOG/dbglog_host.c b/CORE/UTILS/FWLOG/dbglog_host.c
index 40cca65393ee..2defdc7b10d9 100644
--- a/CORE/UTILS/FWLOG/dbglog_host.c
+++ b/CORE/UTILS/FWLOG/dbglog_host.c
@@ -1152,6 +1152,8 @@ char * DBG_MSG_ARR[WLAN_MODULE_ID_MAX][MAX_DBG_MSGS] =
"IBSS_PS_DBGID_PS_DESC_BIN_HWM",
"IBSS_PS_DBGID_PS_DESC_BIN_LWM",
"IBSS_PS_DBGID_PS_KICKOUT_PEER",
+ "IBSS_PS_DBGID_SET_PEER_PARAM",
+ "IBSS_PS_DBGID_BCN_ATIM_WIN_MISMATCH",
},
};
@@ -2037,6 +2039,8 @@ dbglog_ibss_powersave_print_handler(
"ATIM_WINDOW_PRE_BCN",
"ATIM_WINDOW_POST_BCN",
"OUT_OF_ATIM_WINDOW",
+ "PAUSE_PENDING",
+ "PAUSED",
};
static const char *ps_states[] = {
@@ -2046,6 +2050,8 @@ dbglog_ibss_powersave_print_handler(
"SLEEP_DOZE",
"SLEEP_AWAKE",
"ACTIVE_TX_SEND",
+ "PAUSE_TX_SEND",
+ "PAUSED",
};
static const char *peer_ps_states[] = {
@@ -2074,9 +2080,11 @@ dbglog_ibss_powersave_print_handler(
"TRAFFIC_EXCHANGE_DONE",
"POWER_SAVE_STATE_CHANGE",
"NEW_PEER_JOIN",
- "IBSS_VDEV_PAUSE",
- "IBSS_VDEV_UNPAUSE",
- "PS_STATE_CHANGE"
+ "IBSS_VDEV_PAUSE_REQUEST",
+ "IBSS_VDEV_PAUSE_RESPONSE",
+ "IBSS_VDEV_PAUSE_TIMEOUT",
+ "IBSS_VDEV_UNPAUSE_REQUEST",
+ "PS_STATE_CHANGE",
};
enum wlan_ibss_ps_sub_module sub_module;
@@ -2270,6 +2278,9 @@ dbglog_ibss_powersave_print_handler(
if (numargs == 0) {
dbglog_printf(timestamp, vap_id,
"IBSS PS: power collapse not allowed by INI");
+ } else if(numargs == 1) {
+ dbglog_printf(timestamp, vap_id, "IBSS PS: power collapse not allowed since peer id:%d is not PS capable",
+ args[0]);
} else if (numargs == 3) {
if (args[0] == 2) {
dbglog_printf(timestamp, vap_id,
@@ -2334,6 +2345,25 @@ dbglog_ibss_powersave_print_handler(
}
break;
+ case IBSS_PS_DBGID_SET_PEER_PARAM:
+ if(numargs == 3) {
+ dbglog_printf(timestamp, vap_id, "IBSS PS: Set Peer Id:%d Param ID:%0x Value:%0x",
+ args[0], args[1], args[2]);
+ }
+ break;
+
+ case IBSS_PS_DBGID_BCN_ATIM_WIN_MISMATCH:
+ if(numargs == 4) {
+ if(args[0] == 0xDEAD) {
+ dbglog_printf(timestamp, vap_id, "IBSS PS: ATIM window length mismatch, our's:%d, peer id:%d, peer's:%d",
+ args[1], args[2], args[3]);
+ } else if(args[0] == 0xBEEF) {
+ dbglog_printf(timestamp, vap_id, "IBSS PS: Peer ATIM window length changed, peer id:%d, peer recorded atim window:%d new atim window:%d",
+ args[1], args[2], args[3]);
+ }
+ }
+ break;
+
default:
return FALSE;
}
diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h
index 0c680ae7a322..3fe8321163f1 100644
--- a/CORE/WDA/inc/legacy/halMsgApi.h
+++ b/CORE/WDA/inc/legacy/halMsgApi.h
@@ -305,6 +305,12 @@ typedef struct
tANI_U32 vht_caps;
tSirNwType nwType;
tPowerdBm maxTxPower;
+ /*
+ * Peer Atim Info, Valid only
+ * for IBSS Mode.
+ */
+ tANI_U8 atimIePresent;
+ tANI_U32 peerAtimWindowLength;
} tAddStaParams, *tpAddStaParams;