Merge "Wlan: Release 3.8.20.22"
diff --git a/CORE/HDD/src/wlan_hdd_assoc.c b/CORE/HDD/src/wlan_hdd_assoc.c
index 156ede0..3caba64 100644
--- a/CORE/HDD/src/wlan_hdd_assoc.c
+++ b/CORE/HDD/src/wlan_hdd_assoc.c
@@ -804,6 +804,8 @@
// notify apps that we can't pass traffic anymore
netif_tx_disable(dev);
netif_carrier_off(dev);
+ //TxTimeoutCount need to reset in case of disconnect handler
+ pAdapter->hdd_stats.hddTxRxStats.continuousTxTimeoutCount = 0;
INIT_COMPLETION(pAdapter->disconnect_comp_var);
/* HDD has initiated disconnect, do not send disconnect indication
@@ -1298,7 +1300,7 @@
know that the device is getting activated properly.
*/
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
- if (pHddStaCtx->ft_carrier_on == FALSE)
+ if (pHddStaCtx->ft_carrier_on == FALSE && !hddDisconInProgress )
{
#endif
// Enable Linkup Event Servicing which allows the net device notifier to set the linkup event variable
@@ -1560,7 +1562,8 @@
sizeof(pAdapter->hdd_stats.hddPmfStats) );
#endif
// Start the Queue
- netif_tx_wake_all_queues(dev);
+ if ( !hddDisconInProgress )
+ netif_tx_wake_all_queues(dev);
#ifdef DEBUG_ROAM_DELAY
vos_record_roam_event(e_HDD_ENABLE_TX_QUEUE, NULL, 0);
#endif
diff --git a/CORE/HDD/src/wlan_hdd_scan.c b/CORE/HDD/src/wlan_hdd_scan.c
index c14e938..e31c1ce 100644
--- a/CORE/HDD/src/wlan_hdd_scan.c
+++ b/CORE/HDD/src/wlan_hdd_scan.c
@@ -237,7 +237,7 @@
{
/* no space to add event */
/* Error code may be E2BIG */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWAP ");
+ hddLog(LOGE, "hdd_IndicateScanResult: no space for SIOCGIWAP ");
return -E2BIG;
}
@@ -273,7 +273,7 @@
if (last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWNAME");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWNAME");
/* Error code, may be E2BIG */
return -E2BIG;
}
@@ -292,7 +292,7 @@
if (last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWFREQ");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWFREQ");
return -E2BIG;
}
@@ -323,7 +323,7 @@
if (last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWMODE");
+ hddLog(LOGE, "hdd_IndicateScanResult: no space for SIOCGIWMODE");
return -E2BIG;
}
/* To extract SSID */
@@ -363,14 +363,14 @@
if(last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWESSID");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWESSID");
return -E2BIG;
}
}
if( hdd_GetWPARSNIEs( ( tANI_U8 *) descriptor->ieFields, ie_length, &last_event, ¤t_event, scanInfo ) < 0 )
{
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWESSID");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWESSID");
return -E2BIG;
}
@@ -446,7 +446,7 @@
{
if (last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWRATE");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWRATE");
return -E2BIG;
}
}
@@ -473,7 +473,7 @@
if(last_event == current_event)
{ /* no space to add event
Error code, may be E2BIG */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for SIOCGIWENCODE");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for SIOCGIWENCODE");
return -E2BIG;
}
}
@@ -508,7 +508,7 @@
if(last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for IWEVQUAL");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for IWEVQUAL");
return -E2BIG;
}
@@ -523,7 +523,7 @@
&event, custom);
if(last_event == current_event)
{ /* no space to add event */
- hddLog( LOGW, "hdd_IndicateScanResult: no space for IWEVCUSTOM (age)");
+ hddLog( LOGE, "hdd_IndicateScanResult: no space for IWEVCUSTOM (age)");
return -E2BIG;
}
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 6b2db12..22eb036 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -1939,7 +1939,7 @@
if ((NULL == pHddCtx) || (NULL == pHddTdlsCtx))
{
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
FL(" pHddCtx or pHddTdlsCtx points to NULL"));
return;
}
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index 872a919..823e80a 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -122,6 +122,9 @@
DYNAMIC_WMM_PS = 43,
MAC_SPOOFED_SCAN = 44,
+ BMU_ERROR_GENERIC_RECOVERY = 45,
+ WPS_PRBRSP_TMPL = 48,
+ BCN_IE_FLT_DELTA = 49,
//MAX_FEATURE_SUPPORTED = 128
} placeHolderInCapBitmap;
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 7a24071..058146e 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1730,6 +1730,55 @@
return retCode;
} /*** end limHandleIBSScoalescing() ***/
+tAniBool limEncTypeMatched(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon,
+ tpPESession pSession)
+{
+ if (!pBeacon || !pSession)
+ return eSIR_FALSE;
+
+ limLog(pMac, LOG1,
+ FL("Beacon/Probe:: Privacy :%d WPA Present:%d RSN Present: %d"),
+ pBeacon->capabilityInfo.privacy, pBeacon->wpaPresent,
+ pBeacon->rsnPresent);
+ limLog(pMac, LOG1,
+ FL("pSession:: Privacy :%d EncyptionType: %d"),
+ SIR_MAC_GET_PRIVACY(pSession->limCurrentBssCaps),
+ pSession->encryptType);
+
+ /* This is handled by sending probe req due to IOT issues so return TRUE
+ */
+ if ( (pBeacon->capabilityInfo.privacy) !=
+ SIR_MAC_GET_PRIVACY(pSession->limCurrentBssCaps))
+ {
+ limLog(pMac, LOG1, FL("Return for Privacy bit miss match, As "
+ "for this driver need to send the probe request to handle"
+ " IOT issues "));
+ return eSIR_TRUE;
+ }
+
+ /*Open*/
+ if( (pBeacon->capabilityInfo.privacy == 0) &&
+ (pSession->encryptType == eSIR_ED_NONE))
+ return eSIR_TRUE;
+
+ /* WEP */
+ if ( (pBeacon->capabilityInfo.privacy == 1) && (pBeacon->wpaPresent == 0) &&
+ (pBeacon->rsnPresent == 0) &&
+ ( (pSession->encryptType == eSIR_ED_WEP40) ||
+ (pSession->encryptType == eSIR_ED_WEP104)))
+ return eSIR_TRUE;
+
+ /* WPA OR RSN*/
+ if ( (pBeacon->capabilityInfo.privacy == 1) &&
+ ( (pBeacon->wpaPresent == 1) ||
+ ( pBeacon->rsnPresent == 1)) &&
+ ( (pSession->encryptType == eSIR_ED_TKIP) ||
+ (pSession->encryptType == eSIR_ED_CCMP) ||
+ (pSession->encryptType == eSIR_ED_AES_128_CMAC)))
+ return eSIR_TRUE;
+
+ return eSIR_FALSE;
+}
/**
@@ -1764,9 +1813,13 @@
tSirSmeApNewCaps apNewCaps;
tANI_U8 newChannel;
tSirRetStatus status = eSIR_SUCCESS;
+ tAniBool securityCapsMatched = eSIR_TRUE;
+
apNewCaps.capabilityInfo = limGetU16((tANI_U8 *) &pBeacon->capabilityInfo);
newChannel = (tANI_U8) pBeacon->channelNumber;
+ securityCapsMatched = limEncTypeMatched(pMac, pBeacon, psessionEntry);
+
if ( ( false == psessionEntry->limSentCapsChangeNtf ) &&
( ( ( !limIsNullSsid(&pBeacon->ssId) ) &&
( false == limCmpSSid(pMac, &pBeacon->ssId, psessionEntry) ) ) ||
@@ -1778,10 +1831,14 @@
SIR_MAC_GET_SHORT_PREAMBLE(psessionEntry->limCurrentBssCaps) ) ||
( SIR_MAC_GET_QOS(apNewCaps.capabilityInfo) !=
SIR_MAC_GET_QOS(psessionEntry->limCurrentBssCaps) ) ||
- ( newChannel != psessionEntry->currentOperChannel )
+ ( newChannel != psessionEntry->currentOperChannel ) ||
+ (eSIR_FALSE == securityCapsMatched)
) ) )
{
- if( false == psessionEntry->fWaitForProbeRsp )
+ /* No need to send probe request if security
+ * capability doesnt match, Disconnect directly.*/
+ if( (false == psessionEntry->fWaitForProbeRsp) &&
+ (eSIR_TRUE == securityCapsMatched))
{
/* If Beacon capabilities is not matching with the current capability,
* then send unicast probe request to AP and take decision after
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
index c18da93..f40d538 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
@@ -206,14 +206,14 @@
pHdr = WDA_GET_RX_MAC_HEADER(pRxPacketInfo);
framelen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
- limLog(pMac, LOG1, FL("Received %s Req Frame on sessionid: %d systemrole %d"
+ limLog(pMac, LOG1, FL("Received %s Req Frame on sessionid: %d systemrole %d"
" limMlmState %d from: "MAC_ADDRESS_STR),
(LIM_ASSOC == subType) ? "Assoc" : "ReAssoc",
psessionEntry->peSessionId, psessionEntry->limSystemRole,
psessionEntry->limMlmState, MAC_ADDR_ARRAY(pHdr->sa));
- if (psessionEntry->limSystemRole == eLIM_STA_ROLE || psessionEntry->limSystemRole == eLIM_BT_AMP_STA_ROLE )
- {
+ if (psessionEntry->limSystemRole == eLIM_STA_ROLE || psessionEntry->limSystemRole == eLIM_BT_AMP_STA_ROLE )
+ {
limLog(pMac, LOGE, FL("received unexpected ASSOC REQ on sessionid: %d "
"sys subType=%d for role=%d from: "MAC_ADDRESS_STR),
psessionEntry->peSessionId,
@@ -223,6 +223,27 @@
return;
}
+ /*
+ * If a STA is already present in DPH and it
+ * is initiating a Assoc re-transmit, do not
+ * process it. This can happen when first Assoc Req frame
+ * is received but ACK lost at STA side. The ACK for this
+ * dropped Assoc Req frame should be sent by HW. Host simply
+ * does not process it once the entry for the STA is already
+ * present in DPH.
+ */
+ pStaDs = dphLookupHashEntry(pMac, pHdr->sa, &peerIdx,
+ &psessionEntry->dph.dphHashTable);
+ if ((NULL != pStaDs) && (pHdr->fc.retry > 0))
+ {
+ limLog(pMac, LOGE,
+ FL("STA is initiating Assoc Req after ACK lost.So, do not Process"
+ "sessionid: %d sys subType=%d for role=%d from: "MAC_ADDRESS_STR),
+ psessionEntry->peSessionId, subType,
+ psessionEntry->limSystemRole, MAC_ADDR_ARRAY(pHdr->sa));
+ return;
+ }
+
// Get pointer to Re/Association Request frame body
pBody = WDA_GET_RX_MPDU_DATA(pRxPacketInfo);
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index e2b0ea2..853f5b5 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -512,6 +512,7 @@
/* Start peridic timer which will trigger probe req based on min/max
channel timer */
periodicScanTimer = &pMac->lim.limTimers.gLimPeriodicProbeReqTimer;
+ limDeactivateAndChangeTimer(pMac, eLIM_PERIODIC_PROBE_REQ_TIMER);
if (tx_timer_activate(periodicScanTimer) != TX_SUCCESS)
{
limLog(pMac, LOGP, FL("could not start periodic probe req "
diff --git a/CORE/MAC/src/pe/lim/limSendMessages.c b/CORE/MAC/src/pe/lim/limSendMessages.c
index a2258a6..b71640f 100644
--- a/CORE/MAC/src/pe/lim/limSendMessages.c
+++ b/CORE/MAC/src/pe/lim/limSendMessages.c
@@ -71,6 +71,8 @@
,{SIR_MAC_VHT_OPMODE_EID, 0, {0, 0, 0, 0}}
,{SIR_MAC_VHT_OPERATION_EID, 0, {0, 0, VHTOP_CHWIDTH_MASK, 0}}
#endif
+ ,{SIR_MAC_RSN_EID, 1, {0, 0, 0, 0}}
+ ,{SIR_MAC_WPA_EID, 1, {0, 0, 0, 0}}
};
/**
@@ -794,7 +796,16 @@
retCode = eSIR_FAILURE;
return retCode;
}
- msgSize = sizeof(tBeaconFilterMsg) + sizeof(beaconFilterTable);
+ /*
+ * Dont send the WPA and RSN iE in filter if FW doesnt support
+ * IS_FEATURE_BCN_FLT_DELTA_ENABLE,
+ * else host will get all beacons which have RSN IE or WPA IE
+ */
+ if(IS_FEATURE_BCN_FLT_DELTA_ENABLE)
+ msgSize = sizeof(tBeaconFilterMsg) + sizeof(beaconFilterTable);
+ else
+ msgSize = sizeof(tBeaconFilterMsg) + sizeof(beaconFilterTable) - (2 * sizeof(tBeaconFilterIe));
+
pBeaconFilterMsg = vos_mem_malloc(msgSize);
if ( NULL == pBeaconFilterMsg )
{
@@ -810,7 +821,16 @@
pBeaconFilterMsg->capabilityMask = CAPABILITY_FILTER_MASK;
pBeaconFilterMsg->beaconInterval = (tANI_U16) psessionEntry->beaconParams.beaconInterval;
// Fill in number of IEs in beaconFilterTable
- pBeaconFilterMsg->ieNum = (tANI_U16) (sizeof(beaconFilterTable) / sizeof(tBeaconFilterIe));
+ /*
+ * Dont send the WPA and RSN iE in filter if FW doesnt support
+ * IS_FEATURE_BCN_FLT_DELTA_ENABLE,
+ * else host will get all beacons which have RSN IE or WPA IE
+ */
+ if(IS_FEATURE_BCN_FLT_DELTA_ENABLE)
+ pBeaconFilterMsg->ieNum = (tANI_U16) (sizeof(beaconFilterTable) / sizeof(tBeaconFilterIe));
+ else
+ pBeaconFilterMsg->ieNum = (tANI_U16) ((sizeof(beaconFilterTable) / sizeof(tBeaconFilterIe)) - 2);
+
//Fill the BSSIDX
pBeaconFilterMsg->bssIdx = psessionEntry->bssIdx;
diff --git a/CORE/MAC/src/pe/lim/limTimerUtils.c b/CORE/MAC/src/pe/lim/limTimerUtils.c
index 23c87b5..5dd4a1e 100644
--- a/CORE/MAC/src/pe/lim/limTimerUtils.c
+++ b/CORE/MAC/src/pe/lim/limTimerUtils.c
@@ -1085,18 +1085,48 @@
limLog(pMac, LOGP,
FL("Unable to deactivate periodic timer"));
}
-
- val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->minChannelTime)/2;
- if (pMac->btc.btcScanCompromise)
+ if(pMac->lim.gpLimMlmScanReq)
{
- if (pMac->lim.gpLimMlmScanReq->minChannelTimeBtc)
- {
- val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->minChannelTimeBtc)/2;
- }
- else
- {
- limLog(pMac, LOGE, FL("BTC Active Scan Min Time is Not Set"));
- }
+ val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->minChannelTime)/2;
+ if (pMac->btc.btcScanCompromise)
+ {
+ if (pMac->lim.gpLimMlmScanReq->minChannelTimeBtc)
+ {
+ val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->minChannelTimeBtc)/2;
+ limLog(pMac, LOG1, FL("Using BTC Min Active Scan time"));
+ }
+ else
+ {
+ limLog(pMac, LOGE, FL("BTC Active Scan Min Time is Not Set"));
+ }
+ }
+ }
+ /*If val is 0 it means min Channel timer is 0 so take the value from maxChannelTimer*/
+ if (!val)
+ {
+
+ if(pMac->lim.gpLimMlmScanReq)
+ {
+ val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->maxChannelTime)/2;
+ if (pMac->btc.btcScanCompromise)
+ {
+ if (pMac->lim.gpLimMlmScanReq->maxChannelTimeBtc)
+ {
+ val = SYS_MS_TO_TICKS(pMac->lim.gpLimMlmScanReq->maxChannelTimeBtc)/2;
+ limLog(pMac, LOG1, FL("Using BTC Max Active Scan time"));
+ }
+ else
+ {
+ limLog(pMac, LOGE, FL("BTC Active Scan Max Time is Not Set"));
+ }
+ }
+ }
+ else
+ {
+ limLog(pMac, LOGE, FL(" gpLimMlmScanReq is NULL "));
+ //No need to change max timer. This is not a scan
+ break;
+ }
}
if (tx_timer_change(&pMac->lim.limTimers.gLimPeriodicProbeReqTimer,
val, 0) != TX_SUCCESS)
diff --git a/CORE/MAC/src/pe/sch/schApi.c b/CORE/MAC/src/pe/sch/schApi.c
index c35a359..24bee2c 100644
--- a/CORE/MAC/src/pe/sch/schApi.c
+++ b/CORE/MAC/src/pe/sch/schApi.c
@@ -350,9 +350,13 @@
FL("Successfully posted WDA_SEND_BEACON_REQ to HAL"));
if( (psessionEntry->limSystemRole == eLIM_AP_ROLE )
- && (psessionEntry->proxyProbeRspEn)
- && (pMac->sch.schObject.fBeaconChanged))
+ && (pMac->sch.schObject.fBeaconChanged)
+ && ((psessionEntry->proxyProbeRspEn)
+ || (IS_FEATURE_SUPPORTED_BY_FW(WPS_PRBRSP_TMPL)))
+ )
+
{
+ schLog(pMac, LOG1, FL("Sending probeRsp Template to HAL"));
if(eSIR_SUCCESS != (retCode = limSendProbeRspTemplateToHal(pMac,psessionEntry,
&psessionEntry->DefProbeRspIeBitmap[0])))
{
diff --git a/CORE/MAC/src/pe/sch/schBeaconGen.c b/CORE/MAC/src/pe/sch/schBeaconGen.c
index ae3d93e..031380c 100644
--- a/CORE/MAC/src/pe/sch/schBeaconGen.c
+++ b/CORE/MAC/src/pe/sch/schBeaconGen.c
@@ -274,7 +274,9 @@
ptr = pMac->sch.schObject.gSchBeaconFrameBegin + offset;
if((psessionEntry->limSystemRole == eLIM_AP_ROLE)
- && (psessionEntry->proxyProbeRspEn))
+ && ((psessionEntry->proxyProbeRspEn)
+ || (IS_FEATURE_SUPPORTED_BY_FW(WPS_PRBRSP_TMPL)))
+ )
{
/* Initialize the default IE bitmap to zero */
vos_mem_set(( tANI_U8* )&(psessionEntry->DefProbeRspIeBitmap), (sizeof( tANI_U32 ) * 8), 0);
@@ -398,7 +400,9 @@
}
if((psessionEntry->limSystemRole == eLIM_AP_ROLE)
- && (psessionEntry->proxyProbeRspEn))
+ && ((psessionEntry->proxyProbeRspEn)
+ || (IS_FEATURE_SUPPORTED_BY_FW(WPS_PRBRSP_TMPL)))
+ )
{
/* Can be efficiently updated whenever new IE added in Probe response in future */
limUpdateProbeRspTemplateIeBitmapBeacon2(pMac,pBcn2,&psessionEntry->DefProbeRspIeBitmap[0],
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 847a2e1..36ba283 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2039,7 +2039,7 @@
if ( 0 == pClientSTA->ucExists )
{
- TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_INFO,
+ TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
"WLAN TL:Station was not previously registered on WLANTL_STAPktPending"));
return VOS_STATUS_E_EXISTS;
}
diff --git a/CORE/WDA/inc/wlan_qct_wda.h b/CORE/WDA/inc/wlan_qct_wda.h
index 26498e3..9abea4b 100644
--- a/CORE/WDA/inc/wlan_qct_wda.h
+++ b/CORE/WDA/inc/wlan_qct_wda.h
@@ -134,6 +134,7 @@
#define IS_FW_IN_TX_PATH_FEATURE_ENABLE ((WDI_getHostWlanFeatCaps(FW_IN_TX_PATH)) & (WDA_getFwWlanFeatCaps(FW_IN_TX_PATH)))
#define IS_MUMIMO_BFORMEE_CAPABLE ((WDI_getHostWlanFeatCaps(MU_MIMO)) & (WDA_getFwWlanFeatCaps(MU_MIMO)))
+#define IS_FEATURE_BCN_FLT_DELTA_ENABLE ((WDI_getHostWlanFeatCaps(BCN_IE_FLT_DELTA)) & (WDA_getFwWlanFeatCaps(BCN_IE_FLT_DELTA)))
/*--------------------------------------------------------------------------
Utilities
--------------------------------------------------------------------------*/
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index 93b6f18..a9cd910 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -127,7 +127,7 @@
#define TOTALFRAGMENTS(x) (((x % FRAGMENT_SIZE) == 0) ? (x / FRAGMENT_SIZE):((x / FRAGMENT_SIZE) + 1))
/* Beacon Filter Length*/
-#define WDI_BEACON_FILTER_LEN 70
+#define WDI_BEACON_FILTER_LEN 90
/* Coex Indication data size - should match WLAN_COEX_IND_DATA_SIZE */
#define WDI_COEX_IND_DATA_SIZE (4)
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 4644f0f..dc04d81 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -190,7 +190,11 @@
,DYNAMIC_WMM_PS //43
,MAC_SPOOFED_SCAN //44
-
+ ,FEATURE_NOT_SUPPORTED //45
+ ,FEATURE_NOT_SUPPORTED //46
+ ,FEATURE_NOT_SUPPORTED //47
+ ,WPS_PRBRSP_TMPL //48
+ ,BCN_IE_FLT_DELTA //49
};
/*--------------------------------------------------------------------------
@@ -1394,6 +1398,17 @@
case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
pCapStr += strlen("MAC_SPOOFED_SCAN");
break;
+ case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
+ pCapStr += strlen("WPS_PRBRSP_TMPL");
+ break;
+ case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
+ pCapStr += strlen("BCN_IE_FLT_DELTA");
+ break;
+
+
+ case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
+ pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
+ break;
}
*pCapStr++ = ',';
diff --git a/riva/inc/wlan_hal_msg.h b/riva/inc/wlan_hal_msg.h
index 6fbac33..d30012e 100644
--- a/riva/inc/wlan_hal_msg.h
+++ b/riva/inc/wlan_hal_msg.h
@@ -516,6 +516,9 @@
WLAN_HAL_MAC_SPOOFED_SCAN_REQ = 292,
WLAN_HAL_MAC_SPOOFED_SCAN_RSP = 293,
+ WLAN_HAL_FW_STATS_REQ = 296,
+ WLAN_HAL_FW_STATS_RSP = 297,
+
WLAN_HAL_MSG_MAX = WLAN_HAL_MSG_TYPE_MAX_ENUM_SIZE
}tHalHostMsgType;
@@ -3071,6 +3074,43 @@
} tHalStatsRspMsg, *tpHalStatsRspMsg;
/*---------------------------------------------------------------------------
+ * WLAN_HAL_FW_STATS_REQ
+ *---------------------------------------------------------------------------*/
+ typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 type;
+}tHalfwStatsReqParams, *tpHalfwStatsReqParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalfwStatsReqParams fwstatsReqParams;
+} tHalfwStatsReqMsg, *tpHalfwStatsReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_FW_STATS_RSP
+ *---------------------------------------------------------------------------*/
+ typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 type;
+ tANI_U32 length;
+ tANI_U8 data[1];
+
+}tHalfwStatsRspParams, *tpHalfwStatsRspParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalfwStatsRspParams fwstatsRspParams;
+} tHalfwStatsRspMsg, *tpHalfwStatsRspMsg;
+
+typedef enum
+{
+ FW_UBSP_STATS = 1,
+} fwstatstype;
+
+
+/*---------------------------------------------------------------------------
* WLAN_HAL_SET_LINK_ST_REQ
*--------------------------------------------------------------------------*/
typedef PACKED_PRE struct PACKED_POST
@@ -6550,6 +6590,10 @@
DYNAMIC_WMM_PS = 43,
MAC_SPOOFED_SCAN = 44,
BMU_ERROR_GENERIC_RECOVERY = 45,
+ DISA = 46,
+ FW_STATS = 47,
+ WPS_PRBRSP_TMPL = 48,
+ BCN_IE_FLT_DELTA = 49,
MAX_FEATURE_SUPPORTED = 128,
} placeHolderInCapBitmap;