Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | #ifndef _P2P_ROLE_H |
2 | #define _P2P_ROLE_H | |
3 | ||
4 | ||
5 | typedef enum _ENUM_BUFFER_TYPE_T { | |
6 | ENUM_FRAME_TYPE_EXTRA_IE_BEACON, | |
7 | ENUM_FRAME_TYPE_EXTRA_IE_ASSOC_RSP, | |
8 | ENUM_FRAME_TYPE_EXTRA_IE_PROBE_RSP, | |
9 | ENUM_FRAME_TYPE_PROBE_RSP_TEMPLATE, | |
10 | ENUM_FRAME_TYPE_BEACON_TEMPLATE, | |
11 | ENUM_FRAME_IE_NUM | |
12 | } ENUM_BUFFER_TYPE_T, *P_ENUM_BUFFER_TYPE_T; | |
13 | ||
14 | typedef enum _ENUM_HIDDEN_SSID_TYPE_T { | |
15 | ENUM_HIDDEN_SSID_NONE, | |
16 | ENUM_HIDDEN_SSID_LEN, | |
17 | ENUM_HIDDEN_SSID_ZERO_CONTENT, | |
18 | ENUM_HIDDEN_SSID_NUM | |
19 | } ENUM_HIDDEN_SSID_TYPE_T, *P_ENUM_HIDDEN_SSID_TYPE_T; | |
20 | ||
21 | ||
22 | typedef struct _P2P_BEACON_UPDATE_INFO_T { | |
23 | PUINT_8 pucBcnHdr; | |
24 | UINT_32 u4BcnHdrLen; | |
25 | PUINT_8 pucBcnBody; | |
26 | UINT_32 u4BcnBodyLen; | |
27 | } P2P_BEACON_UPDATE_INFO_T, *P_P2P_BEACON_UPDATE_INFO_T; | |
28 | ||
29 | typedef struct _P2P_PROBE_RSP_UPDATE_INFO_T { | |
30 | P_MSDU_INFO_T prProbeRspMsduTemplate; | |
31 | } P2P_PROBE_RSP_UPDATE_INFO_T, *P_P2P_PROBE_RSP_UPDATE_INFO_T; | |
32 | ||
33 | typedef struct _P2P_ASSOC_RSP_UPDATE_INFO_T { | |
34 | PUINT_8 pucAssocRspExtIE; | |
35 | UINT_16 u2AssocIELen; | |
36 | } P2P_ASSOC_RSP_UPDATE_INFO_T, *P_P2P_ASSOC_RSP_UPDATE_INFO_T; | |
37 | ||
38 | ||
39 | typedef struct _AP_CRYPTO_SETTINGS_T { | |
40 | UINT_32 u4WpaVersion; | |
41 | UINT_32 u4CipherGroup; | |
42 | INT_32 i4NumOfCiphers; | |
43 | UINT_32 aucCiphersPairwise[5]; | |
44 | INT_32 i4NumOfAkmSuites; | |
45 | UINT_32 aucAkmSuites[2]; | |
46 | BOOLEAN fgIsControlPort; | |
47 | UINT_16 u2ControlPortBE; | |
48 | BOOLEAN fgIsControlPortEncrypt; | |
49 | } AP_CRYPTO_SETTINGS_T, *P_AP_CRYPTO_SETTINGS_T; | |
50 | ||
51 | /* ////////////////////////////////// Message //////////////////////////////////////////////////// */ | |
52 | ||
53 | typedef struct _MSG_P2P_BEACON_UPDATE_T { | |
54 | MSG_HDR_T rMsgHdr; | |
55 | UINT_8 ucRoleIndex; | |
56 | UINT_32 u4BcnHdrLen; | |
57 | UINT_32 u4BcnBodyLen; | |
58 | PUINT_8 pucBcnHdr; | |
59 | PUINT_8 pucBcnBody; | |
60 | UINT_8 aucBuffer[1]; /* Header & Body are put here. */ | |
61 | } MSG_P2P_BEACON_UPDATE_T, *P_MSG_P2P_BEACON_UPDATE_T; | |
62 | ||
63 | typedef struct _MSG_P2P_MGMT_FRAME_UPDATE_T { | |
64 | MSG_HDR_T rMsgHdr; | |
65 | ENUM_BUFFER_TYPE_T eBufferType; | |
66 | UINT_32 u4BufferLen; | |
67 | UINT_8 aucBuffer[1]; | |
68 | } MSG_P2P_MGMT_FRAME_UPDATE_T, *P_MSG_P2P_MGMT_FRAME_UPDATE_T; | |
69 | ||
70 | ||
71 | typedef struct _MSG_P2P_SWITCH_OP_MODE_T { | |
72 | MSG_HDR_T rMsgHdr;/* Must be the first member */ | |
73 | ENUM_OP_MODE_T eOpMode; | |
74 | UINT_8 ucRoleIdx; | |
75 | } MSG_P2P_SWITCH_OP_MODE_T, *P_MSG_P2P_SWITCH_OP_MODE_T; | |
76 | ||
77 | typedef struct _MSG_P2P_MGMT_FRAME_REGISTER_T { | |
78 | MSG_HDR_T rMsgHdr;/* Must be the first member */ | |
79 | UINT_16 u2FrameType; | |
80 | BOOLEAN fgIsRegister; | |
81 | } MSG_P2P_MGMT_FRAME_REGISTER_T, *P_MSG_P2P_MGMT_FRAME_REGISTER_T; | |
82 | ||
83 | typedef struct _MSG_P2P_CHNL_ABORT_T { | |
84 | MSG_HDR_T rMsgHdr;/* Must be the first member */ | |
85 | UINT_64 u8Cookie; | |
86 | } MSG_P2P_CHNL_ABORT_T, *P_MSG_P2P_CHNL_ABORT_T; | |
87 | ||
88 | ||
89 | typedef struct _MSG_P2P_CONNECTION_REQUEST_T { | |
90 | MSG_HDR_T rMsgHdr;/* Must be the first member */ | |
91 | UINT_8 ucRoleIdx; | |
92 | P2P_SSID_STRUCT_T rSsid; | |
93 | UINT_8 aucBssid[MAC_ADDR_LEN]; | |
94 | ENUM_CHNL_EXT_T eChnlSco; | |
95 | RF_CHANNEL_INFO_T rChannelInfo; | |
96 | UINT_32 u4IELen; | |
97 | UINT_8 aucIEBuf[1]; | |
98 | /* TODO: Auth Type, OPEN, SHARED, FT, EAP... */ | |
99 | } MSG_P2P_CONNECTION_REQUEST_T, *P_MSG_P2P_CONNECTION_REQUEST_T; | |
100 | ||
101 | ||
102 | typedef struct _MSG_P2P_CONNECTION_ABORT_T { | |
103 | MSG_HDR_T rMsgHdr;/* Must be the first member. */ | |
104 | UINT_8 ucRoleIdx; | |
105 | UINT_8 aucTargetID[MAC_ADDR_LEN]; | |
106 | UINT_16 u2ReasonCode; | |
107 | BOOLEAN fgSendDeauth; | |
108 | } MSG_P2P_CONNECTION_ABORT_T, *P_MSG_P2P_CONNECTION_ABORT_T; | |
109 | ||
110 | ||
111 | typedef struct _MSG_P2P_START_AP_T { | |
112 | MSG_HDR_T rMsgHdr; | |
113 | UINT_32 u4DtimPeriod; | |
114 | UINT_32 u4BcnInterval; | |
115 | UINT_8 aucSsid[32]; | |
116 | UINT_16 u2SsidLen; | |
117 | UINT_8 ucHiddenSsidType; | |
118 | BOOLEAN fgIsPrivacy; | |
119 | UINT_8 ucRoleIdx; | |
120 | AP_CRYPTO_SETTINGS_T rEncryptionSettings; | |
121 | INT_32 i4InactiveTimeout; | |
122 | } MSG_P2P_START_AP_T, *P_MSG_P2P_START_AP_T; | |
123 | ||
124 | ||
125 | typedef struct _P2P_STATION_INFO_T { | |
126 | UINT_32 u4InactiveTime; | |
127 | UINT_32 u4RxBytes; /* TODO: */ | |
128 | UINT_32 u4TxBytes; /* TODO: */ | |
129 | UINT_32 u4RxPackets; /* TODO: */ | |
130 | UINT_32 u4TxPackets; /* TODO: */ | |
131 | /* TODO: Add more for requirement. */ | |
132 | } P2P_STATION_INFO_T, *P_P2P_STATION_INFO_T; | |
133 | ||
134 | ||
135 | ||
136 | /* 3 --------------- WFA P2P Attributes Handler prototype --------------- */ | |
137 | typedef UINT_32 (*PFN_APPEND_ATTRI_FUNC) (P_ADAPTER_T, BOOLEAN, PUINT_16, PUINT_8, UINT_16); | |
138 | ||
139 | typedef UINT_32 (*PFN_CALCULATE_VAR_ATTRI_LEN_FUNC) (P_ADAPTER_T, P_STA_RECORD_T); | |
140 | ||
141 | ||
142 | typedef struct _APPEND_VAR_ATTRI_ENTRY_T { | |
143 | UINT_16 u2EstimatedFixedAttriLen; /* For fixed length */ | |
144 | PFN_CALCULATE_VAR_ATTRI_LEN_FUNC pfnCalculateVariableAttriLen; | |
145 | PFN_APPEND_ATTRI_FUNC pfnAppendAttri; | |
146 | } APPEND_VAR_ATTRI_ENTRY_T, *P_APPEND_VAR_ATTRI_ENTRY_T; | |
147 | ||
148 | /* //////////////////////////////////////////////////////////////// */ | |
149 | ||
150 | ||
151 | typedef enum _ENUM_P2P_ROLE_STATE_T { | |
152 | P2P_ROLE_STATE_IDLE = 0, | |
153 | P2P_ROLE_STATE_SCAN, | |
154 | P2P_ROLE_STATE_REQING_CHANNEL, | |
155 | P2P_ROLE_STATE_AP_CHNL_DETECTION, /* Requesting Channel to Send Specific Frame. */ | |
156 | P2P_ROLE_STATE_GC_JOIN, | |
157 | P2P_ROLE_STATE_NUM | |
158 | } ENUM_P2P_ROLE_STATE_T, *P_ENUM_P2P_ROLE_STATE_T; | |
159 | ||
160 | typedef enum _ENUM_P2P_CONNECTION_TYPE_T { | |
161 | P2P_CONNECTION_TYPE_IDLE = 0, | |
162 | P2P_CONNECTION_TYPE_GO, | |
163 | P2P_CONNECTION_TYPE_GC, | |
164 | P2P_CONNECTION_TYPE_PURE_AP, | |
165 | P2P_CONNECTION_TYPE_NUM | |
166 | } ENUM_P2P_CONNECTION_TYPE_T, *P_ENUM_P2P_CONNECTION_TYPE_T; | |
167 | ||
168 | typedef struct _P2P_JOIN_INFO_T { | |
169 | UINT_32 ucSeqNumOfReqMsg; | |
170 | UINT_8 ucAvailableAuthTypes; | |
171 | P_STA_RECORD_T prTargetStaRec; | |
172 | P_BSS_DESC_T prTargetBssDesc; | |
173 | BOOLEAN fgIsJoinComplete; | |
174 | /* For ASSOC Rsp. */ | |
175 | UINT_32 u4BufLength; | |
176 | UINT_8 aucIEBuf[MAX_IE_LENGTH]; | |
177 | } P2P_JOIN_INFO_T, *P_P2P_JOIN_INFO_T; | |
178 | ||
179 | /* For STA & AP mode. */ | |
180 | typedef struct _P2P_CONNECTION_REQ_INFO_T { | |
181 | ENUM_P2P_CONNECTION_TYPE_T eConnRequest; | |
182 | P2P_SSID_STRUCT_T rSsidStruct; | |
183 | UINT_8 aucBssid[MAC_ADDR_LEN]; | |
184 | ||
185 | /* AP preferred channel. */ | |
186 | RF_CHANNEL_INFO_T rChannelInfo; | |
187 | ENUM_CHNL_EXT_T eChnlExt; | |
188 | ||
189 | /* For ASSOC Req. */ | |
190 | UINT_32 u4BufLength; | |
191 | UINT_8 aucIEBuf[MAX_IE_LENGTH]; | |
192 | } P2P_CONNECTION_REQ_INFO_T, *P_P2P_CONNECTION_REQ_INFO_T; | |
193 | ||
194 | ||
195 | #define P2P_ROLE_INDEX_2_ROLE_FSM_INFO(_prAdapter, _RoleIndex) \ | |
196 | ((_prAdapter)->rWifiVar.aprP2pRoleFsmInfo[_RoleIndex]) | |
197 | ||
198 | struct _P2P_ROLE_FSM_INFO_T { | |
199 | UINT_8 ucRoleIndex; | |
200 | ||
201 | UINT_8 ucBssIndex; | |
202 | ||
203 | /* State related. */ | |
204 | ENUM_P2P_ROLE_STATE_T eCurrentState; | |
205 | ||
206 | /* Channel related. */ | |
207 | P2P_CHNL_REQ_INFO_T rChnlReqInfo; | |
208 | ||
209 | /* Scan related. */ | |
210 | P2P_SCAN_REQ_INFO_T rScanReqInfo; | |
211 | ||
212 | /* FSM Timer */ | |
213 | TIMER_T rP2pRoleFsmTimeoutTimer; | |
214 | ||
215 | /* Packet filter for P2P module. */ | |
216 | UINT_32 u4P2pPacketFilter; | |
217 | ||
218 | /* GC Join related. */ | |
219 | P2P_JOIN_INFO_T rJoinInfo; | |
220 | ||
221 | /* Connection related. */ | |
222 | P2P_CONNECTION_REQ_INFO_T rConnReqInfo; | |
223 | ||
224 | /* Beacon Information. */ | |
225 | P2P_BEACON_UPDATE_INFO_T rBeaconUpdateInfo; | |
226 | }; | |
227 | ||
228 | /*========================= Initial ============================*/ | |
229 | ||
230 | ||
231 | UINT_8 p2pRoleFsmInit(IN P_ADAPTER_T prAdapter, IN UINT_8 ucRoleIdx); | |
232 | ||
233 | ||
234 | VOID p2pRoleFsmUninit(IN P_ADAPTER_T prAdapter, IN UINT_8 ucRoleIdx); | |
235 | ||
236 | /*================== Message Event ==================*/ | |
237 | ||
238 | VOID p2pRoleFsmRunEventAbort(IN P_ADAPTER_T prAdapter, IN P_P2P_ROLE_FSM_INFO_T prP2pRoleFsmInfo); | |
239 | ||
240 | ||
241 | VOID p2pRoleFsmRunEventStartAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
242 | ||
243 | ||
244 | VOID p2pRoleFsmRunEventStopAP(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
245 | ||
246 | VOID p2pRoleFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
247 | ||
248 | ||
249 | VOID | |
250 | p2pRoleFsmRunEventScanDone(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr, IN P_P2P_ROLE_FSM_INFO_T | |
251 | prP2pRoleFsmInfo); | |
252 | ||
253 | ||
254 | ||
255 | VOID p2pRoleFsmRunEventJoinComplete(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
256 | ||
257 | VOID p2pRoleFsmRunEventTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr); | |
258 | ||
259 | ||
260 | ||
261 | VOID p2pRoleFsmRunEventBeaconTimeout(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo); | |
262 | ||
263 | WLAN_STATUS | |
264 | p2pRoleFsmRunEventAAAComplete(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_BSS_INFO_T prP2pBssInfo); | |
265 | ||
266 | ||
267 | WLAN_STATUS | |
268 | p2pRoleFsmRunEventAAASuccess(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_BSS_INFO_T prP2pBssInfo); | |
269 | ||
270 | VOID | |
271 | p2pRoleFsmRunEventAAATxFail(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_BSS_INFO_T prP2pBssInfo); | |
272 | ||
273 | VOID p2pRoleFsmRunEventConnectionRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
274 | ||
275 | VOID p2pRoleFsmRunEventConnectionAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
276 | ||
277 | ||
278 | VOID | |
279 | p2pRoleFsmRunEventChnlGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr, IN P_P2P_ROLE_FSM_INFO_T | |
280 | prP2pRoleFsmInfo); | |
281 | ||
282 | WLAN_STATUS | |
283 | p2pRoleFsmRunEventDeauthTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T | |
284 | rTxDoneStatus); | |
285 | ||
286 | ||
287 | VOID | |
288 | p2pRoleFsmRunEventRxDeauthentication(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb); | |
289 | ||
290 | VOID | |
291 | p2pRoleFsmRunEventRxDisassociation(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN P_SW_RFB_T prSwRfb); | |
292 | ||
293 | /* //////////////////////// TO BE REFINE ///////////////////// */ | |
294 | VOID p2pRoleFsmRunEventSwitchOPMode(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
295 | ||
296 | VOID p2pFsmRunEventBeaconUpdate(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
297 | ||
298 | VOID p2pRoleFsmRunEventDissolve(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr); | |
299 | ||
300 | ||
301 | VOID | |
302 | p2pProcessEvent_UpdateNOAParam(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIdx, IN P_EVENT_UPDATE_NOA_PARAMS_T | |
303 | prEventUpdateNoaParam); | |
304 | ||
305 | ||
306 | #endif |