add MTK-combo-module,continue with commit 17f39ed917874e77e80411f33faba1b7ee8138c8
[firefly-linux-kernel-4.4.55.git] / drivers / mtk_wcn_combo / drv_wlan / p2p / include / nic / p2p_mac.h
1 /*
2 ** $Id: //Department/DaVinci/BRANCHES/WIFI_P2P_DRIVER_V2_2/include/nic/p2p_mac.h#1 $
3 */
4
5 /*! \file   "p2p_mac.h"
6     \brief  Brief description.
7
8     Detail description.
9 */
10
11
12 /*******************************************************************************
13 * Copyright (c) 2010 MediaTek Inc.
14 *
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
18 * MediaTek Inc.
19 ********************************************************************************
20 */
21
22 /*******************************************************************************
23 * LEGAL DISCLAIMER
24 *
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.
38 *
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.
44 *
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
50 * (ICC).
51 ********************************************************************************
52 */
53
54
55 #ifndef _P2P_MAC_H
56 #define _P2P_MAC_H
57
58 /*******************************************************************************
59 *                         C O M P I L E R   F L A G S
60 ********************************************************************************
61 */
62
63 /*******************************************************************************
64 *                    E X T E R N A L   R E F E R E N C E S
65 ********************************************************************************
66 */
67
68 /*******************************************************************************
69 *                              C O N S T A N T S
70 ********************************************************************************
71 */
72
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
78
79
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
90
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
96
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)
99
100
101 /*******************************************************************************
102 *                                 M A C R O S
103 ********************************************************************************
104 */
105
106 /*******************************************************************************
107 *                             D A T A   T Y P E S
108 ********************************************************************************
109 */
110
111 /*******************************************************************************
112 *                            P U B L I C   D A T A
113 ********************************************************************************
114 */
115
116 /*******************************************************************************
117 *                           P R I V A T E   D A T A
118 ********************************************************************************
119 */
120
121 /*******************************************************************************
122 *                  F U N C T I O N   D E C L A R A T I O N S
123 ********************************************************************************
124 */
125
126
127 /* P2P 4.2.8.2 P2P Public Action Frame Format */
128 typedef struct _P2P_PUBLIC_ACTION_FRAME_T {
129     /* MAC header */
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;
145
146
147 /* P2P 4.2.9.1 -  General Action Frame Format. */
148 typedef struct _P2P_ACTION_FRAME_T {
149     /* MAC header */
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;
164
165 /* P2P C.1 GAS Public Action Initial Request Frame Format */
166 typedef struct _GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T {
167     /* MAC header */
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;
180
181 /* P2P C.2 GAS Public Action Initial Response Frame Format */
182 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
183     /* MAC header */
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;
198
199
200 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
201 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
202     /* MAC header */
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;
214
215 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
216 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
217     /* MAC header */
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;
233
234
235
236
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;
243
244
245 typedef struct _P2P_SERVICE_REQUEST_TLV_T {
246     UINT_16 u2Length;
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;
251
252
253
254 typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
255     UINT_16 u2Length;
256     UINT_8 ucServiceProtocolType;
257     UINT_8 ucServiceTransID;
258     UINT_8 ucStatusCode;
259     UINT_8 aucResponseData[1];
260 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;
261
262
263 #endif