summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-11-04 22:17:45 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2014-11-04 22:19:27 +0530
commitec247b030b96674441cdd785f6b626759aa2402c (patch)
tree83357bab9b09d1b636e5751d121000bf14b02bbc
parent2bc208bbb8c8a5fcbf659ec79ad1312d74d99d23 (diff)
parent9521218ecb22e9b1b213bcc64c72ee0d839d0cc7 (diff)
Release 1.0.0.226 QCACLD WLAN Drive
Merge remote-tracking branch 'origin/caf/caf-wlan/master' into HEAD * origin/caf/caf-wlan/master: Cafstaging Release 1.0.0.226 qcacld: Enhancements to GETLINKSTATUS private ioctl. Wlan:Fix for STA not able to connect to AP in WPS unconfigured state qcacld: UMAC: Adding HT Capability info IE in broadcast probe request qcacld: Flush scan results when changing DFS channel state qcacld: Fix markings in queue.h qcacld: Remove unused header file if_llc.h Change-Id: Ia6f91db01b87fc2d539072b56799a298c00155e5
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_rx.c1
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c10
-rw-r--r--CORE/MAC/inc/qwlan_version.h4
-rw-r--r--CORE/MAC/src/pe/lim/limP2P.c71
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c30
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c71
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.h5
-rw-r--r--CORE/SERVICES/COMMON/if_llc.h186
-rw-r--r--CORE/SERVICES/COMMON/queue.h28
-rw-r--r--CORE/SERVICES/COMMON/sys/queue.h30
-rw-r--r--CORE/SERVICES/WMA/wma.c11
-rw-r--r--CORE/SME/src/csr/csrApiScan.c7
-rw-r--r--CORE/SME/src/csr/csrUtil.c10
13 files changed, 139 insertions, 325 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_rx.c b/CORE/CLD_TXRX/TXRX/ol_rx.c
index c4883219e6e4..a88985056521 100644
--- a/CORE/CLD_TXRX/TXRX/ol_rx.c
+++ b/CORE/CLD_TXRX/TXRX/ol_rx.c
@@ -52,7 +52,6 @@
/* FIX THIS: txrx should not include private header files of other modules */
#include <htt_types.h>
#include <ol_if_athvar.h>
-#include <if_llc.h>
#include <enet.h> /* ethernet + SNAP/LLC header defs and ethertype values */
#include <ip_prot.h> /* IP protocol values */
#include <ipv4.h> /* IPv4 header defs */
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 96308e001d90..1643878881f8 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -4026,9 +4026,17 @@ static int wlan_hdd_cfg80211_disable_dfs_chan_scan(struct wiphy *wiphy,
status = sme_handle_dfs_chan_scan(hHal,
pHddCtx->cfg_ini->enableDFSChnlScan);
- if (eHAL_STATUS_SUCCESS == status)
+ if (eHAL_STATUS_SUCCESS == status) {
ret_val = 0;
+ /* Clear the SME scan cache also. Note that the clearing of scan
+ * results is independent of session; so no need to iterate over
+ * all sessions
+ */
+ status = sme_ScanFlushResult(hHal, pAdapter->sessionId);
+ if (eHAL_STATUS_SUCCESS != status)
+ ret_val = -EPERM;
+ }
} else {
hddLog(VOS_TRACE_LEVEL_INFO, FL(" the DFS flag has not changed"));
ret_val = 0;
diff --git a/CORE/MAC/inc/qwlan_version.h b/CORE/MAC/inc/qwlan_version.h
index 30a8ec4bf19c..a999058cbb8f 100644
--- a/CORE/MAC/inc/qwlan_version.h
+++ b/CORE/MAC/inc/qwlan_version.h
@@ -42,9 +42,9 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MINOR 0
#define QWLAN_VERSION_PATCH 0
#define QWLAN_VERSION_EXTRA ""
-#define QWLAN_VERSION_BUILD 225
+#define QWLAN_VERSION_BUILD 226
-#define QWLAN_VERSIONSTR "1.0.0.225"
+#define QWLAN_VERSIONSTR "1.0.0.226"
#define AR6320_REV1_VERSION 0x5000000
diff --git a/CORE/MAC/src/pe/lim/limP2P.c b/CORE/MAC/src/pe/lim/limP2P.c
index f0c26a85f926..32816ccd29f6 100644
--- a/CORE/MAC/src/pe/lim/limP2P.c
+++ b/CORE/MAC/src/pe/lim/limP2P.c
@@ -734,72 +734,6 @@ eHalStatus limP2PActionCnf(tpAniSirGlobal pMac, tANI_U32 txCompleteSuccess)
}
-void limSetHtCaps(tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U8 *pIeStartPtr,tANI_U32 nBytes)
-{
- v_U8_t *pIe=NULL;
- tDot11fIEHTCaps dot11HtCap;
-
- PopulateDot11fHTCaps(pMac, psessionEntry, &dot11HtCap);
- pIe = limGetIEPtr(pMac,pIeStartPtr, nBytes,
- DOT11F_EID_HTCAPS,ONE_BYTE);
- limLog( pMac, LOG2, FL("pIe %p dot11HtCap.supportedMCSSet[0]=0x%x"),
- pIe, dot11HtCap.supportedMCSSet[0]);
- if(pIe)
- {
- tHtCaps *pHtcap = (tHtCaps *)&pIe[2]; //convert from unpacked to packed structure
- pHtcap->advCodingCap = dot11HtCap.advCodingCap;
- pHtcap->supportedChannelWidthSet = dot11HtCap.supportedChannelWidthSet;
- pHtcap->mimoPowerSave = dot11HtCap.mimoPowerSave;
- pHtcap->greenField = dot11HtCap.greenField;
- pHtcap->shortGI20MHz = dot11HtCap.shortGI20MHz;
- pHtcap->shortGI40MHz = dot11HtCap.shortGI40MHz;
- pHtcap->txSTBC = dot11HtCap.txSTBC;
- pHtcap->rxSTBC = dot11HtCap.rxSTBC;
- pHtcap->delayedBA = dot11HtCap.delayedBA ;
- pHtcap->maximalAMSDUsize = dot11HtCap.maximalAMSDUsize;
- pHtcap->dsssCckMode40MHz = dot11HtCap.dsssCckMode40MHz;
- pHtcap->psmp = dot11HtCap.psmp;
- pHtcap->stbcControlFrame = dot11HtCap.stbcControlFrame;
- pHtcap->lsigTXOPProtection = dot11HtCap.lsigTXOPProtection;
- pHtcap->maxRxAMPDUFactor = dot11HtCap.maxRxAMPDUFactor;
- pHtcap->mpduDensity = dot11HtCap.mpduDensity;
- vos_mem_copy((void *)pHtcap->supportedMCSSet,
- (void *)(dot11HtCap.supportedMCSSet),
- sizeof(pHtcap->supportedMCSSet));
- pHtcap->pco = dot11HtCap.pco;
- pHtcap->transitionTime = dot11HtCap.transitionTime;
- pHtcap->mcsFeedback = dot11HtCap.mcsFeedback;
- pHtcap->txBF = dot11HtCap.txBF;
- pHtcap->rxStaggeredSounding = dot11HtCap.rxStaggeredSounding;
- pHtcap->txStaggeredSounding = dot11HtCap.txStaggeredSounding;
- pHtcap->rxZLF = dot11HtCap.rxZLF;
- pHtcap->txZLF = dot11HtCap.txZLF;
- pHtcap->implicitTxBF = dot11HtCap.implicitTxBF;
- pHtcap->calibration = dot11HtCap.calibration;
- pHtcap->explicitCSITxBF = dot11HtCap.explicitCSITxBF;
- pHtcap->explicitUncompressedSteeringMatrix =
- dot11HtCap.explicitUncompressedSteeringMatrix;
- pHtcap->explicitBFCSIFeedback = dot11HtCap.explicitBFCSIFeedback;
- pHtcap->explicitUncompressedSteeringMatrixFeedback =
- dot11HtCap.explicitUncompressedSteeringMatrixFeedback;
- pHtcap->explicitCompressedSteeringMatrixFeedback =
- dot11HtCap.explicitCompressedSteeringMatrixFeedback;
- pHtcap->csiNumBFAntennae = dot11HtCap.csiNumBFAntennae;
- pHtcap->uncompressedSteeringMatrixBFAntennae =
- dot11HtCap.uncompressedSteeringMatrixBFAntennae;
- pHtcap->compressedSteeringMatrixBFAntennae =
- dot11HtCap.compressedSteeringMatrixBFAntennae;
- pHtcap->antennaSelection = dot11HtCap.antennaSelection;
- pHtcap->explicitCSIFeedbackTx = dot11HtCap.explicitCSIFeedbackTx;
- pHtcap->antennaIndicesFeedbackTx = dot11HtCap.antennaIndicesFeedbackTx;
- pHtcap->explicitCSIFeedback = dot11HtCap.explicitCSIFeedback;
- pHtcap->antennaIndicesFeedback = dot11HtCap.antennaIndicesFeedback;
- pHtcap->rxAS = dot11HtCap.rxAS;
- pHtcap->txSoundingPPDUs = dot11HtCap.txSoundingPPDUs;
- }
-}
-
-
void limSendP2PActionFrame(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
{
tSirMbMsgP2p *pMbMsg = (tSirMbMsgP2p *)pMsg->bodyptr;
@@ -983,8 +917,9 @@ send_action_frame:
if (SIR_MAC_MGMT_PROBE_RSP == pFc->subType)
{
- limSetHtCaps( pMac, psessionEntry, (tANI_U8*)pMbMsg->data + PROBE_RSP_IE_OFFSET,
- nBytes - PROBE_RSP_IE_OFFSET);
+ lim_set_ht_caps(pMac, psessionEntry,
+ (tANI_U8*)pMbMsg->data + PROBE_RSP_IE_OFFSET,
+ nBytes - PROBE_RSP_IE_OFFSET);
}
if (pMac->fP2pListenOffload)
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index c053ee2bcdf4..ead2b8ca5b30 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -120,7 +120,6 @@ void __limProcessSmeAssocCnfNew(tpAniSirGlobal, tANI_U32, tANI_U32 *);
extern void peRegisterTLHandle(tpAniSirGlobal pMac);
-
#ifdef BACKGROUND_SCAN_ENABLED
// start the background scan timers if it hasn't already started
@@ -1132,8 +1131,9 @@ static eHalStatus limSendHalStartScanOffloadReq(tpAniSirGlobal pMac,
{
tSirScanOffloadReq *pScanOffloadReq;
tANI_U8 *p;
+ tANI_U8 *ht_cap_ie;
tSirMsgQ msg;
- tANI_U16 i, len;
+ tANI_U16 i, len, ht_cap_len = 0;
tSirRetStatus rc = eSIR_SUCCESS;
pMac->lim.fOffloadScanPending = 0;
@@ -1144,6 +1144,13 @@ static eHalStatus limSendHalStartScanOffloadReq(tpAniSirGlobal pMac,
len = sizeof(tSirScanOffloadReq) + (pScanReq->channelList.numChannels - 1) +
pScanReq->uIEFieldLen;
+ if (IS_DOT11_MODE_HT(pScanReq->dot11mode)) {
+ limLog(pMac, LOG1,
+ FL("Adding HT Caps IE since dot11mode=%d"), pScanReq->dot11mode);
+ ht_cap_len = 2 + sizeof(tHtCaps); /* 2 bytes for EID and Length */
+ len += ht_cap_len;
+ }
+
pScanOffloadReq = vos_mem_malloc(len);
if ( NULL == pScanOffloadReq )
{
@@ -1198,7 +1205,8 @@ static eHalStatus limSendHalStartScanOffloadReq(tpAniSirGlobal pMac,
pScanOffloadReq->sessionId = pScanReq->sessionId;
if (pScanOffloadReq->sessionId >= pMac->lim.maxBssId)
- limLog(pMac, LOGE,FL("Invalid pe sessionID : %d"), pScanOffloadReq->sessionId);
+ limLog(pMac, LOGE, FL("Invalid pe sessionID : %d"),
+ pScanOffloadReq->sessionId);
pScanOffloadReq->channelList.numChannels =
pScanReq->channelList.numChannels;
@@ -1207,12 +1215,26 @@ static eHalStatus limSendHalStartScanOffloadReq(tpAniSirGlobal pMac,
p[i] = pScanReq->channelList.channelNumber[i];
pScanOffloadReq->uIEFieldLen = pScanReq->uIEFieldLen;
- pScanOffloadReq->uIEFieldOffset = len - pScanOffloadReq->uIEFieldLen;
+ pScanOffloadReq->uIEFieldOffset = len - ht_cap_len -
+ pScanOffloadReq->uIEFieldLen;
vos_mem_copy(
(tANI_U8 *) pScanOffloadReq + pScanOffloadReq->uIEFieldOffset,
(tANI_U8 *) pScanReq + pScanReq->uIEFieldOffset,
pScanReq->uIEFieldLen);
+ /* Copy HT Capability info if dot11mode is HT */
+ if (IS_DOT11_MODE_HT(pScanReq->dot11mode)) {
+ /* Populate EID and Length field here */
+ ht_cap_ie = (tANI_U8 *) pScanOffloadReq +
+ pScanOffloadReq->uIEFieldOffset +
+ pScanOffloadReq->uIEFieldLen;
+ vos_mem_set(ht_cap_ie, ht_cap_len, 0);
+ *ht_cap_ie = SIR_MAC_HT_CAPABILITIES_EID;
+ *(ht_cap_ie + 1) = ht_cap_len - 2;
+ lim_set_ht_caps(pMac, NULL, ht_cap_ie, len - ht_cap_len);
+ pScanOffloadReq->uIEFieldLen += ht_cap_len;
+ }
+
rc = wdaPostCtrlMsg(pMac, &msg);
if (rc != eSIR_SUCCESS)
{
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 557060427fab..c57ef8b0dc61 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -7546,3 +7546,74 @@ tANI_U8* lim_get_ie_ptr(tANI_U8 *pIes, int length, tANI_U8 eid)
}
return NULL;
}
+
+void lim_set_ht_caps(tpAniSirGlobal p_mac, tpPESession p_session_entry,
+ tANI_U8 *p_ie_start,tANI_U32 num_bytes)
+{
+ v_U8_t *p_ie=NULL;
+ tDot11fIEHTCaps dot11_ht_cap;
+
+ PopulateDot11fHTCaps(p_mac, p_session_entry, &dot11_ht_cap);
+ p_ie = limGetIEPtr(p_mac, p_ie_start, num_bytes, DOT11F_EID_HTCAPS,
+ ONE_BYTE);
+ limLog( p_mac, LOG2, FL("p_ie %p dot11_ht_cap.supportedMCSSet[0]=0x%x"),
+ p_ie, dot11_ht_cap.supportedMCSSet[0]);
+
+ if(p_ie)
+ {
+ /* convert from unpacked to packed structure */
+ tHtCaps *p_ht_cap = (tHtCaps *)&p_ie[2];
+
+ p_ht_cap->advCodingCap = dot11_ht_cap.advCodingCap;
+ p_ht_cap->supportedChannelWidthSet =
+ dot11_ht_cap.supportedChannelWidthSet;
+ p_ht_cap->mimoPowerSave = dot11_ht_cap.mimoPowerSave;
+ p_ht_cap->greenField = dot11_ht_cap.greenField;
+ p_ht_cap->shortGI20MHz = dot11_ht_cap.shortGI20MHz;
+ p_ht_cap->shortGI40MHz = dot11_ht_cap.shortGI40MHz;
+ p_ht_cap->txSTBC = dot11_ht_cap.txSTBC;
+ p_ht_cap->rxSTBC = dot11_ht_cap.rxSTBC;
+ p_ht_cap->delayedBA = dot11_ht_cap.delayedBA ;
+ p_ht_cap->maximalAMSDUsize = dot11_ht_cap.maximalAMSDUsize;
+ p_ht_cap->dsssCckMode40MHz = dot11_ht_cap.dsssCckMode40MHz;
+ p_ht_cap->psmp = dot11_ht_cap.psmp;
+ p_ht_cap->stbcControlFrame = dot11_ht_cap.stbcControlFrame;
+ p_ht_cap->lsigTXOPProtection = dot11_ht_cap.lsigTXOPProtection;
+ p_ht_cap->maxRxAMPDUFactor = dot11_ht_cap.maxRxAMPDUFactor;
+ p_ht_cap->mpduDensity = dot11_ht_cap.mpduDensity;
+ vos_mem_copy((void *)p_ht_cap->supportedMCSSet,
+ (void *)(dot11_ht_cap.supportedMCSSet),
+ sizeof(p_ht_cap->supportedMCSSet));
+ p_ht_cap->pco = dot11_ht_cap.pco;
+ p_ht_cap->transitionTime = dot11_ht_cap.transitionTime;
+ p_ht_cap->mcsFeedback = dot11_ht_cap.mcsFeedback;
+ p_ht_cap->txBF = dot11_ht_cap.txBF;
+ p_ht_cap->rxStaggeredSounding = dot11_ht_cap.rxStaggeredSounding;
+ p_ht_cap->txStaggeredSounding = dot11_ht_cap.txStaggeredSounding;
+ p_ht_cap->rxZLF = dot11_ht_cap.rxZLF;
+ p_ht_cap->txZLF = dot11_ht_cap.txZLF;
+ p_ht_cap->implicitTxBF = dot11_ht_cap.implicitTxBF;
+ p_ht_cap->calibration = dot11_ht_cap.calibration;
+ p_ht_cap->explicitCSITxBF = dot11_ht_cap.explicitCSITxBF;
+ p_ht_cap->explicitUncompressedSteeringMatrix =
+ dot11_ht_cap.explicitUncompressedSteeringMatrix;
+ p_ht_cap->explicitBFCSIFeedback = dot11_ht_cap.explicitBFCSIFeedback;
+ p_ht_cap->explicitUncompressedSteeringMatrixFeedback =
+ dot11_ht_cap.explicitUncompressedSteeringMatrixFeedback;
+ p_ht_cap->explicitCompressedSteeringMatrixFeedback =
+ dot11_ht_cap.explicitCompressedSteeringMatrixFeedback;
+ p_ht_cap->csiNumBFAntennae = dot11_ht_cap.csiNumBFAntennae;
+ p_ht_cap->uncompressedSteeringMatrixBFAntennae =
+ dot11_ht_cap.uncompressedSteeringMatrixBFAntennae;
+ p_ht_cap->compressedSteeringMatrixBFAntennae =
+ dot11_ht_cap.compressedSteeringMatrixBFAntennae;
+ p_ht_cap->antennaSelection = dot11_ht_cap.antennaSelection;
+ p_ht_cap->explicitCSIFeedbackTx = dot11_ht_cap.explicitCSIFeedbackTx;
+ p_ht_cap->antennaIndicesFeedbackTx =
+ dot11_ht_cap.antennaIndicesFeedbackTx;
+ p_ht_cap->explicitCSIFeedback = dot11_ht_cap.explicitCSIFeedback;
+ p_ht_cap->antennaIndicesFeedback = dot11_ht_cap.antennaIndicesFeedback;
+ p_ht_cap->rxAS = dot11_ht_cap.rxAS;
+ p_ht_cap->txSoundingPPDUs = dot11_ht_cap.txSoundingPPDUs;
+ }
+}
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index 5ee4e9f77116..7894f17e273b 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -582,4 +582,9 @@ tANI_U8* lim_get_ie_ptr(tANI_U8 *pIes, int length, tANI_U8 eid);
#ifdef WLAN_FEATURE_11W
void limPmfComebackTimerCallback(void *context);
#endif /* WLAN_FEATURE_11W */
+
+void lim_set_ht_caps(tpAniSirGlobal p_mac,
+ tpPESession p_session_entry,
+ tANI_U8 *p_ie_start,
+ tANI_U32 num_bytes);
#endif /* __LIM_UTILS_H */
diff --git a/CORE/SERVICES/COMMON/if_llc.h b/CORE/SERVICES/COMMON/if_llc.h
deleted file mode 100644
index 557a1ad528c1..000000000000
--- a/CORE/SERVICES/COMMON/if_llc.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-
-/*
- * Copyright (c) 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)if_llc.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_llc.h,v 1.9 2002/09/23 06:25:08 alfred Exp $
- */
-
-#ifndef _NET_IF_LLC_H_
-#define _NET_IF_LLC_H_
-
-/*
- * IEEE 802.2 Link Level Control headers, for use in conjunction with
- * 802.{3,4,5} media access control methods.
- *
- * Headers here do not use bit fields due to shortcommings in many
- * compilers.
- */
-
-struct llc {
- u_int8_t llc_dsap;
- u_int8_t llc_ssap;
- union {
- struct {
- u_int8_t control;
- u_int8_t format_id;
- u_int8_t class;
- u_int8_t window_x2;
- } __packed type_u;
- struct {
- u_int8_t num_snd_x2;
- u_int8_t num_rcv_x2;
- } __packed type_i;
- struct {
- u_int8_t control;
- u_int8_t num_rcv_x2;
- } __packed type_s;
- struct {
- u_int8_t control;
- /*
- * We cannot put the following fields in a structure because
- * the structure rounding might cause padding.
- */
- u_int8_t frmr_rej_pdu0;
- u_int8_t frmr_rej_pdu1;
- u_int8_t frmr_control;
- u_int8_t frmr_control_ext;
- u_int8_t frmr_cause;
- } __packed type_frmr;
- struct {
- u_int8_t control;
- u_int8_t org_code[3];
- u_int16_t ether_type;
- } __packed type_snap;
- struct {
- u_int8_t control;
- u_int8_t control_ext;
- } __packed type_raw;
- } llc_un /* XXX __packed ??? */;
-} __packed;
-
-struct frmrinfo {
- u_int8_t frmr_rej_pdu0;
- u_int8_t frmr_rej_pdu1;
- u_int8_t frmr_control;
- u_int8_t frmr_control_ext;
- u_int8_t frmr_cause;
-} __packed;
-
-#define llc_control llc_un.type_u.control
-#define llc_control_ext llc_un.type_raw.control_ext
-#define llc_fid llc_un.type_u.format_id
-#define llc_class llc_un.type_u.class
-#define llc_window llc_un.type_u.window_x2
-#define llc_frmrinfo llc_un.type_frmr.frmr_rej_pdu0
-#define llc_frmr_pdu0 llc_un.type_frmr.frmr_rej_pdu0
-#define llc_frmr_pdu1 llc_un.type_frmr.frmr_rej_pdu1
-#define llc_frmr_control llc_un.type_frmr.frmr_control
-#define llc_frmr_control_ext llc_un.type_frmr.frmr_control_ext
-#define llc_frmr_cause llc_un.type_frmr.frmr_cause
-#define llc_snap llc_un.type_snap
-
-/*
- * Don't use sizeof(struct llc_un) for LLC header sizes
- */
-#define LLC_ISFRAMELEN 4
-#define LLC_UFRAMELEN 3
-#define LLC_FRMRLEN 7
-#define LLC_SNAPFRAMELEN 8
-
-/*
- * Unnumbered LLC format commands
- */
-#define LLC_UI 0x3
-#define LLC_UI_P 0x13
-#define LLC_DISC 0x43
-#define LLC_DISC_P 0x53
-#define LLC_UA 0x63
-#define LLC_UA_P 0x73
-#define LLC_TEST 0xe3
-#define LLC_TEST_P 0xf3
-#define LLC_FRMR 0x87
-#define LLC_FRMR_P 0x97
-#define LLC_DM 0x0f
-#define LLC_DM_P 0x1f
-#define LLC_XID 0xaf
-#define LLC_XID_P 0xbf
-#define LLC_SABME 0x6f
-#define LLC_SABME_P 0x7f
-
-/*
- * Supervisory LLC commands
- */
-#define LLC_RR 0x01
-#define LLC_RNR 0x05
-#define LLC_REJ 0x09
-
-/*
- * Info format - dummy only
- */
-#define LLC_INFO 0x00
-
-/*
- * ISO PDTR 10178 contains among others
- */
-#define LLC_X25_LSAP 0x7e
-#define LLC_SNAP_LSAP 0xaa
-#define LLC_ISO_LSAP 0xfe
-
-#endif /* _NET_IF_LLC_H_ */
diff --git a/CORE/SERVICES/COMMON/queue.h b/CORE/SERVICES/COMMON/queue.h
index fae002c9106e..5da9b068e9ce 100644
--- a/CORE/SERVICES/COMMON/queue.h
+++ b/CORE/SERVICES/COMMON/queue.h
@@ -1,33 +1,6 @@
-/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
//
// Copyright (c) 1991, 1993
// The Regents of the University of California. All rights reserved.
-// $ATH_LICENSE_NULL$
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
@@ -59,7 +32,6 @@
//
// @(#)queue.h 8.5 (Berkeley) 8/20/94
// $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $
-// $Id: //depot/sw/qca_main/perf_pwr_offload/drivers/include/queue.h#3 $
//
#ifndef _SYS_QUEUE_H_
diff --git a/CORE/SERVICES/COMMON/sys/queue.h b/CORE/SERVICES/COMMON/sys/queue.h
index 4fff31dfb5e9..a1b620721cea 100644
--- a/CORE/SERVICES/COMMON/sys/queue.h
+++ b/CORE/SERVICES/COMMON/sys/queue.h
@@ -1,34 +1,4 @@
/*
- * Copyright (c) 2011 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * Permission to use, copy, modify, and/or distribute this software for
- * any purpose with or without fee is hereby granted, provided that the
- * above copyright notice and this permission notice appear in all
- * copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
- * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/*
- * Notifications and licenses are retained for attribution purposes only.
- */
-/*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index d7179e057a35..b417cd48707e 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -179,6 +179,9 @@
#define LINK_STATUS_LEGACY 0
#define LINK_STATUS_VHT 0x1
#define LINK_STATUS_MIMO 0x2
+#define LINK_SUPPORT_VHT 0x4
+#define LINK_SUPPORT_MIMO 0x8
+
#define LINK_RATE_VHT 0x3
/* Data rate 100KBPS based on IE Index */
struct index_data_rate_type
@@ -2270,6 +2273,14 @@ static int wma_link_status_rsp(tp_wma_handle wma, u_int8_t *buf)
(ht_info->rx_preamble == LINK_RATE_VHT))
link_status |= LINK_STATUS_VHT;
+ if (intr[ht_info->vdevid].nss == 2)
+ link_status |= LINK_SUPPORT_MIMO;
+
+ if (intr[ht_info->vdevid].rate_flags &
+ (eHAL_TX_RATE_VHT20 | eHAL_TX_RATE_VHT40 |
+ eHAL_TX_RATE_VHT80))
+ link_status |= LINK_SUPPORT_VHT;
+
wma_post_link_status(intr[ht_info->vdevid].plink_status_req,
link_status);
intr[ht_info->vdevid].plink_status_req = NULL;
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index 7c7688d0c6d2..79ace8035237 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -871,10 +871,10 @@ eHalStatus csrScanRequest(tpAniSirGlobal pMac, tANI_U16 sessionId,
pMac->scan.scanProfile.numOfChannels =
pTempScanReq->ChannelInfo.numOfChannels;
- smsLog( pMac, LOG1, FL(" SId=%d scanId=%d"
+ smsLog(pMac, LOG1, FL(" SId=%d scanId=%d"
" Scan reason=%u numSSIDs=%d"
" numChan=%d P2P search=%d minCT=%d maxCT=%d"
- " minCBtc=%d maxCBtx=%d"),
+ " minCBtc=%d maxCBtx=%d uIEFieldLen=%d"),
sessionId, pScanCmd->u.scanCmd.scanID,
pScanCmd->u.scanCmd.reason,
pTempScanReq->SSIDs.numOfSSIDs,
@@ -883,7 +883,8 @@ eHalStatus csrScanRequest(tpAniSirGlobal pMac, tANI_U16 sessionId,
pTempScanReq->minChnTime,
pTempScanReq->maxChnTime,
pTempScanReq->minChnTimeBtc,
- pTempScanReq->maxChnTimeBtc );
+ pTempScanReq->maxChnTimeBtc,
+ pTempScanReq->uIEFieldLen);
//Start process the command
#ifdef WLAN_AP_STA_CONCURRENCY
diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c
index 5428291dda10..f9db12acd2ef 100644
--- a/CORE/SME/src/csr/csrUtil.c
+++ b/CORE/SME/src/csr/csrUtil.c
@@ -3121,8 +3121,14 @@ tANI_U8 csrConstructRSNIe( tHalHandle hHal, tANI_U32 sessionId, tCsrRoamProfile
*/
RSNCapabilities.PreAuthSupported = 0;
#ifdef WLAN_FEATURE_11W
- RSNCapabilities.MFPRequired = pProfile->MFPRequired;
- RSNCapabilities.MFPCapable = pProfile->MFPCapable;
+ if (RSNCapabilities.MFPCapable && pProfile->MFPCapable) {
+ RSNCapabilities.MFPCapable = pProfile->MFPCapable;
+ RSNCapabilities.MFPRequired = pProfile->MFPRequired;
+ }
+ else {
+ RSNCapabilities.MFPCapable = 0;
+ RSNCapabilities.MFPRequired = 0;
+ }
#endif
*(tANI_U16 *)( &pAuthSuite->AuthOui[ 1 ] ) = *((tANI_U16 *)(&RSNCapabilities));