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(
103 IN P_ADAPTER_T prAdapter,
104 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
105 IN P_STA_RECORD_T prStaRec
110 p2pGenerate_IEForAssocReq(
112 IN P_ADAPTER_T prAdapter,
113 IN P_MSDU_INFO_T prMsduInfo
120 wfdFuncAppendAttriDevInfo(
121 IN P_ADAPTER_T prAdapter,
122 IN BOOLEAN fgIsAssocFrame,
123 IN PUINT_16 pu2Offset,
129 wfdFuncAppendAttriAssocBssid(
130 IN P_ADAPTER_T prAdapter,
131 IN BOOLEAN fgIsAssocFrame,
132 IN PUINT_16 pu2Offset,
138 wfdFuncAppendAttriCoupledSinkInfo(
139 IN P_ADAPTER_T prAdapter,
140 IN BOOLEAN fgIsAssocFrame,
141 IN PUINT_16 pu2Offset,
147 wfdFuncAppendAttriExtCapability(
148 IN P_ADAPTER_T prAdapter,
149 IN BOOLEAN fgIsAssocFrame,
150 IN PUINT_16 pu2Offset,
156 wfdFuncCalculateAttriLenSessionInfo(
157 IN P_ADAPTER_T prAdapter,
158 IN P_STA_RECORD_T prStaRec
162 wfdFuncAppendAttriSessionInfo(
163 IN P_ADAPTER_T prAdapter,
164 IN BOOLEAN fgIsAssocFrame,
165 IN PUINT_16 pu2Offset,
171 wfdFuncCalculateWfdIELenForProbeResp(
172 IN P_ADAPTER_T prAdapter,
173 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
174 IN P_STA_RECORD_T prStaRec
178 wfdFuncGenerateWfdIEForProbeResp(
179 IN P_ADAPTER_T prAdapter,
180 IN P_MSDU_INFO_T prMsduInfo
185 wfdFuncCalculateWfdIELenForAssocReq(
186 IN P_ADAPTER_T prAdapter,
187 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
188 IN P_STA_RECORD_T prStaRec
193 wfdFuncGenerateWfdIEForAssocReq(
194 IN P_ADAPTER_T prAdapter,
195 IN P_MSDU_INFO_T prMsduInfo
199 wfdFuncCalculateWfdIELenForAssocRsp(
200 IN P_ADAPTER_T prAdapter,
201 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
202 IN P_STA_RECORD_T prStaRec
207 wfdFuncGenerateWfdIEForAssocRsp(
208 IN P_ADAPTER_T prAdapter,
209 IN P_MSDU_INFO_T prMsduInfo
214 wfdFuncCalculateWfdIELenForBeacon(
215 IN P_ADAPTER_T prAdapter,
216 IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex,
217 IN P_STA_RECORD_T prStaRec
222 wfdFuncGenerateWfdIEForBeacon(
223 IN P_ADAPTER_T prAdapter,
224 IN P_MSDU_INFO_T prMsduInfo