support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / mt5931_kk / drv_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
104     IN P_ADAPTER_T prAdapter,
105     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
106     IN P_STA_RECORD_T prStaRec
107     );
108
109
110 VOID
111 p2pGenerate_IEForAssocReq(
112
113
114     IN P_ADAPTER_T prAdapter,
115     IN P_MSDU_INFO_T prMsduInfo
116     );
117
118
119 #if CFG_SUPPORT_WFD
120
121 UINT_32
122 wfdFuncAppendAttriDevInfo(
123     IN P_ADAPTER_T prAdapter,
124     IN BOOLEAN fgIsAssocFrame,
125     IN PUINT_16 pu2Offset,
126     IN PUINT_8 pucBuf,
127     IN UINT_16 u2BufSize
128     );
129
130 UINT_32
131 wfdFuncAppendAttriAssocBssid(
132     IN P_ADAPTER_T prAdapter,
133     IN BOOLEAN fgIsAssocFrame,
134     IN PUINT_16 pu2Offset,
135     IN PUINT_8 pucBuf,
136     IN UINT_16 u2BufSize
137     );
138
139 UINT_32
140 wfdFuncAppendAttriCoupledSinkInfo(
141     IN P_ADAPTER_T prAdapter,
142     IN BOOLEAN fgIsAssocFrame,
143     IN PUINT_16 pu2Offset,
144     IN PUINT_8 pucBuf,
145     IN UINT_16 u2BufSize
146     );
147
148 UINT_32
149 wfdFuncAppendAttriExtCapability(
150     IN P_ADAPTER_T prAdapter,
151     IN BOOLEAN fgIsAssocFrame,
152     IN PUINT_16 pu2Offset,
153     IN PUINT_8 pucBuf,
154     IN UINT_16 u2BufSize
155     );
156
157 UINT_32
158 wfdFuncCalculateAttriLenSessionInfo(
159     IN P_ADAPTER_T prAdapter,
160     IN P_STA_RECORD_T prStaRec
161     );
162
163 UINT_32
164 wfdFuncAppendAttriSessionInfo(
165     IN P_ADAPTER_T prAdapter,
166     IN BOOLEAN fgIsAssocFrame,
167     IN PUINT_16 pu2Offset,
168     IN PUINT_8 pucBuf,
169     IN UINT_16 u2BufSize
170     );
171
172 UINT_32
173 wfdFuncCalculateWfdIELenForProbeResp(
174     IN P_ADAPTER_T prAdapter,
175     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
176     IN P_STA_RECORD_T prStaRec
177     );
178
179 VOID
180 wfdFuncGenerateWfdIEForProbeResp(
181     IN  P_ADAPTER_T       prAdapter,
182     IN  P_MSDU_INFO_T     prMsduInfo
183     );
184
185
186 UINT_32
187 wfdFuncCalculateWfdIELenForAssocReq(
188     IN P_ADAPTER_T prAdapter,
189     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
190     IN P_STA_RECORD_T prStaRec
191     );
192
193
194 VOID
195 wfdFuncGenerateWfdIEForAssocReq(
196     IN  P_ADAPTER_T       prAdapter,
197     IN  P_MSDU_INFO_T     prMsduInfo
198     );
199
200 UINT_32
201 wfdFuncCalculateWfdIELenForAssocRsp(
202     IN P_ADAPTER_T prAdapter,
203     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
204     IN P_STA_RECORD_T prStaRec
205     );
206
207
208 VOID
209 wfdFuncGenerateWfdIEForAssocRsp(
210     IN  P_ADAPTER_T       prAdapter,
211     IN  P_MSDU_INFO_T     prMsduInfo
212     );
213
214
215 UINT_32
216 wfdFuncCalculateWfdIELenForBeacon(
217     IN P_ADAPTER_T prAdapter,
218     IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
219     IN P_STA_RECORD_T prStaRec
220     );
221
222
223 VOID
224 wfdFuncGenerateWfdIEForBeacon(
225     IN  P_ADAPTER_T       prAdapter,
226     IN  P_MSDU_INFO_T     prMsduInfo
227     );
228
229
230 #endif
231
232
233
234 #endif