diff options
| author | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-11-04 22:17:45 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2014-11-04 22:19:27 +0530 |
| commit | ec247b030b96674441cdd785f6b626759aa2402c (patch) | |
| tree | 83357bab9b09d1b636e5751d121000bf14b02bbc | |
| parent | 2bc208bbb8c8a5fcbf659ec79ad1312d74d99d23 (diff) | |
| parent | 9521218ecb22e9b1b213bcc64c72ee0d839d0cc7 (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.c | 1 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 10 | ||||
| -rw-r--r-- | CORE/MAC/inc/qwlan_version.h | 4 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limP2P.c | 71 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c | 30 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limUtils.c | 71 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limUtils.h | 5 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/if_llc.h | 186 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/queue.h | 28 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/sys/queue.h | 30 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 11 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrApiScan.c | 7 | ||||
| -rw-r--r-- | CORE/SME/src/csr/csrUtil.c | 10 |
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)); |
