xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/mvl88w8977/mlan/esa/common/parser_rom.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /** @file parser_rom.h
2  *
3  *  @brief This file contains the data structrue for iepointer and declare the parse function
4  *
5  * Copyright (C) 2014-2017, Marvell International Ltd.
6  *
7  * This software file (the "File") is distributed by Marvell International
8  * Ltd. under the terms of the GNU General Public License Version 2, June 1991
9  * (the "License").  You may use, redistribute and/or modify this File in
10  * accordance with the terms and conditions of the License, a copy of which
11  * is available by writing to the Free Software Foundation, Inc.,
12  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
13  * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
14  *
15  * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
17  * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
18  * this warranty disclaimer.
19  */
20 
21 /******************************************************
22 Change log:
23     03/07/2014: Initial version
24 ******************************************************/
25 #ifndef PARSER_ROM_H__
26 #define PARSER_ROM_H__
27 #include "IEEE_types.h"
28 
29 typedef enum {
30 	VendSpecIE_Other = 0,
31 	VendSpecIE_WMM_Info,
32 	VendSpecIE_WMM_Param,
33 	VendSpecIE_WPA,
34 	VendSpecIE_WPS,
35 	VendSpecIE_TSPEC,
36 	VendSpecIE_SsIdL,
37 	VendSpecIE_WFD,
38 
39 	VendSpecIE_HT_Cap,
40 	VendSpecIE_HT_Info,
41 
42 } VendorSpecificIEType_e;
43 
44 typedef struct {
45 	/* IMPORTANT: please read before you modify this struct:
46 	   Some of the members of this struct are used in ROM code.
47 	   Therefore, please do not change any existing field, including
48 	   its name and type. If you want to add a new element into
49 	   this struct add it at the end.
50 	 */
51 	IEEEtypes_SsIdElement_t *pSsid;
52 	IEEEtypes_TimElement_t *pTim;
53 	IEEEtypes_WPAElement_t *pWpa;
54 	IEEEtypes_WMM_InfoElement_t *pWmmInfo;
55 	IEEEtypes_WMM_ParamElement_t *pWmmParam;
56 	IEEEtypes_DsParamElement_t *pDsParam;
57 	IEEEtypes_SuppRatesElement_t *pSupportedRates;
58 	IEEEtypes_ExtSuppRatesElement_t *pExtSupportedRates;
59 	IEEEtypes_ERPInfoElement_t *pErpInfo;
60 	IEEEtypes_IbssParamElement_t *pIbssParam;
61 	IEEEtypes_CountryInfoElement_t *pCountry;
62 
63 	IEEEtypes_MobilityDomainElement_t *pMdie;
64 
65 	IEEEtypes_RSNElement_t *pRsn;
66 
67 	IEEEtypes_HT_Capability_t *pHtCap;
68 	IEEEtypes_HT_Information_t *pHtInfo;
69 	IEEEtypes_20N40_BSS_Coexist_t *p2040Coexist;
70 	IEEEtypes_OBSS_ScanParam_t *pHtScanParam;
71 	IEEEtypes_ExtCapability_t *pExtCap;
72 
73 	IEEEtypes_WPSElement_t *pWps;
74 	IEEEtypes_WAPIElement_t *pWapi;
75 
76 } IEPointers_t;
77 
78 typedef struct {
79 	/* IMPORTANT: please read before you modify this struct:
80 	   Some of the members of this struct are used in ROM code.
81 	   Therefore, please do not change any existing field, including
82 	   its name and type. If you want to add a new element into
83 	   this struct add it at the end.
84 	 */
85 	IEEEtypes_SsIdElement_t *pSsid;
86 	IEEEtypes_TimElement_t *pTim;
87 	IEEEtypes_DsParamElement_t *pDsParam;
88 
89 	IEEEtypes_CountryInfoElement_t *pCountry;
90 
91 	UINT8 numSsIdLs;
92 	IEEEtypes_SsIdLElement_t *pSsIdL;	/* Only the first SSIDL found,
93 						 **   need iterator to get next since
94 						 **   multiple may be in beacon
95 						 */
96 } ScanIePointers_t;
97 
98 typedef struct {
99 	/* IMPORTANT: please read before you modify this struct:
100 	   Some of the members of this struct are used in ROM code.
101 	   Therefore, please do not change any existing field, including
102 	   its name and type. If you want to add a new element into
103 	   this struct add it at the end.
104 	 */
105 	IEEEtypes_SsIdElement_t *pSsid;
106 	IEEEtypes_DsParamElement_t *pDsParam;
107 
108 	IEEEtypes_CountryInfoElement_t *pCountry;
109 	IEEEtypes_ApChanRptElement_t *pApChanRpt;
110 	IEEEtypes_PowerConstraintElement_t *pPwrCon;
111 
112 	IEEEtypes_SuppRatesElement_t *pSupportedRates;
113 	IEEEtypes_ExtSuppRatesElement_t *pExtSupportedRates;
114 
115 	IEEEtypes_WPAElement_t *pWpa;
116 	IEEEtypes_WMM_InfoElement_t *pWmmInfo;
117 	IEEEtypes_WMM_ParamElement_t *pWmmParam;
118 
119 	IEEEtypes_MobilityDomainElement_t *pMdie;
120 
121 	IEEEtypes_RSNElement_t *pRsn;
122 
123 	IEEEtypes_HT_Information_t *pHtInfo;
124 	IEEEtypes_HT_Capability_t *pHtCap;
125 	IEEEtypes_20N40_BSS_Coexist_t *p2040Coexist;
126 	IEEEtypes_OBSS_ScanParam_t *pHtScanParam;
127 	IEEEtypes_ExtCapability_t *pExtCap;
128 
129 } AssocIePointers_t;
130 extern BOOLEAN ROM_parser_getIEPtr(void *priv, uint8 *pIe,
131 				   IEPointers_t *pIePointers);
132 extern BOOLEAN ROM_parser_getAssocIEPtr(void *priv, uint8 *pIe,
133 					AssocIePointers_t *pIePointers);
134 
135 #endif // _PARSER_ROM_H_
136