1 /*
2  * Copyright (c) 2014-2019, 2021 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #if !defined(__SMEQOSINTERNAL_H)
20 #define __SMEQOSINTERNAL_H
21 
22 /**
23  * \file  sme_qos_internal.h
24  *
25  * \brief prototype for SME QoS APIs
26  */
27 
28 /*--------------------------------------------------------------------------
29   Include Files
30   ------------------------------------------------------------------------*/
31 #include "qdf_lock.h"
32 #include "qdf_trace.h"
33 #include "qdf_mem.h"
34 #include "qdf_types.h"
35 #include "ani_global.h"
36 #include "sir_api.h"
37 #include "sme_qos_api.h"
38 #include "sme_internal.h"
39 
40 /*--------------------------------------------------------------------------
41   Type declarations
42   ------------------------------------------------------------------------*/
43 #define SME_QOS_AP_SUPPORTS_APSD         0x80
44 
45 /*---------------------------------------------------------------------------
46   Enumeration of the various CSR event indication types that would be reported
47   by CSR
48   ---------------------------------------------------------------------------*/
49 typedef enum {
50 	SME_QOS_CSR_JOIN_REQ = 0,
51 	SME_QOS_CSR_ASSOC_COMPLETE,
52 	SME_QOS_CSR_REASSOC_REQ,
53 	SME_QOS_CSR_REASSOC_COMPLETE,
54 	SME_QOS_CSR_REASSOC_FAILURE,
55 	SME_QOS_CSR_DISCONNECT_REQ,
56 	SME_QOS_CSR_DISCONNECT_IND,
57 	SME_QOS_CSR_HANDOFF_ASSOC_REQ,
58 	SME_QOS_CSR_HANDOFF_COMPLETE,
59 	SME_QOS_CSR_PREAUTH_SUCCESS_IND,
60 	SME_QOS_CSR_SET_KEY_SUCCESS_IND,
61 	SME_QOS_CSR_DISCONNECT_ROAM_COMPLETE,
62 } sme_qos_csr_event_indType;
63 
64 #ifdef FEATURE_WLAN_DIAG_SUPPORT
65 typedef enum {
66 	SME_QOS_DIAG_ADDTS_REQ = 0,
67 	SME_QOS_DIAG_ADDTS_RSP,
68 	SME_QOS_DIAG_DELTS
69 } sme_QosDiagQosEventSubtype;
70 
71 typedef enum {
72 	SME_QOS_DIAG_ADDTS_ADMISSION_ACCEPTED = 0,
73 	SME_QOS_DIAG_ADDTS_INVALID_PARAMS,
74 	SME_QOS_DIAG_ADDTS_RESERVED,
75 	SME_QOS_DIAG_ADDTS_REFUSED,
76 	SME_QOS_DIAG_USER_REQUESTED,
77 	SME_QOS_DIAG_DELTS_IND_FROM_AP,
78 
79 } sme_QosDiagQosEventReasonCode;
80 
81 #endif /* FEATURE_WLAN_DIAG_SUPPORT */
82 /*---------------------------------------------------------------------------
83   The association information structure to be passed by CSR after assoc or
84   reassoc is done
85   ---------------------------------------------------------------------------*/
86 typedef struct {
87 	struct bss_description *bss_desc;
88 	uint8_t uapsd_mask;
89 } sme_QosAssocInfo;
90 
91 /*--------------------------------------------------------------------------
92   External APIs for CSR - Internal to SME
93   ------------------------------------------------------------------------*/
94 QDF_STATUS sme_qos_open(struct mac_context *mac);
95 QDF_STATUS sme_qos_close(struct mac_context *mac);
96 QDF_STATUS sme_qos_msg_processor(struct mac_context *mac, uint16_t msg_type,
97 		void *msg_buf);
98 
99 /*--------------------------------------------------------------------------
100   Internal APIs for CSR
101   ------------------------------------------------------------------------*/
102 QDF_STATUS sme_qos_csr_event_ind(struct mac_context *mac,
103 		uint8_t sessionId,
104 		sme_qos_csr_event_indType ind, void *pEvent_info);
105 uint8_t sme_qos_get_acm_mask(struct mac_context *mac,
106 		struct bss_description *pSirBssDesc, tDot11fBeaconIEs *pIes);
107 #ifdef FEATURE_WLAN_ESE
108 uint8_t sme_qos_ese_retrieve_tspec_info(struct mac_context *mac, uint8_t sessionId,
109 		tTspecInfo * pTspecInfo);
110 #endif
111 
112 #endif /* #if !defined( __SMEQOSINTERNAL_H ) */
113