2 ** $Id: //Department/DaVinci/BRANCHES/WIFI_P2P_DRIVER_V2_2/include/nic/p2p_mac.h#1 $
6 \brief Brief description.
12 /*******************************************************************************
13 * Copyright (c) 2010 MediaTek Inc.
15 * All rights reserved. Copying, compilation, modification, distribution
16 * or any other use whatsoever of this material is strictly prohibited
17 * except in accordance with a Software License Agreement with
19 ********************************************************************************
22 /*******************************************************************************
25 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
26 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
27 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
28 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
29 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
30 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
31 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
32 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
33 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
34 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
35 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
36 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
37 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
39 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
40 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
41 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
42 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
43 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
45 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
46 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
47 * OF LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
48 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
49 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
51 ********************************************************************************
58 /*******************************************************************************
59 * C O M P I L E R F L A G S
60 ********************************************************************************
63 /*******************************************************************************
64 * E X T E R N A L R E F E R E N C E S
65 ********************************************************************************
68 /*******************************************************************************
70 ********************************************************************************
73 #define ACTION_PUBLIC_WIFI_DIRECT 9
74 #define ACTION_GAS_INITIAL_REQUEST 10
75 #define ACTION_GAS_INITIAL_RESPONSE 11
76 #define ACTION_GAS_COMEBACK_REQUEST 12
77 #define ACTION_GAS_COMEBACK_RESPONSE 13
80 /* P2P 4.2.8.1 - P2P Public Action Frame Type. */
81 #define P2P_PUBLIC_ACTION_GO_NEGO_REQ 0
82 #define P2P_PUBLIC_ACTION_GO_NEGO_RSP 1
83 #define P2P_PUBLIC_ACTION_GO_NEGO_CFM 2
84 #define P2P_PUBLIC_ACTION_INVITATION_REQ 3
85 #define P2P_PUBLIC_ACTION_INVITATION_RSP 4
86 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_REQ 5
87 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_RSP 6
88 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_REQ 7
89 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_RSP 8
91 /* P2P 4.2.9.1 - P2P Action Frame Type */
92 #define P2P_ACTION_NOTICE_OF_ABSENCE 0
93 #define P2P_ACTION_P2P_PRESENCE_REQ 1
94 #define P2P_ACTION_P2P_PRESENCE_RSP 2
95 #define P2P_ACTION_GO_DISCOVER_REQ 3
97 #define P2P_PUBLIC_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+8)
98 #define P2P_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+7)
101 /*******************************************************************************
103 ********************************************************************************
106 /*******************************************************************************
108 ********************************************************************************
111 /*******************************************************************************
112 * P U B L I C D A T A
113 ********************************************************************************
116 /*******************************************************************************
117 * P R I V A T E D A T A
118 ********************************************************************************
121 /*******************************************************************************
122 * F U N C T I O N D E C L A R A T I O N S
123 ********************************************************************************
127 /* P2P 4.2.8.2 P2P Public Action Frame Format */
128 typedef struct _P2P_PUBLIC_ACTION_FRAME_T {
130 UINT_16 u2FrameCtrl; /* Frame Control */
131 UINT_16 u2Duration; /* Duration */
132 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
133 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
134 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
135 UINT_16 u2SeqCtrl; /* Sequence Control */
136 /* P2P Public Action Frame Body */
137 UINT_8 ucCategory; /* Category, 0x04 */
138 UINT_8 ucAction; /* Action Value, 0x09 */
139 UINT_8 aucOui[3]; /* 0x50, 0x6F, 0x9A */
140 UINT_8 ucOuiType; /* 0x09 */
141 UINT_8 ucOuiSubtype; /* GO Nego Req/Rsp/Cfm, P2P Invittion Req/Rsp, Device Discoverability Req/Rsp */
142 UINT_8 ucDialogToken; /* Dialog Token. */
143 UINT_8 aucInfoElem[1]; /* P2P IE, WSC IE. */
144 } __KAL_ATTRIB_PACKED__ P2P_PUBLIC_ACTION_FRAME_T, *P_P2P_PUBLIC_ACTION_FRAME_T;
147 /* P2P 4.2.9.1 - General Action Frame Format. */
148 typedef struct _P2P_ACTION_FRAME_T {
150 UINT_16 u2FrameCtrl; /* Frame Control */
151 UINT_16 u2Duration; /* Duration */
152 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
153 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
154 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
155 UINT_16 u2SeqCtrl; /* Sequence Control */
156 /* P2P Action Frame Body */
157 UINT_8 ucCategory; // 0x7F
158 UINT_8 aucOui[3]; // 0x50, 0x6F, 0x9A
159 UINT_8 ucOuiType; // 0x09
160 UINT_8 ucOuiSubtype; //
161 UINT_8 ucDialogToken;
162 UINT_8 aucInfoElem[1];
163 } __KAL_ATTRIB_PACKED__ P2P_ACTION_FRAME_T, *P_P2P_ACTION_FRAME_T;
165 /* P2P C.1 GAS Public Action Initial Request Frame Format */
166 typedef struct _GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T {
168 UINT_16 u2FrameCtrl; /* Frame Control */
169 UINT_16 u2Duration; /* Duration */
170 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
171 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
172 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
173 UINT_16 u2SeqCtrl; /* Sequence Control */
174 /* P2P Public Action Frame Body */
175 UINT_8 ucCategory; /* Category, 0x04 */
176 UINT_8 ucAction; /* Action Value, 0x09 */
177 UINT_8 ucDialogToken; /* Dialog Token. */
178 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
179 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T;
181 /* P2P C.2 GAS Public Action Initial Response Frame Format */
182 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
184 UINT_16 u2FrameCtrl; /* Frame Control */
185 UINT_16 u2Duration; /* Duration */
186 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
187 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
188 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
189 UINT_16 u2SeqCtrl; /* Sequence Control */
190 /* P2P Public Action Frame Body */
191 UINT_8 ucCategory; /* Category, 0x04 */
192 UINT_8 ucAction; /* Action Value, 0x09 */
193 UINT_8 ucDialogToken; /* Dialog Token. */
194 UINT_16 u2StatusCode; /* Initial Response. */
195 UINT_16 u2ComebackDelay; /* Initial Response. */ /* In unit of TU. */
196 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
197 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T;
200 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
201 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
203 UINT_16 u2FrameCtrl; /* Frame Control */
204 UINT_16 u2Duration; /* Duration */
205 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
206 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
207 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
208 UINT_16 u2SeqCtrl; /* Sequence Control */
209 /* P2P Public Action Frame Body */
210 UINT_8 ucCategory; /* Category, 0x04 */
211 UINT_8 ucAction; /* Action Value, 0x09 */
212 UINT_8 ucDialogToken; /* Dialog Token. */
213 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T;
215 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
216 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
218 UINT_16 u2FrameCtrl; /* Frame Control */
219 UINT_16 u2Duration; /* Duration */
220 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
221 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
222 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
223 UINT_16 u2SeqCtrl; /* Sequence Control */
224 /* P2P Public Action Frame Body */
225 UINT_8 ucCategory; /* Category, 0x04 */
226 UINT_8 ucAction; /* Action Value, 0x09 */
227 UINT_8 ucDialogToken; /* Dialog Token. */
228 UINT_16 u2StatusCode; /* Comeback Response. */
229 UINT_8 ucFragmentID; /*Comeback Response. */
230 UINT_16 u2ComebackDelay; /* Comeback Response. */
231 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
232 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T;
237 typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T {
238 /* Service Discovery Vendor-specific Content. */
239 UINT_8 ucOuiSubtype; // 0x09
240 UINT_16 u2ServiceUpdateIndicator;
241 UINT_8 aucServiceTLV[1];
242 } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T;
245 typedef struct _P2P_SERVICE_REQUEST_TLV_T {
247 UINT_8 ucServiceProtocolType;
248 UINT_8 ucServiceTransID;
249 UINT_8 aucQueryData[1];
250 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T, *P_P2P_SERVICE_REQUEST_TLV_T;
254 typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
256 UINT_8 ucServiceProtocolType;
257 UINT_8 ucServiceTransID;
259 UINT_8 aucResponseData[1];
260 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;