prima: WLAN Driver Release 3.1.7.9
This is the initial release of the Prima WLAN Driver
diff --git a/CORE/SME/inc/sme_QosApi.h b/CORE/SME/inc/sme_QosApi.h
new file mode 100644
index 0000000..d6614fd
--- /dev/null
+++ b/CORE/SME/inc/sme_QosApi.h
@@ -0,0 +1,356 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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( __SME_QOSAPI_H )
+#define __SME_QOSAPI_H
+
+
+/**=========================================================================
+
+ \file sme_QosApi.h
+
+ \brief prototype for SME QoS APIs
+
+ Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
+
+ Qualcomm Confidential and Proprietary.
+
+ ========================================================================*/
+
+/* $Header$ */
+
+/*--------------------------------------------------------------------------
+ Include Files
+ ------------------------------------------------------------------------*/
+#include "vos_lock.h"
+#include "vos_trace.h"
+#include "vos_memory.h"
+#include "vos_types.h"
+#include "aniGlobal.h"
+#include "sirApi.h"
+
+/*--------------------------------------------------------------------------
+ Type declarations
+ ------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------
+ Enumeration of the various QoS status types that would be reported to HDD
+---------------------------------------------------------------------------*/
+typedef enum
+{
+ //async: once PE notifies successful TSPEC negotiation, or CSR notifies for
+ //successful reassoc, notifies HDD with current QoS Params
+ SME_QOS_STATUS_SETUP_SUCCESS_IND = 0,
+ //sync: only when App asked for APSD & it's already set with ACM = 0
+ SME_QOS_STATUS_SETUP_SUCCESS_APSD_SET_ALREADY,
+ //both: sync or async: in case of async notifies HDD with current QoS Params
+ SME_QOS_STATUS_SETUP_FAILURE_RSP,
+ //sync
+ SME_QOS_STATUS_SETUP_INVALID_PARAMS_RSP,
+ //sync: AP doesn't support QoS (WMM)
+ SME_QOS_STATUS_SETUP_NOT_QOS_AP_RSP,
+ //sync: either req has been sent down to PE or just buffered in SME
+ SME_QOS_STATUS_SETUP_REQ_PENDING_RSP,
+ //async: in case of flow aggregation, if the new TSPEC negotiation is
+ //successful, OR,
+ //notify existing flows that TSPEC is modified with current QoS Params
+ SME_QOS_STATUS_SETUP_MODIFIED_IND,
+ //sync: no APSD asked for & ACM = 0
+ SME_QOS_STATUS_SETUP_SUCCESS_NO_ACM_NO_APSD_RSP,
+ //async: In case of UAPSD, once PE notifies successful TSPEC negotiation, or
+ //CSR notifies for successful reassoc to SME-QoS, notify HDD if PMC can't
+ //put the module in UAPSD mode right away (eHAL_STATUS_PMC_PENDING)
+ SME_QOS_STATUS_SETUP_SUCCESS_IND_APSD_PENDING,
+ //async: In case of UAPSD, once PE notifies successful TSPEC negotiation, or
+ //CSR notifies for successful reassoc to SME-QoS, notify HDD if PMC can't
+ //put the module in UAPSD mode at all (eHAL_STATUS_FAILURE)
+ SME_QOS_STATUS_SETUP_SUCCESS_IND_APSD_SET_FAILED,
+
+ //sync: req has been sent down to PE in case of delts or addts for remain
+ // flows, OR if the AC doesn't have APSD or ACM
+ //async: once the downgrade req for QoS params is successful
+ SME_QOS_STATUS_RELEASE_SUCCESS_RSP = 100,
+ //both: sync or async: in case of async notifies HDD with current QoS Params
+ SME_QOS_STATUS_RELEASE_FAILURE_RSP,
+ //async: AP sent DELTS indication
+ SME_QOS_STATUS_RELEASE_QOS_LOST_IND,
+ //sync: an addts req has been sent down to PE to downgrade the QoS params or
+ // just buffered in SME
+ SME_QOS_STATUS_RELEASE_REQ_PENDING_RSP,
+ //sync
+ SME_QOS_STATUS_RELEASE_INVALID_PARAMS_RSP,
+
+ //async: for QoS modify request if modification is successful, notifies HDD
+ // with current QoS Params
+ SME_QOS_STATUS_MODIFY_SETUP_SUCCESS_IND = 200,
+ //sync: only when App asked for APSD & it's already set with ACM = 0
+ SME_QOS_STATUS_MODIFY_SETUP_SUCCESS_APSD_SET_ALREADY,
+ //both: sync or async: in case of async notifies HDD with current QoS Params
+ SME_QOS_STATUS_MODIFY_SETUP_FAILURE_RSP,
+ //sync: either req has been sent down to PE or just buffered in SME
+ SME_QOS_STATUS_MODIFY_SETUP_PENDING_RSP,
+ //sync: no APSD asked for & ACM = 0
+ SME_QOS_STATUS_MODIFY_SETUP_SUCCESS_NO_ACM_NO_APSD_RSP,
+ //sync
+ SME_QOS_STATUS_MODIFY_SETUP_INVALID_PARAMS_RSP,
+ //async: In case of UAPSD, once PE notifies successful TSPEC negotiation, or
+ //CSR notifies for successful reassoc to SME-QoS, notify HDD if PMC can't
+ //put the module in UAPSD mode right away (eHAL_STATUS_PMC_PENDING)
+ SME_QOS_STATUS_MODIFY_SETUP_SUCCESS_IND_APSD_PENDING,
+ //async: In case of UAPSD, once PE notifies successful TSPEC negotiation, or
+ //CSR notifies for successful reassoc to SME-QoS, notify HDD if PMC can't
+ //put the module in UAPSD mode at all (eHAL_STATUS_FAILURE)
+ SME_QOS_STATUS_MODIFY_SETUP_SUCCESS_IND_APSD_SET_FAILED,
+ //sync: STA is handing off to a new AP
+ SME_QOS_STATUS_HANDING_OFF = 300,
+ //async:powersave mode changed by PMC from UAPSD to Full power
+ SME_QOS_STATUS_OUT_OF_APSD_POWER_MODE_IND = 400,
+ //async:powersave mode changed by PMC from Full power to UAPSD
+ SME_QOS_STATUS_INTO_APSD_POWER_MODE_IND,
+
+}sme_QosStatusType;
+
+/*---------------------------------------------------------------------------
+ Enumeration of the various User priority (UP) types
+
+ From 802.1D/802.11e/WMM specifications (all refer to same table)
+---------------------------------------------------------------------------*/
+typedef enum
+{
+ SME_QOS_WMM_UP_BE = 0,
+ SME_QOS_WMM_UP_BK = 1,
+ SME_QOS_WMM_UP_RESV = 2, /* Reserved */
+ SME_QOS_WMM_UP_EE = 3,
+ SME_QOS_WMM_UP_CL = 4,
+ SME_QOS_WMM_UP_VI = 5,
+ SME_QOS_WMM_UP_VO = 6,
+ SME_QOS_WMM_UP_NC = 7,
+
+ SME_QOS_WMM_UP_MAX
+
+}sme_QosWmmUpType;
+
+/*---------------------------------------------------------------------------
+ Enumeration of the various TSPEC directions
+
+ From 802.11e/WMM specifications
+---------------------------------------------------------------------------*/
+
+typedef enum
+{
+ SME_QOS_WMM_TS_DIR_UPLINK = 0,
+ SME_QOS_WMM_TS_DIR_DOWNLINK = 1,
+ SME_QOS_WMM_TS_DIR_RESV = 2, /* Reserved */
+ SME_QOS_WMM_TS_DIR_BOTH = 3,
+
+}sme_QosWmmDirType;
+
+/*---------------------------------------------------------------------------
+ Enumeration of the various TSPEC ack policies.
+
+ From 802.11 WMM specification
+---------------------------------------------------------------------------*/
+
+typedef enum
+{
+ SME_QOS_WMM_TS_ACK_POLICY_NORMAL_ACK = 0,
+ SME_QOS_WMM_TS_ACK_POLICY_RESV1 = 1,
+ SME_QOS_WMM_TS_ACK_POLICY_RESV2 = 2, /* Reserved */
+ SME_QOS_WMM_TS_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 3,
+
+}sme_QosWmmAckPolicyType;
+
+/*---------------------------------------------------------------------------
+ TS Info field in the WMM TSPEC
+
+ See suggestive values above
+---------------------------------------------------------------------------*/
+typedef struct
+{
+ v_U8_t burst_size_defn;
+ sme_QosWmmAckPolicyType ack_policy;
+ sme_QosWmmUpType up; /* User priority */
+ v_U8_t psb; /* power-save bit */
+ sme_QosWmmDirType direction; /* Direction */
+ v_U8_t tid; /* TID : To be filled up by SME-QoS */
+} sme_QosWmmTsInfoType;
+
+/*---------------------------------------------------------------------------
+ The WMM TSPEC Element (from the WMM spec)
+---------------------------------------------------------------------------*/
+typedef struct
+{
+ sme_QosWmmTsInfoType ts_info;
+ v_U16_t nominal_msdu_size;
+ v_U16_t maximum_msdu_size;
+ v_U32_t min_service_interval;
+ v_U32_t max_service_interval;
+ v_U32_t inactivity_interval;
+ v_U32_t suspension_interval;
+ v_U32_t svc_start_time;
+ v_U32_t min_data_rate;
+ v_U32_t mean_data_rate;
+ v_U32_t peak_data_rate;
+ v_U32_t max_burst_size;
+ v_U32_t delay_bound;
+ v_U32_t min_phy_rate;
+ v_U16_t surplus_bw_allowance;
+ v_U16_t medium_time;
+} sme_QosWmmTspecInfo;
+
+
+/*--------------------------------------------------------------------------
+ External APIs
+ ------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------
+ \brief sme_QosCallback() - This is a callback function which is registered
+ per flow while HDD is requesting for QoS. Used for any notification for the
+ flow (i.e. setup success/failure/release) which needs to be sent to HDD. HDD
+ will notify the application in turn, if needed.
+
+ \param hHal - The handle returned by macOpen.
+ \param HDDcontext - A cookie passed by HDD during QoS setup, to be used by SME
+ during any QoS notification (through the callabck) to HDD
+ \param pCurrentQoSInfo - Pointer to sme_QosWmmTspecInfo which contains the WMM
+ TSPEC related info as defined above, fed back to HDD
+ \param status - The status of the flow running on an AC. It could be of
+ sme_QosStatusType
+
+ \return eHAL_STATUS_SUCCESS - Callback invoke successful.
+
+
+ \sa
+
+ --------------------------------------------------------------------------*/
+typedef eHalStatus (*sme_QosCallback)(tHalHandle hHal, void * HDDcontext,
+ sme_QosWmmTspecInfo * pCurrentQoSInfo,
+ sme_QosStatusType status,
+ v_U32_t QosFlowID);
+
+/*--------------------------------------------------------------------------
+ \brief sme_QosSetupReq() - The SME QoS API exposed to HDD to request for QoS
+ on a particular AC. This function should be called after a link has been
+ established, i.e. STA is associated with an AP etc. If the request involves
+ admission control on the requested AC, HDD needs to provide the necessary
+ Traffic Specification (TSPEC) parameters otherwise SME is going to use the
+ default params.
+
+ \param hHal - The handle returned by macOpen.
+ \param sessionId - sessionId returned by sme_OpenSession. Current QOS code doesn't
+ support multiple session. This function returns failure when different
+ sessionId is passed in before calling sme_QosReleaseReq.
+ \param pQoSInfo - Pointer to sme_QosWmmTspecInfo which contains the WMM TSPEC
+ related info as defined above, provided by HDD
+ \param QoSCallback - The callback which is registered per flow while
+ requesting for QoS. Used for any notification for the
+ flow (i.e. setup success/failure/release) which needs to
+ be sent to HDD
+ \param HDDcontext - A cookie passed by HDD to be used by SME during any QoS
+ notification (through the callabck) to HDD
+ \param UPType - Useful only if HDD or any other upper layer module (BAP etc.)
+ looking for implicit QoS setup, in that
+ case, the pQoSInfo will be NULL & SME will know about the AC
+ (from the UP provided in this param) QoS is requested on
+ \param pQosFlowID - Identification per flow running on each AC generated by
+ SME.
+ It is only meaningful if the QoS setup for the flow is
+ successful
+
+ \return SME_QOS_STATUS_SETUP_SUCCESS - Setup request processed successfully.
+
+ Other status means Setup request failed
+ \sa
+
+ --------------------------------------------------------------------------*/
+sme_QosStatusType sme_QosSetupReq(tHalHandle hHal, tANI_U32 sessionId,
+ sme_QosWmmTspecInfo * pQoSInfo,
+ sme_QosCallback QoSCallback, void * HDDcontext,
+ sme_QosWmmUpType UPType, v_U32_t * pQosFlowID);
+
+/*--------------------------------------------------------------------------
+ \brief sme_QosModifyReq() - The SME QoS API exposed to HDD to request for
+ modification of certain QoS params on a flow running on a particular AC.
+ This function should be called after a link has been established, i.e. STA is
+ associated with an AP etc. & a QoS setup has been succesful for that flow.
+ If the request involves admission control on the requested AC, HDD needs to
+ provide the necessary Traffic Specification (TSPEC) parameters & SME might
+ start the renegotiation process through ADDTS.
+
+ \param hHal - The handle returned by macOpen.
+ \param pQoSInfo - Pointer to sme_QosWmmTspecInfo which contains the WMM TSPEC
+ related info as defined above, provided by HDD
+ \param QosFlowID - Identification per flow running on each AC generated by
+ SME.
+ It is only meaningful if the QoS setup for the flow has
+ been successful already
+
+ \return SME_QOS_STATUS_SETUP_SUCCESS - Modification request processed
+ successfully.
+
+ Other status means request failed
+ \sa
+
+ --------------------------------------------------------------------------*/
+sme_QosStatusType sme_QosModifyReq(tHalHandle hHal,
+ sme_QosWmmTspecInfo * pQoSInfo,
+ v_U32_t QosFlowID);
+
+/*--------------------------------------------------------------------------
+ \brief sme_QosReleaseReq() - The SME QoS API exposed to HDD to request for
+ releasing a QoS flow running on a particular AC. This function should be
+ called only if a QoS is set up with a valid FlowID. HDD sould invoke this
+ API only if an explicit request for QoS release has come from Application
+
+ \param hHal - The handle returned by macOpen.
+ \param QosFlowID - Identification per flow running on each AC generated by SME
+ It is only meaningful if the QoS setup for the flow is
+ successful
+
+ \return SME_QOS_STATUS_RELEASE_SUCCESS - Release request processed
+ successfully.
+
+ \sa
+
+ --------------------------------------------------------------------------*/
+sme_QosStatusType sme_QosReleaseReq(tHalHandle hHal, v_U32_t QosFlowID);
+
+/*--------------------------------------------------------------------------
+ \brief sme_QosIsTSInfoAckPolicyValid() - The SME QoS API exposed to HDD to
+ check if TS info ack policy field can be set to "HT-immediate block acknowledgement"
+
+ \param pMac - The handle returned by macOpen.
+ \param pQoSInfo - Pointer to sme_QosWmmTspecInfo which contains the WMM TSPEC
+ related info, provided by HDD
+ \param sessionId - sessionId returned by sme_OpenSession.
+
+ \return VOS_TRUE - Current Association is HT association and so TS info ack policy
+ can be set to "HT-immediate block acknowledgement"
+
+ \sa
+
+ --------------------------------------------------------------------------*/
+v_BOOL_t sme_QosIsTSInfoAckPolicyValid(tpAniSirGlobal pMac,
+ sme_QosWmmTspecInfo * pQoSInfo,
+ v_U8_t sessionId);
+
+#endif //#if !defined( __SME_QOSAPI_H )