Merge "wlan: Fixed the compilation errors when enabling BUILD_DIAG_VERSION"
diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 0c155c5..9d41723 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -183,6 +183,8 @@
#define HDD_SAP_WAKE_LOCK_DURATION 10000 //in msecs
+#define HDD_MOD_EXIT_SSR_MAX_RETRIES 30
+
/* Maximum number of interfaces allowed(STA, P2P Device, P2P Interface) */
#define WLAN_MAX_INTERFACES 3
@@ -1082,5 +1084,7 @@
void hdd_reset_pwrparams(hdd_context_t *pHddCtx);
int wlan_hdd_validate_context(hdd_context_t *pHddCtx);
VOS_STATUS hdd_issta_p2p_clientconnected(hdd_context_t *pHddCtx);
-
+#ifdef WLAN_FEATURE_PACKET_FILTERING
+int wlan_hdd_setIPv6Filter(hdd_context_t *pHddCtx, tANI_U8 filterType, tANI_U8 sessionId);
+#endif
#endif // end #if !defined( WLAN_HDD_MAIN_H )
diff --git a/CORE/HDD/inc/wlan_hdd_packet_filtering.h b/CORE/HDD/inc/wlan_hdd_packet_filtering.h
index 7089653..c2b36b6 100644
--- a/CORE/HDD/inc/wlan_hdd_packet_filtering.h
+++ b/CORE/HDD/inc/wlan_hdd_packet_filtering.h
@@ -36,10 +36,20 @@
#ifdef WLAN_FEATURE_PACKET_FILTERING
-#define HDD_MAX_CMP_PER_PACKET_FILTER 5
-#define HDD_WLAN_MAC_ADDR_LEN 6
-#define HDD_MAX_NUM_MULTICAST_ADDRESS 10
+#define HDD_MAX_CMP_PER_PACKET_FILTER 5
+#define HDD_FILTER_IPV6_MC_UC 1
+#define HDD_FILTER_IPV6_MC 0
+#define HDD_FILTER_ID_IPV6_MC 10
+#define HDD_FILTER_ID_IPV6_UC 11
+
+#define HDD_IPV6_MC_CMP_DATA 0x33
+#define HDD_IPV6_UC_CMP_DATA 0x01
+#define HDD_IPV6_CMP_DATA_0 0x86
+#define HDD_IPV6_CMP_DATA_1 0xDD
+
+#define HDD_WLAN_MAC_ADDR_LEN 6
+#define HDD_MAX_NUM_MULTICAST_ADDRESS 10
typedef enum
{
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 4bbdc9f..6950176 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -7613,6 +7613,8 @@
if (eTDLS_LINK_CONNECTED != pTdlsPeer->link_status)
{
+ long ret;
+
if (0 != wlan_hdd_tdls_get_link_establish_params(pAdapter, peer,&tdlsLinkEstablishParams)) {
return -EINVAL;
}
@@ -7624,13 +7626,13 @@
* register with the TL on after the response for this operation
* is received .
*/
- status = wait_for_completion_interruptible_timeout(&pAdapter->tdls_link_establish_req_comp,
+ ret = wait_for_completion_interruptible_timeout(&pAdapter->tdls_link_establish_req_comp,
msecs_to_jiffies(WAIT_TIME_TDLS_LINK_ESTABLISH_REQ));
- if (status <= 0)
+ if (ret <= 0)
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
"%s: Link Establish Request Faled Status %ld",
- __func__, status);
+ __func__, ret);
return -EINVAL;
}
wlan_hdd_tdls_set_peer_link_status(pTdlsPeer, eTDLS_LINK_CONNECTED);
@@ -7657,66 +7659,23 @@
wlan_hdd_tdls_check_bmps(pAdapter);
/* Update TL about the UAPSD masks , to route the packets to firmware */
- if ( TRUE == pHddCtx->cfg_ini->fEnableTDLSBufferSta &&
- pHddCtx->cfg_ini->fTDLSUapsdMask & HDD_AC_VO )
+ if ((TRUE == pHddCtx->cfg_ini->fEnableTDLSBufferSta)
+ || pHddCtx->cfg_ini->fTDLSUapsdMask )
{
- status = WLANTL_EnableUAPSDForAC( (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
- pTdlsPeer->staId,
- WLANTL_AC_VO,
- 7,
- 7,
- 0,
- 0,
- WLANTL_BI_DIR );
-
- VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ));
+ int ac;
+ uint8 ucAc[4] = { WLANTL_AC_VO,
+ WLANTL_AC_VI,
+ WLANTL_AC_BK,
+ WLANTL_AC_BE };
+ uint8 tlTid[4] = { 7, 5, 2, 3 } ;
+ for(ac=0; ac < 4; ac++)
+ {
+ status = WLANTL_EnableUAPSDForAC( (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
+ pTdlsPeer->staId, ucAc[ac],
+ tlTid[ac], tlTid[ac], 0, 0,
+ WLANTL_BI_DIR );
+ }
}
-
- if ( TRUE == pHddCtx->cfg_ini->fEnableTDLSBufferSta &&
- pHddCtx->cfg_ini->fTDLSUapsdMask & HDD_AC_VI )
- {
- status = WLANTL_EnableUAPSDForAC( (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
- pTdlsPeer->staId,
- WLANTL_AC_VI,
- 5,
- 5,
- 0,
- 0,
- WLANTL_BI_DIR );
-
- VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ));
- }
-
- if ( TRUE == pHddCtx->cfg_ini->fEnableTDLSBufferSta &&
- pHddCtx->cfg_ini->fTDLSUapsdMask & HDD_AC_BK )
- {
- status = WLANTL_EnableUAPSDForAC( (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
- pTdlsPeer->staId,
- WLANTL_AC_BK,
- 2,
- 2,
- 0,
- 0,
- WLANTL_BI_DIR );
-
- VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ));
- }
-
- if ( TRUE == pHddCtx->cfg_ini->fEnableTDLSBufferSta &&
- pHddCtx->cfg_ini->fTDLSUapsdMask & HDD_AC_BE )
- {
- status = WLANTL_EnableUAPSDForAC( (WLAN_HDD_GET_CTX(pAdapter))->pvosContext,
- pTdlsPeer->staId,
- WLANTL_AC_BE,
- 3,
- 3,
- 0,
- 0,
- WLANTL_BI_DIR );
-
- VOS_ASSERT( VOS_IS_STATUS_SUCCESS( status ));
- }
-
}
}
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c
index 8ebb447..cf441dc 100644
--- a/CORE/HDD/src/wlan_hdd_early_suspend.c
+++ b/CORE/HDD/src/wlan_hdd_early_suspend.c
@@ -424,7 +424,8 @@
//Open a SME session for future operation
halStatus = sme_OpenSession( pHddCtx->hHal, hdd_smeRoamCallback, pHddCtx,
- (tANI_U8 *)&pAdapter->macAddressCurrent, &pAdapter->sessionId );
+ (tANI_U8 *)&pAdapter->macAddressCurrent,
+ &pAdapter->sessionId);
if ( !HAL_STATUS_SUCCESS( halStatus ) )
{
hddLog(VOS_TRACE_LEVEL_FATAL,"sme_OpenSession() failed with status code %08d [x%08lx]",
@@ -1731,6 +1732,7 @@
err_re_init:
/* Allow the phone to go to sleep */
hdd_allow_suspend();
+ VOS_BUG(0);
return -EPERM;
success:
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 1a304c6..91c3e24 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -2929,11 +2929,14 @@
{
hdd_hostapd_state_t * phostapdBuf;
struct net_device *dev = pAdapter->dev;
+ hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
VOS_STATUS status;
ENTER();
// Allocate the Wireless Extensions state structure
phostapdBuf = WLAN_HDD_GET_HOSTAP_STATE_PTR( pAdapter );
+ sme_SetCurrDeviceMode(pHddCtx->hHal, pAdapter->device_mode);
+
// Zero the memory. This zeros the profile structure.
memset(phostapdBuf, 0,sizeof(hdd_hostapd_state_t));
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index ad3311a..94475f2 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -1971,6 +1971,39 @@
}
}
#endif
+#ifdef WLAN_FEATURE_PACKET_FILTERING
+ else if (strncmp(command, "ENABLE_PKTFILTER_IPV6", 21) == 0)
+ {
+ tANI_U8 filterType = 0;
+ tANI_U8 *value = command;
+
+ /* Move pointer to ahead of ENABLE_PKTFILTER_IPV6<delimiter> */
+ value = value + 22;
+
+ /* Convert the value from ascii to integer */
+ ret = kstrtou8(value, 10, &filterType);
+ if (ret < 0)
+ {
+ /* If the input value is greater than max value of datatype,
+ * then also kstrtou8 fails
+ */
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: kstrtou8 failed range ", __func__);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (filterType != 0 && filterType != 1)
+ {
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: Accepted Values are 0 and 1 ", __func__);
+ ret = -EINVAL;
+ goto exit;
+ }
+ wlan_hdd_setIPv6Filter(WLAN_HDD_GET_CTX(pAdapter), filterType,
+ pAdapter->sessionId);
+ }
+#endif
else {
hddLog( VOS_TRACE_LEVEL_WARN, "%s: Unsupported GUI command %s",
__func__, command);
@@ -3183,9 +3216,10 @@
int rc = 0;
INIT_COMPLETION(pAdapter->session_open_comp_var);
+ sme_SetCurrDeviceMode(pHddCtx->hHal, pAdapter->device_mode);
//Open a SME session for future operation
halStatus = sme_OpenSession( pHddCtx->hHal, hdd_smeRoamCallback, pAdapter,
- (tANI_U8 *)&pAdapter->macAddressCurrent, &pAdapter->sessionId );
+ (tANI_U8 *)&pAdapter->macAddressCurrent, &pAdapter->sessionId);
if ( !HAL_STATUS_SUCCESS( halStatus ) )
{
hddLog(VOS_TRACE_LEVEL_FATAL,
@@ -6063,6 +6097,7 @@
{
hdd_context_t *pHddCtx = NULL;
v_CONTEXT_t pVosContext = NULL;
+ int retry = 0;
pr_info("%s: unloading driver v%s\n", WLAN_MODULE_NAME, QWLAN_VERSIONSTR);
@@ -6084,11 +6119,18 @@
}
else
{
- /* module exit should never proceed if SSR is not completed */
- while(isWDresetInProgress()){
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL, "%s:SSR in Progress; block rmmod for 1 second!!!",__func__);
+ while(isWDresetInProgress()) {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
+ "%s:SSR in Progress; block rmmod for 1 second!!!", __func__);
msleep(1000);
- }
+
+ if (retry++ == HDD_MOD_EXIT_SSR_MAX_RETRIES) {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
+ "%s:SSR never completed, fatal error", __func__);
+ VOS_BUG(0);
+ }
+ }
+
pHddCtx->isLoadUnloadInProgress = TRUE;
vos_set_load_unload_in_progress(VOS_MODULE_ID_VOSS, TRUE);
diff --git a/CORE/HDD/src/wlan_hdd_wext.c b/CORE/HDD/src/wlan_hdd_wext.c
index a896eb1..9e194e4 100644
--- a/CORE/HDD/src/wlan_hdd_wext.c
+++ b/CORE/HDD/src/wlan_hdd_wext.c
@@ -5554,6 +5554,189 @@
return 0;
}
+int wlan_hdd_setIPv6Filter(hdd_context_t *pHddCtx, tANI_U8 filterType,
+ tANI_U8 sessionId)
+{
+ tSirRcvPktFilterCfgType packetFilterSetReq = {0};
+ tSirRcvFltPktClearParam packetFilterClrReq = {0};
+
+ if (NULL == pHddCtx)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR, FL(" NULL HDD Context Passed"));
+ return -EINVAL;
+ }
+
+ if (pHddCtx->isLogpInProgress)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
+ "%s:LOGP in Progress. Ignore!!!", __func__);
+ return -EBUSY;
+ }
+
+ if (pHddCtx->cfg_ini->disablePacketFilter)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Packet Filtering Disabled. Returning ",
+ __func__ );
+ return -EINVAL;
+ }
+
+ switch (filterType)
+ {
+ /* For setting IPV6 MC and UC Filter we need to configure
+ * 2 filters, one for MC and one for UC.
+ * The Filter ID shouldn't be swapped, which results in making
+ * UC Filter ineffective.
+ * We have Hardcode all the values
+ *
+ * Reason for a seperate UC filter is because, driver need to
+ * specify the FW that the specific filter is for unicast
+ * otherwise FW will not pass the unicast frames by default
+ * through the filter. This is required to avoid any performance
+ * hits when no unicast filter is set and only MC/BC are set.
+ * The way driver informs host is by using the MAC protocol
+ * layer, CMP flag set to MAX, CMP Data set to 1.
+ */
+
+ case HDD_FILTER_IPV6_MC_UC:
+ /* Setting IPV6 MC Filter below
+ */
+ packetFilterSetReq.filterType = HDD_RCV_FILTER_SET;
+ packetFilterSetReq.filterId = HDD_FILTER_ID_IPV6_MC;
+ packetFilterSetReq.numFieldParams = 2;
+ packetFilterSetReq.paramsData[0].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_MAC;
+ packetFilterSetReq.paramsData[0].cmpFlag =
+ HDD_FILTER_CMP_TYPE_NOT_EQUAL;
+ packetFilterSetReq.paramsData[0].dataOffset =
+ WLAN_HDD_80211_FRM_DA_OFFSET;
+ packetFilterSetReq.paramsData[0].dataLength = 1;
+ packetFilterSetReq.paramsData[0].compareData[0] =
+ HDD_IPV6_MC_CMP_DATA;
+
+ packetFilterSetReq.paramsData[1].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_ARP;
+ packetFilterSetReq.paramsData[1].cmpFlag =
+ HDD_FILTER_CMP_TYPE_NOT_EQUAL;
+ packetFilterSetReq.paramsData[1].dataOffset = ETH_ALEN;
+ packetFilterSetReq.paramsData[1].dataLength = 2;
+ packetFilterSetReq.paramsData[1].compareData[0] =
+ HDD_IPV6_CMP_DATA_0;
+ packetFilterSetReq.paramsData[1].compareData[1] =
+ HDD_IPV6_CMP_DATA_1;
+
+
+ if (eHAL_STATUS_SUCCESS != sme_ReceiveFilterSetFilter(pHddCtx->hHal,
+ &packetFilterSetReq, sessionId))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Failure to execute Set IPv6 Mulicast Filter",
+ __func__);
+ return -EINVAL;
+ }
+
+ memset( &packetFilterSetReq, 0, sizeof(tSirRcvPktFilterCfgType));
+
+ /*
+ * Setting IPV6 UC Filter below
+ */
+ packetFilterSetReq.filterType = HDD_RCV_FILTER_SET;
+ packetFilterSetReq.filterId = HDD_FILTER_ID_IPV6_UC;
+ packetFilterSetReq.numFieldParams = 2;
+ packetFilterSetReq.paramsData[0].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_MAC;
+ packetFilterSetReq.paramsData[0].cmpFlag =
+ HDD_FILTER_CMP_TYPE_MAX;
+ packetFilterSetReq.paramsData[0].dataOffset = 0;
+ packetFilterSetReq.paramsData[0].dataLength = 1;
+ packetFilterSetReq.paramsData[0].compareData[0] =
+ HDD_IPV6_UC_CMP_DATA;
+
+ packetFilterSetReq.paramsData[1].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_ARP;
+ packetFilterSetReq.paramsData[1].cmpFlag =
+ HDD_FILTER_CMP_TYPE_NOT_EQUAL;
+ packetFilterSetReq.paramsData[1].dataOffset = ETH_ALEN;
+ packetFilterSetReq.paramsData[1].dataLength = 2;
+ packetFilterSetReq.paramsData[1].compareData[0] =
+ HDD_IPV6_CMP_DATA_0;
+ packetFilterSetReq.paramsData[1].compareData[1] =
+ HDD_IPV6_CMP_DATA_1;
+
+ if (eHAL_STATUS_SUCCESS != sme_ReceiveFilterSetFilter(pHddCtx->hHal,
+ &packetFilterSetReq, sessionId))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Failure to execute Set IPv6 Unicast Filter",
+ __func__);
+ return -EINVAL;
+ }
+
+ break;
+
+ case HDD_FILTER_IPV6_MC:
+ /*
+ * IPV6 UC Filter might be already set,
+ * clear the UC Filter. As the Filter
+ * IDs are static, we can directly clear it.
+ */
+ packetFilterSetReq.filterType = HDD_RCV_FILTER_SET;
+ packetFilterClrReq.filterId = HDD_FILTER_ID_IPV6_UC;
+ if (eHAL_STATUS_SUCCESS != sme_ReceiveFilterClearFilter(pHddCtx->hHal,
+ &packetFilterClrReq, sessionId))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Failure to execute Clear IPv6 Unicast Filter",
+ __func__);
+ return -EINVAL;
+ }
+
+ /*
+ * Setting IPV6 MC Filter below
+ */
+ packetFilterSetReq.filterId = HDD_FILTER_ID_IPV6_MC;
+ packetFilterSetReq.numFieldParams = 2;
+ packetFilterSetReq.paramsData[0].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_MAC;
+ packetFilterSetReq.paramsData[0].cmpFlag =
+ HDD_FILTER_CMP_TYPE_NOT_EQUAL;
+ packetFilterSetReq.paramsData[0].dataOffset =
+ WLAN_HDD_80211_FRM_DA_OFFSET;
+ packetFilterSetReq.paramsData[0].dataLength = 1;
+ packetFilterSetReq.paramsData[0].compareData[0] =
+ HDD_IPV6_MC_CMP_DATA;
+
+ packetFilterSetReq.paramsData[1].protocolLayer =
+ HDD_FILTER_PROTO_TYPE_ARP;
+ packetFilterSetReq.paramsData[1].cmpFlag =
+ HDD_FILTER_CMP_TYPE_NOT_EQUAL;
+ packetFilterSetReq.paramsData[1].dataOffset = ETH_ALEN;
+ packetFilterSetReq.paramsData[1].dataLength = 2;
+ packetFilterSetReq.paramsData[1].compareData[0] =
+ HDD_IPV6_CMP_DATA_0;
+ packetFilterSetReq.paramsData[1].compareData[1] =
+ HDD_IPV6_CMP_DATA_1;
+
+
+ if (eHAL_STATUS_SUCCESS != sme_ReceiveFilterSetFilter(pHddCtx->hHal,
+ &packetFilterSetReq, sessionId))
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: Failure to execute Set IPv6 Multicast Filter",
+ __func__);
+ return -EINVAL;
+ }
+ break;
+
+ default :
+ hddLog(VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: Packet Filter Request: Invalid",
+ __func__);
+ return -EINVAL;
+ }
+ return 0;
+}
+
void wlan_hdd_set_mc_addr_list(hdd_adapter_t *pAdapter, v_U8_t set)
{
v_U8_t filterAction;
diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h
index 411b79d..a85a870 100644
--- a/CORE/MAC/inc/aniGlobal.h
+++ b/CORE/MAC/inc/aniGlobal.h
@@ -664,8 +664,10 @@
tLimAdmitPolicyInfo admitPolicyInfo;
vos_lock_t lkPeGlobalLock;
tANI_U8 disableLDPCWithTxbfAP;
+#ifdef FEATURE_WLAN_TDLS
tANI_U8 gLimTDLSBufStaEnabled;
tANI_U8 gLimTDLSUapsdMask;
+#endif
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 103956e..b9222d3 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -3319,6 +3319,7 @@
tANI_U16 mesgType;
tANI_U16 mesgLen;
tSirMacAddr selfMacAddr;
+ tVOS_CON_MODE currDeviceMode;
}tSirSmeAddStaSelfReq, *tpSirSmeAddStaSelfReq;
typedef struct sSirSmeDelStaSelfReq
diff --git a/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c b/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
index eedfab7..7926a1f 100644
--- a/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessDeauthFrame.c
@@ -1,55 +1,23 @@
/*
- * Copyright (c) 2012-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.
- */
-/*
- * Copyright (c) 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 limProcessDeauthFrame.cc contains the code
- * for processing Deauthentication Frame.
- * Author: Chandra Modumudi
- * Date: 03/24/02
- * History:-
- * Date Modified by Modification Information
- * --------------------------------------------------------------------
- *
- */
+ * Copyright (c) 2012-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.
+*/
#include "palTypes.h"
#include "aniGlobal.h"
@@ -156,7 +124,7 @@
if (limCheckDisassocDeauthAckPending(pMac, (tANI_U8*)pHdr->sa))
{
- PELOGW(limLog(pMac, LOGE,
+ PELOGW(limLog(pMac, LOGW,
FL("Ignore the Deauth received, while waiting for ack of disassoc/deauth"));)
limCleanUpDisassocDeauthReq(pMac,(tANI_U8*)pHdr->sa, 1);
return;
@@ -210,11 +178,11 @@
else
{
// Received Deauth frame in either IBSS
- // or un-known role. Log error and ignore it
- limLog(pMac, LOGE,
+ // or un-known role. Log and ignore it
+ limLog(pMac, LOG1,
FL("received Deauth frame with reasonCode %d in role %d from "),
reasonCode, psessionEntry->limSystemRole);
- limPrintMacAddr(pMac, pHdr->sa, LOGE);
+ limPrintMacAddr(pMac, pHdr->sa, LOG1);
return;
}
@@ -272,7 +240,7 @@
PELOGE(limLog(pMac, LOGE, FL("received DeAuth from an AP other than we're trying to join. Ignore. "));)
if (limSearchPreAuthList(pMac, pHdr->sa))
{
- PELOGE(limLog(pMac, LOGE, FL("Preauth entry exist. Deleting... "));)
+ PELOG1(limLog(pMac, LOG1, FL("Preauth entry exist. Deleting... "));)
limDeletePreAuthNode(pMac, pHdr->sa);
}
return;
diff --git a/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c b/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
index b35d7f3..9cdfcf2 100644
--- a/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessDisassocFrame.c
@@ -1,45 +1,25 @@
/*
- * Copyright (c) 2012-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.
- */
+ * Copyright (c) 2012-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.
+*/
/*
- * Copyright (c) 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.
- */
-
-/*
+ * Airgo Networks, Inc proprietary. All rights reserved.
* This file limProcessDisassocFrame.cc contains the code
* for processing Disassocation Frame.
* Author: Chandra Modumudi
@@ -164,7 +144,7 @@
if (limCheckDisassocDeauthAckPending(pMac, (tANI_U8*)pHdr->sa))
{
- PELOGW(limLog(pMac, LOGE,
+ PELOGW(limLog(pMac, LOGW,
FL("Ignore the DisAssoc received, while waiting for ack of disassoc/deauth"));)
limCleanUpDisassocDeauthReq(pMac,(tANI_U8*)pHdr->sa, 1);
return;
@@ -240,6 +220,7 @@
// Valid reasonCode in received Disassociation frame
break;
+ case eSIR_MAC_DEAUTH_LEAVING_BSS_REASON:
case eSIR_MAC_DISASSOC_LEAVING_BSS_REASON:
// Valid reasonCode in received Disassociation frame
// as long as we're not about to channel switch
@@ -267,18 +248,18 @@
else
{
// Received Disassociation frame in either IBSS
- // or un-known role. Log error and ignore it
- limLog(pMac, LOGE,
+ // or un-known role. Log and ignore it
+ limLog(pMac, LOG1,
FL("received Disassoc frame with invalid reasonCode %d in role %d in sme state %d from "),
reasonCode, psessionEntry->limSystemRole, psessionEntry->limSmeState);
- limPrintMacAddr(pMac, pHdr->sa, LOGE);
+ limPrintMacAddr(pMac, pHdr->sa, LOG1);
return;
}
// Disassociation from peer MAC entity
- PELOGE(limLog(pMac, LOGE,
+ PELOG1(limLog(pMac, LOG1,
FL("Received Disassoc frame from sta with assocId=%d with reasonCode=%d. Peer MAC is "MAC_ADDRESS_STR),
pStaDs->assocId, reasonCode, MAC_ADDR_ARRAY(pHdr->sa));)
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index 22a5661..e20df88 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -1,43 +1,23 @@
/*
- * Copyright (c) 2012-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.
- */
-/*
- * Copyright (c) 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.
- */
+ * Copyright (c) 2012-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.
+*/
/*
* Airgo Networks, Inc proprietary. All rights reserved.
* This file lim ProcessMessageQueue.cc contains the code
@@ -185,7 +165,7 @@
* handled by limHandleFramesInScanState before __limHandleBeacon call is invoked.
* Not scanning, no session:
* there should not be any beacon coming, if coming, should be dropped.
-* Not Scanning,
+* Not Scanning,
*/
static void
__limHandleBeacon(tpAniSirGlobal pMac, tpSirMsgQ pMsg, tpPESession psessionEntry)
@@ -298,7 +278,7 @@
{
if (psessionEntry == NULL)
limProcessBeaconFrameNoSession(pMac, pRxPacketInfo);
- else
+ else
limProcessBeaconFrame(pMac, pRxPacketInfo,psessionEntry);
}
else if ((fc.type == SIR_MAC_MGMT_FRAME) && (fc.subType == SIR_MAC_MGMT_PROBE_RSP))
@@ -319,9 +299,9 @@
else
{
*deferMsg = true;
- return;
+ return;
}
-
+
limPktFree(pMac, HAL_TXRX_FRM_802_11_MGMT, pRxPacketInfo, (void *) limMsg->bodyptr);
return;
@@ -337,13 +317,13 @@
\ -------------------------------------------------------------- */
static void limHandleUnknownA2IndexFrames(tpAniSirGlobal pMac, void *pRxPacketInfo,tpPESession psessionEntry)
{
- /* addr2 mismatch interrupt occurred this means previous
+ /* addr2 mismatch interrupt occurred this means previous
disassociation was not successful
In Volans pRxPacketInfo only contains pointer 48-bit address2 field */
/*Send disassociation message again*/
- //Dinesh need one more arguement.
+ //Dinesh need one more arguement.
//limSendDisassocMgmtFrame(pMac, eSIR_MAC_CLASS3_FRAME_FROM_NON_ASSOC_STA_REASON,(tANI_U8 *) pRxPacketInfo);
- //TODO: verify this
+ //TODO: verify this
//This could be a public action frame.
if( psessionEntry->limSystemRole == eLIM_P2P_DEVICE_ROLE )
limProcessActionFrameNoSession(pMac, (tANI_U8 *) pRxPacketInfo);
@@ -401,7 +381,7 @@
* limCheckMgmtRegisteredFrames()
*
*FUNCTION:
- * This function is called to process to check if received frame match with
+ * This function is called to process to check if received frame match with
* any of the registered frame from HDD. If yes pass this frame to SME.
*
*LOGIC:
@@ -445,16 +425,16 @@
if ( (type == SIR_MAC_MGMT_FRAME) && (fc.type == SIR_MAC_MGMT_FRAME)
&& (subType == SIR_MAC_MGMT_RESERVED15) )
{
- limLog( pMac, LOG3,
+ limLog( pMac, LOG3,
FL("rcvd frame match with SIR_MAC_MGMT_RESERVED15"));
match = VOS_TRUE;
break;
}
if (pLimMgmtRegistration->frameType == frameType)
- {
+ {
if (pLimMgmtRegistration->matchLen > 0)
- {
+ {
if (pLimMgmtRegistration->matchLen <= framelen)
{
if (palEqualMemory(pMac, pLimMgmtRegistration->matchData,
@@ -468,31 +448,31 @@
}
else
{
- /* found match! */
+ /* found match! */
match = VOS_TRUE;
break;
}
}
-
- vosStatus =
- vos_list_peek_next ( &pMac->lim.gLimMgmtFrameRegistratinQueue,
- (vos_list_node_t*) pLimMgmtRegistration,
+
+ vosStatus =
+ vos_list_peek_next ( &pMac->lim.gLimMgmtFrameRegistratinQueue,
+ (vos_list_node_t*) pLimMgmtRegistration,
(vos_list_node_t**) &pNext );
pLimMgmtRegistration = pNext;
pNext = NULL;
}
-
+
if (match)
{
- limLog( pMac, LOG1,
+ limLog( pMac, LOG1,
FL("rcvd frame match with registered frame params"));
/* Indicate this to SME */
- limSendSmeMgmtFrameInd( pMac, pHdr->fc.subType, (tANI_U8*)pHdr,
- WDA_GET_RX_PAYLOAD_LEN(pBd) + sizeof(tSirMacMgmtHdr),
+ limSendSmeMgmtFrameInd( pMac, pHdr->fc.subType, (tANI_U8*)pHdr,
+ WDA_GET_RX_PAYLOAD_LEN(pBd) + sizeof(tSirMacMgmtHdr),
pLimMgmtRegistration->sessionId,
WDA_GET_RX_CH(pBd), psessionEntry, 0);
-
+
if ( (type == SIR_MAC_MGMT_FRAME) && (fc.type == SIR_MAC_MGMT_FRAME)
&& (subType == SIR_MAC_MGMT_RESERVED15) )
{
@@ -527,7 +507,7 @@
* @return None
*/
-static void
+static void
limHandle80211Frames(tpAniSirGlobal pMac, tpSirMsgQ limMsg, tANI_U8 *pDeferMsg)
{
tANI_U8 *pRxPacketInfo = NULL;
@@ -548,7 +528,7 @@
limLog( pMac, LOG4, FL("ProtVersion %d, Type %d, Subtype %d rateIndex=%d"),
fc.protVer, fc.type, fc.subType, WDA_GET_RX_MAC_RATE_IDX(pRxPacketInfo));
-
+
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
if ( WDA_GET_ROAMCANDIDATEIND(pRxPacketInfo))
{
@@ -578,7 +558,7 @@
}
#endif //WLAN_FEATURE_ROAM_SCAN_OFFLOAD
#ifdef FEATURE_WLAN_CCX
- if (fc.type == SIR_MAC_DATA_FRAME && isFrmFt)
+ if (fc.type == SIR_MAC_DATA_FRAME && isFrmFt)
{
#if 0 // CCX TBD Need to PORT
tpSirMacDot3Hdr pDataFrmHdr;
@@ -612,7 +592,7 @@
if((psessionEntry = peFindSessionByBssid(pMac,pHdr->bssId,&sessionId))== NULL)
{
#ifdef WLAN_FEATURE_VOWIFI_11R
- if (fc.subType == SIR_MAC_MGMT_AUTH)
+ if (fc.subType == SIR_MAC_MGMT_AUTH)
{
#ifdef WLAN_FEATURE_VOWIFI_11R_DEBUG
limLog( pMac, LOG1, FL("ProtVersion %d, Type %d, Subtype %d rateIndex=%d"),
@@ -633,7 +613,7 @@
)
{
- if((psessionEntry = peFindSessionByPeerSta(pMac,pHdr->sa,&sessionId))== NULL)
+ if((psessionEntry = peFindSessionByPeerSta(pMac,pHdr->sa,&sessionId))== NULL)
{
limLog(pMac, LOG1, FL("session does not exist for given bssId"));
limPktFree(pMac, HAL_TXRX_FRM_802_11_MGMT, pRxPacketInfo, limMsg->bodyptr);
@@ -651,7 +631,7 @@
/* Check if frame is registered by HDD */
if(limCheckMgmtRegisteredFrames(pMac, pRxPacketInfo, psessionEntry))
- {
+ {
limLog( pMac, LOG1, FL("Received frame is passed to SME"));
limPktFree(pMac, HAL_TXRX_FRM_802_11_MGMT, pRxPacketInfo, limMsg->bodyptr);
return;
@@ -664,7 +644,7 @@
limLog(pMac, LOGE, FL("Unexpected frame with protVersion %d received"),
fc.protVer);
limPktFree(pMac, HAL_TXRX_FRM_802_11_MGMT, pRxPacketInfo, (void *) limMsg->bodyptr);
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numProtErr++;
#endif
return;
@@ -686,18 +666,18 @@
limLog( pMac, LOGW, FL( "gLimSystemRole is %d. Exiting..." ),psessionEntry->limSystemRole );
limPktFree(pMac, HAL_TXRX_FRM_802_11_MGMT, pRxPacketInfo, (void *) limMsg->bodyptr);
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numProtErr++;
#endif
return;
}
- #endif //HACK to continue scanning
+ #endif //HACK to continue scanning
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numMAC[fc.type][fc.subType]++;
#endif
-
+
switch (fc.type)
{
case SIR_MAC_MGMT_FRAME:
@@ -710,7 +690,7 @@
fc.type, fc.subType);
return;
}
- #endif //HACK to continue scanning
+ #endif //HACK to continue scanning
// Received Management frame
switch (fc.subType)
{
@@ -801,15 +781,15 @@
{
#ifdef FEATURE_WLAN_TDLS_INTERNAL
/*
- * if we reach here, following cases are possible.
+ * if we reach here, following cases are possible.
* Possible cases: a) if frame translation is disabled.
* b) Some frame with ADRR2 filter enabled may come
* here.
- */
+ */
tANI_U8 *dataOffset = WDA_GET_RX_MPDU_DATA(pRxPacketInfo);
tANI_U8 *rfc1042Hdr = (tANI_U8 *)(dataOffset + RFC1042_HDR_LENGTH) ;
tANI_U16 ethType = GET_BE16(rfc1042Hdr) ;
- VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
+ VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
("TDLS frame with 80211 Header")) ;
if(ETH_TYPE_89_0d == ethType)
{
@@ -818,7 +798,7 @@
{
limProcessTdlsFrame(pMac, (tANI_U32*)pRxPacketInfo) ;
}
- }
+ }
#endif
#ifdef FEATURE_WLAN_CCX
/* We accept data frame (IAPP frame) only if Session is
@@ -861,12 +841,12 @@
void
limProcessAbortScanInd(tpAniSirGlobal pMac)
{
-#ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM //FEATURE_WLAN_DIAG_SUPPORT
+#ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM //FEATURE_WLAN_DIAG_SUPPORT
limDiagEventReport(pMac, WLAN_PE_DIAG_SCAN_ABORT_IND_EVENT, NULL, 0, 0);
#endif //FEATURE_WLAN_DIAG_SUPPORT
-
+
/* Deactivate the gLimBackgroundScanTimer as part of the abort scan.
- * SME should send WNI_CFG_BACKGROUND_SCAN_PERIOD indication
+ * SME should send WNI_CFG_BACKGROUND_SCAN_PERIOD indication
* to start the background scan again
*/
PELOG2(limLog(pMac, LOG2, FL("Processing AbortScan Ind"));)
@@ -892,7 +872,7 @@
pMac->lim.abortScan = 0;
limDeactivateAndChangeTimer(pMac, eLIM_MIN_CHANNEL_TIMER);
limDeactivateAndChangeTimer(pMac, eLIM_MAX_CHANNEL_TIMER);
- //Set the resume channel to Any valid channel (invalid).
+ //Set the resume channel to Any valid channel (invalid).
//This will instruct HAL to set it to any previous valid channel.
peSetResumeChannel(pMac, 0, 0);
limSendHalFinishScanReq(pMac, eLIM_HAL_FINISH_SCAN_WAIT_STATE);
@@ -1034,7 +1014,7 @@
limMsg->bodyptr = NULL;
return;
}
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numTot++;
#endif
@@ -1101,7 +1081,7 @@
case WDA_SWITCH_CHANNEL_RSP:
limProcessSwitchChannelRsp(pMac, limMsg->bodyptr);
break;
-
+
#ifdef ANI_SIR_IBSS_PEER_CACHING
case WDA_IBSS_STA_ADD:
limIbssStaAdd(pMac, limMsg->bodyptr);
@@ -1109,7 +1089,7 @@
#endif
case SIR_BB_XPORT_MGMT_MSG:
// These messages are from Peer MAC entity.
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numBbt++;
#endif
@@ -1120,12 +1100,12 @@
tSirMsgQ limMsgNew;
#ifdef FEATURE_WLAN_TDLS_INTERNAL
tANI_U32 *pBD = NULL ;
-#endif
+#endif
- /* The original limMsg which we were deferring have the
+ /* The original limMsg which we were deferring have the
* bodyPointer point to 'BD' instead of 'Vos pkt'. If we don't make a copy
- * of limMsg, then vos_pkt_peek_data will overwrite the limMsg->bodyPointer.
- * and next time when we try to process the msg, we will try to use 'BD' as
+ * of limMsg, then vos_pkt_peek_data will overwrite the limMsg->bodyPointer.
+ * and next time when we try to process the msg, we will try to use 'BD' as
* 'Vos Pkt' which will cause a crash
*/
palCopyMemory(pMac, (tANI_U8*)&limMsgNew, (tANI_U8*)limMsg, sizeof(tSirMsgQ));
@@ -1141,7 +1121,7 @@
}
#ifdef FEATURE_WLAN_TDLS_INTERNAL
- /*
+ /*
* TDLS frames comes as translated frames as well as
* MAC 802.11 data frames..
*/
@@ -1175,7 +1155,7 @@
}
else
{
- /* PE is not deferring this 802.11 frame so we need to call vos_pkt_return.
+ /* PE is not deferring this 802.11 frame so we need to call vos_pkt_return.
* Asumption here is when Rx mgmt frame processing is done,
* voss packet could be freed here.
*/
@@ -1380,7 +1360,7 @@
FL("received TDLS Indication from the Firmware with Reason Code %d "),
pTdlsInd->reasonCode);
limSendSmeTDLSDelStaInd(pMac, pStaDs, psessionEntry,
- /*pTdlsInd->reasonCode*/eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE);
+ pTdlsInd->reasonCode);
}
palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
limMsg->bodyptr = NULL;
@@ -1389,27 +1369,27 @@
#endif
case SIR_HAL_P2P_NOA_ATTR_IND:
{
- tpPESession psessionEntry = &pMac->lim.gpSession[0];
+ tpPESession psessionEntry = &pMac->lim.gpSession[0];
tANI_U8 i;
-
+
limLog(pMac, LOGW, FL("Received message Noa_ATTR %x"), limMsg->type);
for(i=0; i < pMac->lim.maxBssId; i++)
{
psessionEntry = &pMac->lim.gpSession[i];
- if ( (psessionEntry != NULL) && (psessionEntry->valid) &&
+ if ( (psessionEntry != NULL) && (psessionEntry->valid) &&
(psessionEntry->pePersona == VOS_P2P_GO_MODE))
{ //Save P2P attributes for P2P Go persona
-
+
palCopyMemory(pMac->hHdd,&psessionEntry->p2pGoPsUpdate, limMsg->bodyptr,sizeof(tSirP2PNoaAttr));
-
-
+
+
limLog(pMac, LOG2, FL(" &psessionEntry->bssId%02x:%02x:%02x:%02x:%02x:%02x ctWin=%d oppPsFlag=%d"),
psessionEntry->bssId[0],
psessionEntry->bssId[1],
psessionEntry->bssId[2],
psessionEntry->bssId[3],
psessionEntry->bssId[4],
- psessionEntry->bssId[5],
+ psessionEntry->bssId[5],
psessionEntry->p2pGoPsUpdate.ctWin,
psessionEntry->p2pGoPsUpdate.oppPsFlag);
@@ -1419,26 +1399,26 @@
psessionEntry->p2pGoPsUpdate.uNoa1Interval,
psessionEntry->p2pGoPsUpdate.uNoa1StartTime);
-
+
break;
}
}
-
+
}
palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
limMsg->bodyptr = NULL;
-
+
break;
-
+
/* eWNI_SME_PRE_CHANNEL_SWITCH_FULL_POWER Message comes after the
- * device comes out of full power for the full power request sent
- * because of channel switch with switch count as 0, so call the same
- * function used in timeout case(i.e SIR_LIM_CHANNEL_SWITCH_TIMEOUT)
+ * device comes out of full power for the full power request sent
+ * because of channel switch with switch count as 0, so call the same
+ * function used in timeout case(i.e SIR_LIM_CHANNEL_SWITCH_TIMEOUT)
* for switching the channel*/
case eWNI_SME_PRE_CHANNEL_SWITCH_FULL_POWER:
if ( !tx_timer_running(&pMac->lim.limTimers.gLimChannelSwitchTimer) )
- {
+ {
limProcessChannelSwitchTimeout(pMac);
}
palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
@@ -1476,7 +1456,7 @@
palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
limMsg->bodyptr = NULL;
break;
-
+
case SIR_LIM_ADDTS_RSP_TIMEOUT:
@@ -1510,7 +1490,7 @@
case SIR_LIM_BEACON_GEN_IND: {
if( pMac->lim.gLimSystemRole != eLIM_AP_ROLE )
- schProcessPreBeaconInd(pMac, limMsg);
+ schProcessPreBeaconInd(pMac, limMsg);
}
break;
@@ -1549,7 +1529,7 @@
* normal processing
*/
- #if 0
+ #if 0
PELOG1(limLog(pMac, LOG1, FL("Heartbeat timeout, SME %d, MLME %d, #bcn %d"),
pMac->lim.gLimSmeState, pMac->lim.gLimMlmState,
pMac->lim.gLimRxedBeaconCntDuringHB);)
@@ -1611,7 +1591,7 @@
break;
case SIR_LIM_PROBE_HB_FAILURE_TIMEOUT:
- limHandleHeartBeatFailureTimeout(pMac);
+ limHandleHeartBeatFailureTimeout(pMac);
break;
case SIR_LIM_CHANNEL_SCAN_TIMEOUT:
@@ -1702,22 +1682,22 @@
case SIR_LIM_TDLS_DISCOVERY_RSP_WAIT:
{
//fetch the sessionEntry based on the sessionId
- tpPESession psessionEntry = peFindSessionBySessionId(pMac,
+ tpPESession psessionEntry = peFindSessionBySessionId(pMac,
pMac->lim.limTimers.gLimTdlsDisRspWaitTimer.sessionId) ;
- if(NULL == psessionEntry)
+ if(NULL == psessionEntry)
{
limLog(pMac, LOGP,FL("Session Does not exist for given sessionID %d"), pMac->lim.limTimers.gLimTdlsDisRspWaitTimer.sessionId);
return;
}
-
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
("Discovery Rsp timer expires ")) ;
-#if 0 // TDLS_hklee: D13 no need to open Addr2 unknown data packet
+#if 0 // TDLS_hklee: D13 no need to open Addr2 unknown data packet
/* restore RXP filters */
limSetLinkState(pMac, eSIR_LINK_FINISH_TDLS_DISCOVERY_STATE,
psessionEntry->bssId) ;
#endif
- limSendSmeTdlsDisRsp(pMac, eSIR_SUCCESS,
+ limSendSmeTdlsDisRsp(pMac, eSIR_SUCCESS,
eWNI_SME_TDLS_DISCOVERY_START_RSP) ;
break ;
}
@@ -1730,7 +1710,7 @@
{
tANI_U8 *peerMac = (tANI_U8 *)limMsg->bodyval ;
tLimTdlsLinkSetupPeer *setupPeer = NULL ;
-
+
VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
("TDLS setup rsp timer expires ")) ;
VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO,
@@ -1750,7 +1730,7 @@
limTdlsDelLinkPeer( pMac, peerMac) ;
}
- limSendSmeTdlsLinkStartRsp(pMac, eSIR_FAILURE, peerMac,
+ limSendSmeTdlsLinkStartRsp(pMac, eSIR_FAILURE, peerMac,
eWNI_SME_TDLS_LINK_START_RSP) ;
break ;
}
@@ -1795,13 +1775,13 @@
case WDA_ADD_STA_SELF_RSP:
limProcessAddStaSelfRsp(pMac, limMsg);
- break;
+ break;
case WDA_DEL_STA_SELF_RSP:
limProcessDelStaSelfRsp(pMac, limMsg);
break;
case WDA_DELETE_BSS_RSP:
- limHandleDeleteBssRsp(pMac,limMsg); //wrapper routine to handle delete bss response
+ limHandleDeleteBssRsp(pMac,limMsg); //wrapper routine to handle delete bss response
break;
case WDA_SET_BSSKEY_RSP:
@@ -1864,9 +1844,9 @@
/*a message from HAL indicating addr2 mismatch interrupt occurred
limMsg->bodyptr contains only pointer to 48-bit addr2 field*/
//Dinesh fix this. the third parameter should be sessionentry.
- //limHandleUnknownA2IndexFrames(pMac, (void *)limMsg->bodyptr);
+ //limHandleUnknownA2IndexFrames(pMac, (void *)limMsg->bodyptr);
- /*Free message body pointer*/
+ /*Free message body pointer*/
vos_mem_free((v_VOID_t *)(limMsg->bodyptr));
break;
}
@@ -1883,9 +1863,9 @@
pSession = linkStateParams->session;
if(linkStateParams->ft)
{
- limSendReassocReqWithFTIEsMgmtFrame(pMac,
+ limSendReassocReqWithFTIEsMgmtFrame(pMac,
pSession->pLimMlmReassocReq,
- pSession);
+ pSession);
}
#endif
if( linkStateParams->callback )
@@ -1928,8 +1908,35 @@
#ifdef FEATURE_WLAN_TDLS
case WDA_SET_TDLS_LINK_ESTABLISH_REQ_RSP:
{
- /*TODO Sunil , See how do you enhance this , Reason Code ???*/
- limSendSmeTdlsLinkEstablishReqRsp(pMac, 0 , NULL, NULL, eSIR_SUCCESS ) ;
+ tpPESession psessionEntry;
+ tANI_U8 sessionId;
+ tTdlsLinkEstablishParams *pTdlsLinkEstablishParams;
+ pTdlsLinkEstablishParams = (tTdlsLinkEstablishParams*) limMsg->bodyptr;
+
+ if((psessionEntry = peFindSessionByStaId(pMac,
+ pTdlsLinkEstablishParams->staIdx,
+ &sessionId))== NULL)
+ {
+ limLog(pMac, LOGE, FL("session %u does not exist.\n"), sessionId);
+ /* Still send the eWNI_SME_TDLS_LINK_ESTABLISH_RSP message to SME
+ with session id as zero and status as FAILURE so, that message
+ queued in SME queue can be freed to prevent the SME cmd buffer leak */
+ limSendSmeTdlsLinkEstablishReqRsp(pMac,
+ 0,
+ NULL,
+ NULL,
+ eSIR_FAILURE);
+ }
+ else
+ {
+ limSendSmeTdlsLinkEstablishReqRsp(pMac,
+ psessionEntry->smeSessionId,
+ NULL,
+ NULL,
+ pTdlsLinkEstablishParams->status) ;
+ }
+ vos_mem_free((v_VOID_t *)(limMsg->bodyptr));
+ limMsg->bodyptr = NULL;
break;
}
#endif
@@ -1997,7 +2004,7 @@
{
palCopyMemory( pMac->hHdd, (tANI_U8*) &limMsg,
(tANI_U8*) readMsg, sizeof(tSirMsgQ));
- size--;
+ size--;
limProcessMessages(pMac, &limMsg);
if((limIsSystemInScanState(pMac)) || (true != GET_LIM_PROCESS_DEFD_MESGS(pMac)) ||
@@ -2020,7 +2027,7 @@
{
tANI_BOOLEAN fDeferMsg = eANI_BOOLEAN_TRUE;
- /* Added For BT-AMP Support */
+ /* Added For BT-AMP Support */
if ((pMac->lim.gLimSystemRole == eLIM_AP_ROLE) ||(pMac->lim.gLimSystemRole == eLIM_BT_AMP_AP_ROLE )
||(pMac->lim.gLimSystemRole == eLIM_BT_AMP_STA_ROLE)
||(pMac->lim.gLimSystemRole == eLIM_UNKNOWN_ROLE))
@@ -2055,7 +2062,7 @@
// or if radar is detected, Defer processsing this message
if (limDeferMsg(pMac, pLimMsg) != TX_SUCCESS)
{
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numSme++;
#endif
PELOGE(limLog(pMac, LOGE, FL("Unable to Defer message(0x%X) limSmeState %d (prev sme state %d) sysRole %d mlm state %d (prev mlm state %d)"),
@@ -2077,7 +2084,7 @@
// distinquish and send response to host
pMac->lim.gLimRspReqd = eANI_BOOLEAN_TRUE;
}
-#ifdef WLAN_DEBUG
+#ifdef WLAN_DEBUG
pMac->lim.numSme++;
#endif
if(limProcessSmeReqMessages(pMac, pLimMsg))
@@ -2167,7 +2174,7 @@
*/
if (psessionEntry != NULL)
{
- psessionEntry->htCapability = IS_DOT11_MODE_HT(psessionEntry->dot11mode);
+ psessionEntry->htCapability = IS_DOT11_MODE_HT(psessionEntry->dot11mode);
psessionEntry->beaconParams.fLsigTXOPProtectionFullSupport = (tANI_U8)macHTInfoField3.lsigTXOPProtectionFullSupport;
}
}
@@ -2182,8 +2189,8 @@
if(pMac->lim.gpSession[i].valid)
{
PELOG1(limLog(pMac, LOG1, FL("Session[%d] sysRole(%d) limSmeState %d (prev sme state %d) mlm state %d (prev mlm state %d)"),
- i, pMac->lim.gpSession[i].limSystemRole, pMac->lim.gpSession[i].limSmeState,
- pMac->lim.gpSession[i].limPrevSmeState, pMac->lim.gpSession[i].limMlmState,
+ i, pMac->lim.gpSession[i].limSystemRole, pMac->lim.gpSession[i].limSmeState,
+ pMac->lim.gpSession[i].limPrevSmeState, pMac->lim.gpSession[i].limMlmState,
pMac->lim.gpSession[i].limPrevMlmState);)
}
}
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index 549aab2..f015dd2 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -2927,12 +2927,12 @@
sizeof(tSirMacAddr))))
)
{
- PELOGE(limLog(pMac, LOGE,FL("Disassoc/Deauth ack pending"));)
+ PELOG1(limLog(pMac, LOG1, FL("Disassoc/Deauth ack pending"));)
return eANI_BOOLEAN_TRUE;
}
else
{
- PELOGE(limLog(pMac, LOGE,FL("Disassoc/Deauth Ack not pending"));)
+ PELOG1(limLog(pMac, LOG1, FL("Disassoc/Deauth Ack not pending"));)
return eANI_BOOLEAN_FALSE;
}
}
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index bca0be3..b1b4d25 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -4535,7 +4535,7 @@
}
palCopyMemory( pMac->hHdd, pAddStaSelfParams->selfMacAddr, pSmeReq->selfMacAddr, sizeof(tSirMacAddr) );
-
+ pAddStaSelfParams->currDeviceMode = pSmeReq->currDeviceMode;
msg.type = SIR_HAL_ADD_STA_SELF_REQ;
msg.reserved = 0;
msg.bodyptr = pAddStaSelfParams;
diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c
index eed7aa1..ed94903 100644
--- a/CORE/MAC/src/pe/lim/limProcessTdls.c
+++ b/CORE/MAC/src/pe/lim/limProcessTdls.c
@@ -5569,13 +5569,13 @@
return eSIR_MEM_ALLOC_FAILED;
}
- palZeroMemory( pMac->hHdd, (tANI_U8 *)pMsgTdlsLinkEstablishReq, sizeof(tpTdlsLinkEstablishParams));
+ palZeroMemory( pMac->hHdd, (tANI_U8 *)pMsgTdlsLinkEstablishReq, sizeof(tTdlsLinkEstablishParams));
- pMsgTdlsLinkEstablishReq->sta_idx = pStaDs->staIndex;
- pMsgTdlsLinkEstablishReq->is_responder = pTdlsLinkEstablishReq->isResponder;
- pMsgTdlsLinkEstablishReq->uapsd_queues = pTdlsLinkEstablishReq->uapsdQueues;
- pMsgTdlsLinkEstablishReq->max_sp = pTdlsLinkEstablishReq->maxSp;
- pMsgTdlsLinkEstablishReq->is_bufsta = pTdlsLinkEstablishReq->isBufSta;
+ pMsgTdlsLinkEstablishReq->staIdx = pStaDs->staIndex;
+ pMsgTdlsLinkEstablishReq->isResponder = pTdlsLinkEstablishReq->isResponder;
+ pMsgTdlsLinkEstablishReq->uapsdQueues = pTdlsLinkEstablishReq->uapsdQueues;
+ pMsgTdlsLinkEstablishReq->maxSp = pTdlsLinkEstablishReq->maxSp;
+ pMsgTdlsLinkEstablishReq->isBufsta = pTdlsLinkEstablishReq->isBufSta;
msg.type = WDA_SET_TDLS_LINK_ESTABLISH_REQ;
msg.reserved = 0;
msg.bodyptr = pMsgTdlsLinkEstablishReq;
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 9a5dfea..de7ee50 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -462,10 +462,12 @@
}tWmStatusChangeCmd;
+
typedef struct tagAddStaForSessionCmd
{
//Session self mac addr
tSirMacAddr selfMacAddr;
+ tVOS_CON_MODE currDeviceMode;
}tAddStaForSessionCmd;
typedef struct tagDelStaForSessionCmd
diff --git a/CORE/SME/inc/smeInternal.h b/CORE/SME/inc/smeInternal.h
index 24c7f6e..e646d01 100644
--- a/CORE/SME/inc/smeInternal.h
+++ b/CORE/SME/inc/smeInternal.h
@@ -156,6 +156,7 @@
tDblLinkList smeCmdFreeList; //preallocated roam cmd list
void (*pTxPerHitCallback) (void *pCallbackContext); /* callback for Tx PER hit to HDD */
void *pTxPerHitCbContext;
+ tVOS_CON_MODE currDeviceMode;
} tSmeStruct, *tpSmeStruct;
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 3834b4f..f4e4e67 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -223,9 +223,18 @@
\sa
--------------------------------------------------------------------------*/
-eHalStatus sme_OpenSession(tHalHandle hHal, csrRoamCompleteCallback callback, void *pContext,
- tANI_U8 *pSelfMacAddr, tANI_U8 *pbSessionId);
+eHalStatus sme_OpenSession(tHalHandle hHal, csrRoamCompleteCallback callback,
+ void *pContext, tANI_U8 *pSelfMacAddr,
+ tANI_U8 *pbSessionId);
+/*--------------------------------------------------------------------------
+
+ \brief sme_SetCurrDeviceMode() - Sets the current operating device mode.
+ \param hHal - The handle returned by macOpen.
+ \param currDeviceMode - Current operating device mode.
+ --------------------------------------------------------------------------*/
+
+void sme_SetCurrDeviceMode (tHalHandle hHal, tVOS_CON_MODE currDeviceMode);
/*--------------------------------------------------------------------------
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 5edde86..5ab6bc3 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -13297,22 +13297,26 @@
} while(0);
return status;
}
-eHalStatus csrSendMBAddSelfStaReqMsg( tpAniSirGlobal pMac, tSirMacAddr macAddr )
+eHalStatus csrSendMBAddSelfStaReqMsg(tpAniSirGlobal pMac,
+ tAddStaForSessionCmd *pAddStaReq)
{
tSirSmeAddStaSelfReq *pMsg;
tANI_U16 msgLen;
eHalStatus status = eHAL_STATUS_FAILURE;
do {
- msgLen = sizeof( tANI_U16 ) + sizeof( tANI_U16 ) + sizeof( tSirMacAddr ) /*+
- sizeof( tSirBssType )*/;
+ msgLen = sizeof(tSirSmeAddStaSelfReq);
status = palAllocateMemory(pMac->hHdd, (void **)&pMsg, msgLen);
if ( !HAL_STATUS_SUCCESS(status) ) break;
palZeroMemory(pMac->hHdd, pMsg, msgLen);
pMsg->mesgType = pal_cpu_to_be16((tANI_U16)eWNI_SME_ADD_STA_SELF_REQ);
pMsg->mesgLen = pal_cpu_to_be16(msgLen);
// self station address
- palCopyMemory( pMac->hHdd, (tANI_U8 *)pMsg->selfMacAddr, (tANI_U8 *)macAddr, sizeof(tSirMacAddr) );
- smsLog( pMac, LOG1, FL("selfMac=%02x, %02x, %02x, %02x, %02x, %02x"),
+ palCopyMemory(pMac->hHdd, (tANI_U8 *)pMsg->selfMacAddr,
+ (tANI_U8 *)&pAddStaReq->selfMacAddr, sizeof(tSirMacAddr));
+
+ pMsg->currDeviceMode = pAddStaReq->currDeviceMode;
+
+ smsLog( pMac, LOG1, FL("selfMac=%02x, %02x, %02x, %02x, %02x, %02x"),
pMsg->selfMacAddr[0],
pMsg->selfMacAddr[1],
pMsg->selfMacAddr[2],
@@ -13323,7 +13327,9 @@
} while( 0 );
return( status );
}
-eHalStatus csrIssueAddStaForSessionReq(tpAniSirGlobal pMac, tANI_U32 sessionId, tSirMacAddr sessionMacAddr)
+eHalStatus csrIssueAddStaForSessionReq(tpAniSirGlobal pMac,
+ tANI_U32 sessionId,
+ tSirMacAddr sessionMacAddr)
{
eHalStatus status = eHAL_STATUS_SUCCESS;
tSmeCmd *pCommand;
@@ -13337,6 +13343,7 @@
pCommand->command = eSmeCommandAddStaSession;
pCommand->sessionId = (tANI_U8)sessionId;
palCopyMemory( pMac->hHdd, pCommand->u.addStaSessionCmd.selfMacAddr, sessionMacAddr, sizeof( tSirMacAddr ) );
+ pCommand->u.addStaSessionCmd.currDeviceMode = pMac->sme.currDeviceMode;
status = csrQueueSmeCommand(pMac, pCommand, TRUE);
if( !HAL_STATUS_SUCCESS( status ) )
{
@@ -13348,11 +13355,12 @@
}
eHalStatus csrProcessAddStaSessionCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand )
{
- return csrSendMBAddSelfStaReqMsg( pMac,
- pCommand->u.addStaSessionCmd.selfMacAddr );
+ return csrSendMBAddSelfStaReqMsg(pMac, &pCommand->u.addStaSessionCmd);
}
-eHalStatus csrRoamOpenSession( tpAniSirGlobal pMac, csrRoamCompleteCallback callback, void *pContext,
- tANI_U8 *pSelfMacAddr, tANI_U8 *pbSessionId )
+eHalStatus csrRoamOpenSession(tpAniSirGlobal pMac,
+ csrRoamCompleteCallback callback,
+ void *pContext, tANI_U8 *pSelfMacAddr,
+ tANI_U8 *pbSessionId)
{
eHalStatus status = eHAL_STATUS_SUCCESS;
tANI_U32 i;
@@ -13395,7 +13403,7 @@
smsLog(pMac, LOGE, FL("cannot allocate memory for IbssJoining timer"));
break;
}
- status = csrIssueAddStaForSessionReq ( pMac, i, pSelfMacAddr );
+ status = csrIssueAddStaForSessionReq (pMac, i, pSelfMacAddr);
break;
}
}
diff --git a/CORE/SME/src/csr/csrInsideApi.h b/CORE/SME/src/csr/csrInsideApi.h
index ae49b10..139513d 100644
--- a/CORE/SME/src/csr/csrInsideApi.h
+++ b/CORE/SME/src/csr/csrInsideApi.h
@@ -410,8 +410,10 @@
//pIes cannot be NULL
tANI_BOOLEAN csrMatchCountryCode( tpAniSirGlobal pMac, tANI_U8 *pCountry, tDot11fBeaconIEs *pIes );
eHalStatus csrRoamSetKey( tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamSetKey *pSetKey, tANI_U32 roamId );
-eHalStatus csrRoamOpenSession( tpAniSirGlobal pMac, csrRoamCompleteCallback callback, void *pContext,
- tANI_U8 *pSelfMacAddr, tANI_U8 *pbSessionId );
+eHalStatus csrRoamOpenSession(tpAniSirGlobal pMac,
+ csrRoamCompleteCallback callback,
+ void *pContext, tANI_U8 *pSelfMacAddr,
+ tANI_U8 *pbSessionId);
//fSync: TRUE means cleanupneeds to handle synchronously.
eHalStatus csrRoamCloseSession( tpAniSirGlobal pMac, tANI_U32 sessionId,
tANI_BOOLEAN fSync,
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index fcaa918..cb5025f 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -899,6 +899,7 @@
do {
pMac->sme.state = SME_STATE_STOP;
+ pMac->sme.currDeviceMode = VOS_STA_MODE;
if( !VOS_IS_STATUS_SUCCESS( vos_lock_init( &pMac->sme.lkSmeGlobalLock ) ) )
{
smsLog( pMac, LOGE, "sme_Open failed init lock" );
@@ -5115,8 +5116,9 @@
\sa
--------------------------------------------------------------------------*/
-eHalStatus sme_OpenSession(tHalHandle hHal, csrRoamCompleteCallback callback, void *pContext,
- tANI_U8 *pSelfMacAddr, tANI_U8 *pbSessionId)
+eHalStatus sme_OpenSession(tHalHandle hHal, csrRoamCompleteCallback callback,
+ void *pContext, tANI_U8 *pSelfMacAddr,
+ tANI_U8 *pbSessionId)
{
eHalStatus status;
tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
@@ -5130,7 +5132,8 @@
status = sme_AcquireGlobalLock( &pMac->sme );
if ( HAL_STATUS_SUCCESS( status ) )
{
- status = csrRoamOpenSession( pMac, callback, pContext, pSelfMacAddr, pbSessionId );
+ status = csrRoamOpenSession(pMac, callback, pContext,
+ pSelfMacAddr, pbSessionId);
sme_ReleaseGlobalLock( &pMac->sme );
}
@@ -8541,6 +8544,20 @@
return VOS_STATUS_SUCCESS;
}
+/*--------------------------------------------------------------------------
+
+ \brief sme_SetCurrDeviceMode() - Sets the current operating device mode.
+ \param hHal - The handle returned by macOpen.
+ \param currDeviceMode - Current operating device mode.
+ --------------------------------------------------------------------------*/
+
+void sme_SetCurrDeviceMode (tHalHandle hHal, tVOS_CON_MODE currDeviceMode)
+{
+ tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+ pMac->sme.currDeviceMode = currDeviceMode;
+ return;
+}
+
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/*--------------------------------------------------------------------------
\brief sme_HandoffRequest() - a wrapper function to Request a handoff
diff --git a/CORE/SYS/legacy/src/utils/src/logDump.c b/CORE/SYS/legacy/src/utils/src/logDump.c
index d93d794..0936251 100644
--- a/CORE/SYS/legacy/src/utils/src/logDump.c
+++ b/CORE/SYS/legacy/src/utils/src/logDump.c
@@ -1,47 +1,27 @@
/*
- * Copyright (c) 2012-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.
- */
-/*
- * Copyright (c) 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.
- */
+ * Copyright (c) 2012-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.
+*/
/*============================================================================
-Copyright (c) 2007 QUALCOMM Incorporated.
+Copyright (c) 2007 Qualcomm Technologies, Inc.
All Rights Reserved.
-Qualcomm Confidential and Proprietary
+Qualcomm Technologies Confidential and Proprietary
logDump.c
*/
@@ -102,7 +82,7 @@
#include "wlan_qct_wda.h"
#define HAL_LOG_DUMP_CMD_START 0
-#define HAL_LOG_DUMP_CMD_END 299
+#define HAL_LOG_DUMP_CMD_END 350
static int debug;
diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index 7854d0f..a2fa4c0 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -6916,7 +6916,18 @@
tlMetaInfo.ucDisableFrmXtl = 1;
}
}
+#ifdef FEATURE_WLAN_TDLS
+ /*In case of TDLS, if the packet is destined to TDLS STA ucSTAId may
+ change. so update the pStaClient accordingly */
+ pStaClient = pTLCb->atlSTAClients[ucSTAId];
+ if ( NULL == pStaClient )
+ {
+ TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
+ "pStaClient is NULL %s", __func__));
+ return VOS_STATUS_E_FAILURE;
+ }
+#endif
/*-------------------------------------------------------------------------
Call HAL to fill BD header
-------------------------------------------------------------------------*/
@@ -10518,12 +10529,12 @@
------------------------------------------------------------------------*/
pTLCb = VOS_GET_TL_CB(pvosGCtx);
if (( NULL == pTLCb ) || WLANTL_STA_ID_INVALID( ucSTAId )
- || WLANTL_AC_INVALID(ucAC) || ( 0 == uServiceInt ) )
+ || WLANTL_AC_INVALID(ucAC))
{
TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
"WLAN TL:Invalid input params on WLANTL_EnableUAPSDForAC"
- " TL: %p STA: %d AC: %d SI: %d",
- pTLCb, ucSTAId, ucAC, uServiceInt ));
+ " TL: %p STA: %d AC: %d",
+ pTLCb, ucSTAId, ucAC));
return VOS_STATUS_E_FAULT;
}
diff --git a/CORE/VOSS/inc/vos_types.h b/CORE/VOSS/inc/vos_types.h
index 1758d55..176ad6a 100644
--- a/CORE/VOSS/inc/vos_types.h
+++ b/CORE/VOSS/inc/vos_types.h
@@ -1,73 +1,36 @@
/*
- * Copyright (c) 2012-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.
- */
-/*
- * Copyright (c) 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.
- */
-
+ * Copyright (c) 2012-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.
+*/
#if !defined( __VOS_TYPES_H )
#define __VOS_TYPES_H
-/*
-* Copyright (c) 2013 Qualcomm Atheros, Inc.
-* All Rights Reserved.
-* Qualcomm Atheros Confidential and Proprietary.
-*/
-
/**=========================================================================
\file vos_Types.h
\brief virtual Operating System Servies (vOS)
-<<<<<<< HEAD:CORE/VOSS/inc/vos_types.h
-
- Basic type definitions
-
- Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
-
- Qualcomm Confidential and Proprietary.
-
-=======
Basic type definitions
- Copyright 2008 (c) Qualcomm, Incorporated.
+ Copyright 2008 (c) Qualcomm Technologies, Inc.
All Rights Reserved.
- Qualcomm Confidential and Proprietary.
->>>>>>> b682f18... wlan: qnx awareness to corestack:prima/CORE/VOSS/inc/vos_types.h
+ Qualcomm Technologies Confidential and Proprietary.
========================================================================*/
/* $Header$ */
@@ -169,8 +132,8 @@
VOS_MONITOR_MODE,
VOS_FTM_MODE = 5,
VOS_IBSS_MODE,
+ VOS_P2P_DEVICE,
VOS_MAX_NO_OF_MODE
-
} tVOS_CON_MODE;
//This is a bit pattern to be set for each mode
diff --git a/CORE/WDA/inc/legacy/halMsgApi.h b/CORE/WDA/inc/legacy/halMsgApi.h
index 32a1755..28c938c 100644
--- a/CORE/WDA/inc/legacy/halMsgApi.h
+++ b/CORE/WDA/inc/legacy/halMsgApi.h
@@ -1296,7 +1296,7 @@
typedef struct sAddStaSelfParams
{
tSirMacAddr selfMacAddr;
-
+ tVOS_CON_MODE currDeviceMode;
tANI_U32 status;
}tAddStaSelfParams, *tpAddStaSelfParams;
@@ -1320,11 +1320,12 @@
typedef struct sTdlsLinkEstablishParams
{
- tANI_U16 sta_idx;
- tANI_U8 is_responder;
- tANI_U8 uapsd_queues;
- tANI_U8 max_sp;
- tANI_U8 is_bufsta;
+ tANI_U16 staIdx;
+ tANI_U8 isResponder;
+ tANI_U8 uapsdQueues;
+ tANI_U8 maxSp;
+ tANI_U8 isBufsta;
+ tANI_U32 status;
}tTdlsLinkEstablishParams, *tpTdlsLinkEstablishParams;
static inline void halGetTxTSFtimer(tpAniSirGlobal pMac,
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 4e752d0..2c247d4 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -3486,6 +3486,7 @@
}
wdiAddStaSelfReq->wdiReqStatusCB = NULL;
vos_mem_copy( wdiAddStaSelfReq->wdiAddSTASelfInfo.selfMacAddr, pAddStaSelfReq->selfMacAddr, 6);
+ wdiAddStaSelfReq->wdiAddSTASelfInfo.currDeviceMode = pAddStaSelfReq->currDeviceMode;
/* Store Init Req pointer, as this will be used for response */
/* store Params pass it to WDI */
pWdaParams->pWdaContext = pWDA;
@@ -6400,10 +6401,12 @@
* FUNCTION: WDA_SetP2PGONOAReqParamsCallback
* Free the memory. No need to send any response to PE in this case
*/
-void WDA_SetTDLSLinkEstablishReqParamsCallback(WDI_Status status, void* pUserData)
+void WDA_SetTDLSLinkEstablishReqParamsCallback(WDI_SetTdlsLinkEstablishReqResp *wdiSetTdlsLinkEstablishReqRsp,
+ void* pUserData)
{
tWDA_ReqParams *pWdaParams = (tWDA_ReqParams *)pUserData;
tWDA_CbContext *pWDA = NULL;
+ tTdlsLinkEstablishParams *pTdlsLinkEstablishParams;
VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_INFO,
@@ -6424,12 +6427,24 @@
VOS_ASSERT(0) ;
return ;
}
- /* send response to UMAC*/
- WDA_SendMsg(pWDA, WDA_SET_TDLS_LINK_ESTABLISH_REQ_RSP, NULL , 0) ;
-
+ pTdlsLinkEstablishParams = (tTdlsLinkEstablishParams *)pWdaParams->wdaMsgParam ;
+ if( NULL == pTdlsLinkEstablishParams )
+ {
+ VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+ "%s: pTdlsLinkEstablishParams "
+ "received NULL " ,__func__);
+ VOS_ASSERT(0);
+ vos_mem_free(pWdaParams->wdaWdiApiMsgParam);
+ vos_mem_free(pWdaParams);
+ return ;
+ }
+ pTdlsLinkEstablishParams->status = CONVERT_WDI2SIR_STATUS(
+ wdiSetTdlsLinkEstablishReqRsp->wdiStatus);
vos_mem_free(pWdaParams->wdaWdiApiMsgParam) ;
- vos_mem_free(pWdaParams->wdaMsgParam) ;
vos_mem_free(pWdaParams);
+ /* send response to UMAC*/
+ WDA_SendMsg(pWDA, WDA_SET_TDLS_LINK_ESTABLISH_REQ_RSP, pTdlsLinkEstablishParams, 0) ;
+
return ;
}
@@ -6461,15 +6476,15 @@
return VOS_STATUS_E_NOMEM;
}
wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uStaIdx =
- pTdlsLinkEstablishParams->sta_idx;
+ pTdlsLinkEstablishParams->staIdx;
wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uIsResponder =
- pTdlsLinkEstablishParams->is_responder;
+ pTdlsLinkEstablishParams->isResponder;
wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uUapsdQueues =
- pTdlsLinkEstablishParams->uapsd_queues;
+ pTdlsLinkEstablishParams->uapsdQueues;
wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uMaxSp =
- pTdlsLinkEstablishParams->max_sp;
+ pTdlsLinkEstablishParams->maxSp;
wdiSetTDLSLinkEstablishReqParam->wdiTDLSLinkEstablishInfo.uIsBufSta =
- pTdlsLinkEstablishParams->is_bufsta;
+ pTdlsLinkEstablishParams->isBufsta;
wdiSetTDLSLinkEstablishReqParam->wdiReqStatusCB = NULL ;
/* Store msg pointer from PE, as this will be used for response */
diff --git a/CORE/WDI/CP/inc/wlan_qct_wdi.h b/CORE/WDI/CP/inc/wlan_qct_wdi.h
index edaed13..33ef3e8 100644
--- a/CORE/WDI/CP/inc/wlan_qct_wdi.h
+++ b/CORE/WDI/CP/inc/wlan_qct_wdi.h
@@ -3095,6 +3095,14 @@
}WDI_SetTDLSLinkEstablishReqParamsType;
+typedef struct
+{
+ /*Result of the operation*/
+ WDI_Status wdiStatus;
+
+ /*STA Idx*/
+ wpt_uint16 uStaIdx;
+}WDI_SetTdlsLinkEstablishReqResp;
/*---------------------------------------------------------------------------
WDI_SetAddSTASelfParamsType
@@ -3104,6 +3112,9 @@
/*Self Station MAC address*/
wpt_macAddr selfMacAddr;
+ /*Self STA device mode*/
+ wpt_uint32 currDeviceMode;
+
/*Status of the operation*/
wpt_uint32 uStatus;
}WDI_AddSTASelfInfoType;
@@ -5776,7 +5787,8 @@
RETURN VALUE
The result code associated with performing the operation
---------------------------------------------------------------------------*/
-typedef void (*WDI_SetTDLSLinkEstablishReqParamsRspCb)(WDI_Status wdiStatus,
+typedef void (*WDI_SetTDLSLinkEstablishReqParamsRspCb)(WDI_SetTdlsLinkEstablishReqResp *
+ wdiSetTdlsLinkEstablishReqRsp,
void* pUserData);
/*---------------------------------------------------------------------------
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 3ba1e15..833f975 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -10152,7 +10152,7 @@
wpt_uint8* pSendBuffer = NULL;
wpt_uint16 usDataOffset = 0;
wpt_uint16 usSendSize = 0;
- tAddStaSelfParams halAddSTASelfParams;
+ tAddStaSelfParams_V1 halAddSTASelfParams;
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/*-------------------------------------------------------------------------
@@ -10177,9 +10177,9 @@
-----------------------------------------------------------------------*/
if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
WDI_ADD_STA_SELF_REQ,
- sizeof(tAddStaSelfParams),
+ sizeof(tAddStaSelfParams_V1),
&pSendBuffer, &usDataOffset, &usSendSize))||
- ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
+ ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
{
WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
"Unable to get send buffer in ADD STA SELF REQ %x %x %x",
@@ -10193,10 +10193,21 @@
sizeof(pWDICtx->wdiCacheAddSTASelfReq));
wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
- pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
-
+ pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
+ halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
+ if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
+ {
+ halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
+ }
+ else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
+ VOS_P2P_CLIENT_MODE) ||
+ (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
+ VOS_P2P_DEVICE))
+ {
+ halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
+ }
wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
- sizeof(tAddStaSelfParams));
+ sizeof(tAddStaSelfParams_V1));
pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
@@ -17707,9 +17718,11 @@
WDI_EventInfoType* pEventData
)
{
- WDI_Status wdiStatus;
eHalStatus halStatus;
WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
+ tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
+ WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
+
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/*-------------------------------------------------------------------------
@@ -17724,6 +17737,13 @@
return WDI_STATUS_E_FAILURE;
}
+ /*-------------------------------------------------------------------------
+ Extract indication and send it to UMAC
+ -------------------------------------------------------------------------*/
+ wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
+ pEventData->pEventData,
+ sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
+
wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
/*-------------------------------------------------------------------------
@@ -17733,10 +17753,11 @@
pEventData->pEventData,
sizeof(halStatus));
- wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
+ wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
+ wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
/*Notify UMAC*/
- wdiTDLSLinkEstablishReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
+ wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
return WDI_STATUS_SUCCESS;
}/*WDI_ProcessLinkEstablishReqRsp*/
diff --git a/Kbuild b/Kbuild
index 935ecdb..7cd7498 100644
--- a/Kbuild
+++ b/Kbuild
@@ -53,7 +53,7 @@
BUILD_DIAG_VERSION := 0
#Do we panic on bug? default is to warn
-PANIC_ON_BUG := 0
+PANIC_ON_BUG := 1
#Re-enable wifi on WDI timeout
RE_ENABLE_WIFI_ON_WDI_TIMEOUT := 0
diff --git a/riva/inc/wlan_hal_msg.h b/riva/inc/wlan_hal_msg.h
index a38799b..1233239 100644
--- a/riva/inc/wlan_hal_msg.h
+++ b/riva/inc/wlan_hal_msg.h
@@ -1644,6 +1644,15 @@
HAL_MAX_CONCURRENCY_PERSONA=4
} tHalConcurrencyMode;
+// IFACE PERSONA for different Operating modes
+typedef enum
+{
+ HAL_IFACE_UNKNOWN,
+ HAL_IFACE_STA_MODE,
+ HAL_IFACE_P2P_MODE,
+ HAL_IFACE_MAX
+} tHalIfacePersona;
+
typedef PACKED_PRE struct PACKED_POST
{
/* BSSID */
@@ -4563,11 +4572,20 @@
tANI_U32 status;
}tAddStaSelfParams, *tpAddStaSelfParams;
+typedef PACKED_PRE struct PACKED_POST
+{
+ tSirMacAddr selfMacAddr;
+ tANI_U32 status;
+ tHalIfacePersona iface_persona;
+}tAddStaSelfParams_V1, *tpAddStaSelfParams_V1;
typedef PACKED_PRE struct PACKED_POST
{
tHalMsgHeader header;
+ PACKED_PRE union PACKED_POST {
tAddStaSelfParams addStaSelfParams;
+ tAddStaSelfParams_V1 addStaSelfParams_V1;
+ }uAddStaSelfParams;
}tAddStaSelfReq, *tpAddStaSelfReq;
/*---------------------------------------------------------------------------