6 #define ELEM_MAX_LEN_WFD 62 // TODO: Move to appropriate place
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]) */
14 /* WFD 4.1.1 - General WFD Attribute */
15 #define WFD_ATTRI_HDR_LEN 3 /* ID(1 octet) + Length(2 octets) */
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
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 */
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;
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;
52 typedef struct _WFD_DEVICE_INFORMATION_IE_T {
56 UINT_16 u2SessionMgmtCtrlPort;
57 UINT_16 u2WfdDevMaxSpeed;
58 } __KAL_ATTRIB_PACKED__ WFD_DEVICE_INFORMATION_IE_T, *P_WFD_DEVICE_INFORMATION_IE_T;
60 typedef struct _WFD_ASSOCIATED_BSSID_IE_T {
63 UINT_8 aucAssocBssid[MAC_ADDR_LEN];
64 } __KAL_ATTRIB_PACKED__ WFD_ASSOCIATED_BSSID_IE_T, *P_WFD_ASSOCIATED_BSSID_IE_T;
66 typedef struct _WFD_COUPLE_SINK_INFORMATION_IE_T {
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;
73 typedef struct _WFD_EXTENDED_CAPABILITY_IE_T {
76 UINT_16 u2WfdExtCapabilityBp;
78 __KAL_ATTRIB_PACKED__ WFD_EXTENDED_CAPABILITY_IE_T, *P_WFD_EXTENDED_CAPABILITY_IE_T;
80 typedef struct _WFD_SESSION_INFORMATION_IE_T {
83 PUINT_8 pucWfdDevInfoDesc[1];
84 } __KAL_ATTRIB_PACKED__ WFD_SESSION_INFORMATION_IE_T, *P_WFD_SESSION_INFORMATION_IE_T;
86 typedef struct _WFD_DEVICE_INFORMATION_DESCRIPTOR_T {
88 UINT_8 aucDevAddr[MAC_ADDR_LEN];
89 UINT_8 aucAssocBssid[MAC_ADDR_LEN];
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;
101 p2pCalculate_IEForAssocReq(
104 IN P_ADAPTER_T prAdapter,
105 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
106 IN P_STA_RECORD_T prStaRec
111 p2pGenerate_IEForAssocReq(
114 IN P_ADAPTER_T prAdapter,
115 IN P_MSDU_INFO_T prMsduInfo
122 wfdFuncAppendAttriDevInfo(
123 IN P_ADAPTER_T prAdapter,
124 IN BOOLEAN fgIsAssocFrame,
125 IN PUINT_16 pu2Offset,
131 wfdFuncAppendAttriAssocBssid(
132 IN P_ADAPTER_T prAdapter,
133 IN BOOLEAN fgIsAssocFrame,
134 IN PUINT_16 pu2Offset,
140 wfdFuncAppendAttriCoupledSinkInfo(
141 IN P_ADAPTER_T prAdapter,
142 IN BOOLEAN fgIsAssocFrame,
143 IN PUINT_16 pu2Offset,
149 wfdFuncAppendAttriExtCapability(
150 IN P_ADAPTER_T prAdapter,
151 IN BOOLEAN fgIsAssocFrame,
152 IN PUINT_16 pu2Offset,
158 wfdFuncCalculateAttriLenSessionInfo(
159 IN P_ADAPTER_T prAdapter,
160 IN P_STA_RECORD_T prStaRec
164 wfdFuncAppendAttriSessionInfo(
165 IN P_ADAPTER_T prAdapter,
166 IN BOOLEAN fgIsAssocFrame,
167 IN PUINT_16 pu2Offset,
173 wfdFuncCalculateWfdIELenForProbeResp(
174 IN P_ADAPTER_T prAdapter,
175 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
176 IN P_STA_RECORD_T prStaRec
180 wfdFuncGenerateWfdIEForProbeResp(
181 IN P_ADAPTER_T prAdapter,
182 IN P_MSDU_INFO_T prMsduInfo
187 wfdFuncCalculateWfdIELenForAssocReq(
188 IN P_ADAPTER_T prAdapter,
189 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
190 IN P_STA_RECORD_T prStaRec
195 wfdFuncGenerateWfdIEForAssocReq(
196 IN P_ADAPTER_T prAdapter,
197 IN P_MSDU_INFO_T prMsduInfo
201 wfdFuncCalculateWfdIELenForAssocRsp(
202 IN P_ADAPTER_T prAdapter,
203 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
204 IN P_STA_RECORD_T prStaRec
209 wfdFuncGenerateWfdIEForAssocRsp(
210 IN P_ADAPTER_T prAdapter,
211 IN P_MSDU_INFO_T prMsduInfo
216 wfdFuncCalculateWfdIELenForBeacon(
217 IN P_ADAPTER_T prAdapter,
218 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
219 IN P_STA_RECORD_T prStaRec
224 wfdFuncGenerateWfdIEForBeacon(
225 IN P_ADAPTER_T prAdapter,
226 IN P_MSDU_INFO_T prMsduInfo