support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / combo_mt66xx / mt6628 / wlan / include / mgmt / p2p_ie.h
1 #ifndef _P2P_IE_H
2 #define _P2P_IE_H
3
4 #if CFG_SUPPORT_WFD
5
6 #define ELEM_MAX_LEN_WFD 62             // TODO: Move to appropriate place
7
8
9 /*---------------- WFD Data Element Definitions ----------------*/
10 /* WFD 4.1.1 - WFD IE format */
11 #define WFD_OUI_TYPE_LEN                            4
12 #define WFD_IE_OUI_HDR                              (ELEM_HDR_LEN + WFD_OUI_TYPE_LEN) /* == OFFSET_OF(IE_P2P_T, aucP2PAttributes[0]) */
13
14 /* WFD 4.1.1 - General WFD Attribute */
15 #define WFD_ATTRI_HDR_LEN                           3 /* ID(1 octet) + Length(2 octets) */
16
17 /* WFD Attribute Code */
18 #define WFD_ATTRI_ID_DEV_INFO                                 0
19 #define WFD_ATTRI_ID_ASSOC_BSSID                          1
20 #define WFD_ATTRI_ID_COUPLED_SINK_INFO                 6
21 #define WFD_ATTRI_ID_EXT_CAPABILITY                        7
22 #define WFD_ATTRI_ID_SESSION_INFO                           9
23 #define WFD_ATTRI_ID_ALTER_MAC_ADDRESS                10
24
25 /* Maximum Length of WFD Attributes */
26 #define WFD_ATTRI_MAX_LEN_DEV_INFO                              6 /* 0 */
27 #define WFD_ATTRI_MAX_LEN_ASSOC_BSSID                       6 /* 1 */
28 #define WFD_ATTRI_MAX_LEN_COUPLED_SINK_INFO              7 /* 6 */
29 #define WFD_ATTRI_MAX_LEN_EXT_CAPABILITY                     2 /* 7 */
30 #define WFD_ATTRI_MAX_LEN_SESSION_INFO                      0 /* 9 */ /* 24 * #Clients */
31 #define WFD_ATTRI_MAX_LEN_ALTER_MAC_ADDRESS            6 /* 10 */
32
33
34
35
36
37 /* WFD 1.10 5.1.1 */
38 typedef struct _IE_WFD_T {
39     UINT_8      ucId;                   /* Element ID */
40     UINT_8      ucLength;               /* Length */
41     UINT_8      aucOui[3];              /* OUI */
42     UINT_8      ucOuiType;              /* OUI Type */
43     UINT_8      aucWFDAttributes[1];    /* WFD Subelement */
44 } __KAL_ATTRIB_PACKED__ IE_WFD_T, *P_IE_WFD_T;
45
46 typedef struct _WFD_ATTRIBUTE_T {
47     UINT_8     ucElemID;                   /* Subelement ID */
48     UINT_16   u2Length;               /* Length */
49     UINT_8     aucBody[1];             /* Body field */
50 } __KAL_ATTRIB_PACKED__ WFD_ATTRIBUTE_T, *P_WFD_ATTRIBUTE_T;
51
52 typedef struct _WFD_DEVICE_INFORMATION_IE_T {
53     UINT_8 ucElemID;
54     UINT_16 u2Length;
55     UINT_16 u2WfdDevInfo;
56     UINT_16 u2SessionMgmtCtrlPort;
57     UINT_16 u2WfdDevMaxSpeed;
58 } __KAL_ATTRIB_PACKED__ WFD_DEVICE_INFORMATION_IE_T, *P_WFD_DEVICE_INFORMATION_IE_T;
59
60 typedef struct _WFD_ASSOCIATED_BSSID_IE_T {
61     UINT_8 ucElemID;
62     UINT_16 u2Length;
63     UINT_8 aucAssocBssid[MAC_ADDR_LEN];
64 } __KAL_ATTRIB_PACKED__ WFD_ASSOCIATED_BSSID_IE_T, *P_WFD_ASSOCIATED_BSSID_IE_T;
65
66 typedef struct _WFD_COUPLE_SINK_INFORMATION_IE_T {
67     UINT_8 ucElemID;
68     UINT_16 u2Length;
69     UINT_8 ucCoupleSinkStatusBp;
70     UINT_8 aucCoupleSinkMac[MAC_ADDR_LEN];
71 } __KAL_ATTRIB_PACKED__ WFD_COUPLE_SINK_INFORMATION_IE_T, *P_WFD_COUPLE_SINK_INFORMATION_IE_T;
72
73 typedef struct _WFD_EXTENDED_CAPABILITY_IE_T {
74     UINT_8 ucElemID;
75     UINT_16 u2Length;
76     UINT_16 u2WfdExtCapabilityBp;
77 }
78 __KAL_ATTRIB_PACKED__ WFD_EXTENDED_CAPABILITY_IE_T, *P_WFD_EXTENDED_CAPABILITY_IE_T;
79
80 typedef struct _WFD_SESSION_INFORMATION_IE_T {
81     UINT_8 ucElemID;
82     UINT_16 u2Length;
83     PUINT_8 pucWfdDevInfoDesc[1];
84 } __KAL_ATTRIB_PACKED__ WFD_SESSION_INFORMATION_IE_T, *P_WFD_SESSION_INFORMATION_IE_T;
85
86 typedef struct _WFD_DEVICE_INFORMATION_DESCRIPTOR_T {
87     UINT_8 ucLength;
88     UINT_8 aucDevAddr[MAC_ADDR_LEN];
89     UINT_8 aucAssocBssid[MAC_ADDR_LEN];
90     UINT_16 u2WfdDevInfo;
91     UINT_16 u2WfdDevMaxSpeed;
92     UINT_8 ucCoupleSinkStatusBp;
93     UINT_8 aucCoupleSinkMac[MAC_ADDR_LEN];
94 } __KAL_ATTRIB_PACKED__ WFD_DEVICE_INFORMATION_DESCRIPTOR_T, *P_WFD_DEVICE_INFORMATION_DESCRIPTOR_T;
95
96
97 #endif
98
99
100 UINT_32
101 p2pCalculate_IEForAssocReq(
102
103     IN P_ADAPTER_T prAdapter,
104     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
105     IN P_STA_RECORD_T prStaRec
106     );
107
108
109 VOID
110 p2pGenerate_IEForAssocReq(
111
112     IN P_ADAPTER_T prAdapter,
113     IN P_MSDU_INFO_T prMsduInfo
114     );
115
116
117 #if CFG_SUPPORT_WFD
118
119 UINT_32
120 wfdFuncAppendAttriDevInfo(
121     IN P_ADAPTER_T prAdapter,
122     IN BOOLEAN fgIsAssocFrame,
123     IN PUINT_16 pu2Offset,
124     IN PUINT_8 pucBuf,
125     IN UINT_16 u2BufSize
126     );
127
128 UINT_32
129 wfdFuncAppendAttriAssocBssid(
130     IN P_ADAPTER_T prAdapter,
131     IN BOOLEAN fgIsAssocFrame,
132     IN PUINT_16 pu2Offset,
133     IN PUINT_8 pucBuf,
134     IN UINT_16 u2BufSize
135     );
136
137 UINT_32
138 wfdFuncAppendAttriCoupledSinkInfo(
139     IN P_ADAPTER_T prAdapter,
140     IN BOOLEAN fgIsAssocFrame,
141     IN PUINT_16 pu2Offset,
142     IN PUINT_8 pucBuf,
143     IN UINT_16 u2BufSize
144     );
145
146 UINT_32
147 wfdFuncAppendAttriExtCapability(
148     IN P_ADAPTER_T prAdapter,
149     IN BOOLEAN fgIsAssocFrame,
150     IN PUINT_16 pu2Offset,
151     IN PUINT_8 pucBuf,
152     IN UINT_16 u2BufSize
153     );
154
155 UINT_32
156 wfdFuncCalculateAttriLenSessionInfo(
157     IN P_ADAPTER_T prAdapter,
158     IN P_STA_RECORD_T prStaRec
159     );
160
161 UINT_32
162 wfdFuncAppendAttriSessionInfo(
163     IN P_ADAPTER_T prAdapter,
164     IN BOOLEAN fgIsAssocFrame,
165     IN PUINT_16 pu2Offset,
166     IN PUINT_8 pucBuf,
167     IN UINT_16 u2BufSize
168     );
169
170 UINT_32
171 wfdFuncCalculateWfdIELenForProbeResp(
172     IN P_ADAPTER_T prAdapter,
173     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
174     IN P_STA_RECORD_T prStaRec
175     );
176
177 VOID
178 wfdFuncGenerateWfdIEForProbeResp(
179     IN  P_ADAPTER_T       prAdapter,
180     IN  P_MSDU_INFO_T     prMsduInfo
181     );
182
183
184 UINT_32
185 wfdFuncCalculateWfdIELenForAssocReq(
186     IN P_ADAPTER_T prAdapter,
187     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
188     IN P_STA_RECORD_T prStaRec
189     );
190
191
192 VOID
193 wfdFuncGenerateWfdIEForAssocReq(
194     IN  P_ADAPTER_T       prAdapter,
195     IN  P_MSDU_INFO_T     prMsduInfo
196     );
197
198 UINT_32
199 wfdFuncCalculateWfdIELenForAssocRsp(
200     IN P_ADAPTER_T prAdapter,
201     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
202     IN P_STA_RECORD_T prStaRec
203     );
204
205
206 VOID
207 wfdFuncGenerateWfdIEForAssocRsp(
208     IN  P_ADAPTER_T       prAdapter,
209     IN  P_MSDU_INFO_T     prMsduInfo
210     );
211
212
213 UINT_32
214 wfdFuncCalculateWfdIELenForBeacon(
215     IN P_ADAPTER_T prAdapter,
216     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
217     IN P_STA_RECORD_T prStaRec
218     );
219
220
221 VOID
222 wfdFuncGenerateWfdIEForBeacon(
223     IN  P_ADAPTER_T       prAdapter,
224     IN  P_MSDU_INFO_T     prMsduInfo
225     );
226
227
228 #endif
229
230
231
232 #endif