import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / connectivity / combo / drv_wlan / mt6620 / wlan / include / nic / p2p_mac.h
1 /*
2 ** $Id: //Department/DaVinci/TRUNK/WiFi_P2P_Driver/include/nic/p2p_mac.h#2 $
3 */
4
5 /*! \file "p2p_mac.h"
6 \brief Brief description.
7
8 Detail description.
9 */
10
11
12
13
14
15 #ifndef _P2P_MAC_H
16 #define _P2P_MAC_H
17
18 /*******************************************************************************
19 * C O M P I L E R F L A G S
20 ********************************************************************************
21 */
22
23 /*******************************************************************************
24 * E X T E R N A L R E F E R E N C E S
25 ********************************************************************************
26 */
27
28 /*******************************************************************************
29 * C O N S T A N T S
30 ********************************************************************************
31 */
32
33 #define ACTION_PUBLIC_WIFI_DIRECT 9
34 #define ACTION_GAS_INITIAL_REQUEST 10
35 #define ACTION_GAS_INITIAL_RESPONSE 11
36 #define ACTION_GAS_COMEBACK_REQUEST 12
37 #define ACTION_GAS_COMEBACK_RESPONSE 13
38
39
40 /* P2P 4.2.8.1 - P2P Public Action Frame Type. */
41 #define P2P_PUBLIC_ACTION_GO_NEGO_REQ 0
42 #define P2P_PUBLIC_ACTION_GO_NEGO_RSP 1
43 #define P2P_PUBLIC_ACTION_GO_NEGO_CFM 2
44 #define P2P_PUBLIC_ACTION_INVITATION_REQ 3
45 #define P2P_PUBLIC_ACTION_INVITATION_RSP 4
46 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_REQ 5
47 #define P2P_PUBLIC_ACTION_DEV_DISCOVER_RSP 6
48 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_REQ 7
49 #define P2P_PUBLIC_ACTION_PROV_DISCOVERY_RSP 8
50
51 /* P2P 4.2.9.1 - P2P Action Frame Type */
52 #define P2P_ACTION_NOTICE_OF_ABSENCE 0
53 #define P2P_ACTION_P2P_PRESENCE_REQ 1
54 #define P2P_ACTION_P2P_PRESENCE_RSP 2
55 #define P2P_ACTION_GO_DISCOVER_REQ 3
56
57 #define P2P_PUBLIC_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+8)
58 #define P2P_ACTION_FRAME_LEN (WLAN_MAC_MGMT_HEADER_LEN+7)
59
60
61 /*******************************************************************************
62 * M A C R O S
63 ********************************************************************************
64 */
65
66 /*******************************************************************************
67 * D A T A T Y P E S
68 ********************************************************************************
69 */
70
71 /*******************************************************************************
72 * P U B L I C D A T A
73 ********************************************************************************
74 */
75
76 /*******************************************************************************
77 * P R I V A T E D A T A
78 ********************************************************************************
79 */
80
81 /*******************************************************************************
82 * F U N C T I O N D E C L A R A T I O N S
83 ********************************************************************************
84 */
85
86
87 /* P2P 4.2.8.2 P2P Public Action Frame Format */
88 typedef struct _P2P_PUBLIC_ACTION_FRAME_T {
89 /* MAC header */
90 UINT_16 u2FrameCtrl; /* Frame Control */
91 UINT_16 u2Duration; /* Duration */
92 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
93 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
94 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
95 UINT_16 u2SeqCtrl; /* Sequence Control */
96 /* P2P Public Action Frame Body */
97 UINT_8 ucCategory; /* Category, 0x04 */
98 UINT_8 ucAction; /* Action Value, 0x09 */
99 UINT_8 aucOui[3]; /* 0x50, 0x6F, 0x9A */
100 UINT_8 ucOuiType; /* 0x09 */
101 UINT_8 ucOuiSubtype; /* GO Nego Req/Rsp/Cfm, P2P Invittion Req/Rsp, Device Discoverability Req/Rsp */
102 UINT_8 ucDialogToken; /* Dialog Token. */
103 UINT_8 aucInfoElem[1]; /* P2P IE, WSC IE. */
104 } __KAL_ATTRIB_PACKED__ P2P_PUBLIC_ACTION_FRAME_T, *P_P2P_PUBLIC_ACTION_FRAME_T;
105
106
107 /* P2P 4.2.9.1 - General Action Frame Format. */
108 typedef struct _P2P_ACTION_FRAME_T {
109 /* MAC header */
110 UINT_16 u2FrameCtrl; /* Frame Control */
111 UINT_16 u2Duration; /* Duration */
112 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
113 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
114 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
115 UINT_16 u2SeqCtrl; /* Sequence Control */
116 /* P2P Action Frame Body */
117 UINT_8 ucCategory; /* 0x7F */
118 UINT_8 aucOui[3]; /* 0x50, 0x6F, 0x9A */
119 UINT_8 ucOuiType; /* 0x09 */
120 UINT_8 ucOuiSubtype; /* */
121 UINT_8 ucDialogToken;
122 UINT_8 aucInfoElem[1];
123 } __KAL_ATTRIB_PACKED__ P2P_ACTION_FRAME_T, *P_P2P_ACTION_FRAME_T;
124
125 /* P2P C.1 GAS Public Action Initial Request Frame Format */
126 typedef struct _GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T {
127 /* MAC header */
128 UINT_16 u2FrameCtrl; /* Frame Control */
129 UINT_16 u2Duration; /* Duration */
130 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
131 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
132 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
133 UINT_16 u2SeqCtrl; /* Sequence Control */
134 /* P2P Public Action Frame Body */
135 UINT_8 ucCategory; /* Category, 0x04 */
136 UINT_8 ucAction; /* Action Value, 0x09 */
137 UINT_8 ucDialogToken; /* Dialog Token. */
138 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
139 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T,
140 *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T;
141
142 /* P2P C.2 GAS Public Action Initial Response Frame Format */
143 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
144 /* MAC header */
145 UINT_16 u2FrameCtrl; /* Frame Control */
146 UINT_16 u2Duration; /* Duration */
147 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
148 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
149 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
150 UINT_16 u2SeqCtrl; /* Sequence Control */
151 /* P2P Public Action Frame Body */
152 UINT_8 ucCategory; /* Category, 0x04 */
153 UINT_8 ucAction; /* Action Value, 0x09 */
154 UINT_8 ucDialogToken; /* Dialog Token. */
155 UINT_16 u2StatusCode; /* Initial Response. */
156 UINT_16 u2ComebackDelay; /* Initial Response. *//* In unit of TU. */
157 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
158 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T,
159 *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T;
160
161
162 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
163 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
164 /* MAC header */
165 UINT_16 u2FrameCtrl; /* Frame Control */
166 UINT_16 u2Duration; /* Duration */
167 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
168 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
169 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
170 UINT_16 u2SeqCtrl; /* Sequence Control */
171 /* P2P Public Action Frame Body */
172 UINT_8 ucCategory; /* Category, 0x04 */
173 UINT_8 ucAction; /* Action Value, 0x09 */
174 UINT_8 ucDialogToken; /* Dialog Token. */
175 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T,
176 *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T;
177
178 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
179 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
180 /* MAC header */
181 UINT_16 u2FrameCtrl; /* Frame Control */
182 UINT_16 u2Duration; /* Duration */
183 UINT_8 aucDestAddr[MAC_ADDR_LEN]; /* DA */
184 UINT_8 aucSrcAddr[MAC_ADDR_LEN]; /* SA */
185 UINT_8 aucBSSID[MAC_ADDR_LEN]; /* BSSID */
186 UINT_16 u2SeqCtrl; /* Sequence Control */
187 /* P2P Public Action Frame Body */
188 UINT_8 ucCategory; /* Category, 0x04 */
189 UINT_8 ucAction; /* Action Value, 0x09 */
190 UINT_8 ucDialogToken; /* Dialog Token. */
191 UINT_16 u2StatusCode; /* Comeback Response. */
192 UINT_8 ucFragmentID; /*Comeback Response. */
193 UINT_16 u2ComebackDelay; /* Comeback Response. */
194 UINT_8 aucInfoElem[1]; /* Advertisement IE. */
195 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T,
196 *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T;
197
198
199
200
201 typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T {
202 /* Service Discovery Vendor-specific Content. */
203 UINT_8 ucOuiSubtype; /* 0x09 */
204 UINT_16 u2ServiceUpdateIndicator;
205 UINT_8 aucServiceTLV[1];
206 } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T;
207
208
209 typedef struct _P2P_SERVICE_REQUEST_TLV_T {
210 UINT_16 u2Length;
211 UINT_8 ucServiceProtocolType;
212 UINT_8 ucServiceTransID;
213 UINT_8 aucQueryData[1];
214 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T, *P_P2P_SERVICE_REQUEST_TLV_T;
215
216
217
218 typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
219 UINT_16 u2Length;
220 UINT_8 ucServiceProtocolType;
221 UINT_8 ucServiceTransID;
222 UINT_8 ucStatusCode;
223 UINT_8 aucResponseData[1];
224 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;
225
226
227 #endif