support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / combo_mt66xx / mt6628 / 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, *P_GAS_PUBLIC_ACTION_INITIAL_REQUEST_FRAME_T;
140
141 /* P2P C.2 GAS Public Action Initial Response Frame Format */
142 typedef struct _GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T {
143     /* MAC header */
144     UINT_16     u2FrameCtrl;                /* Frame Control */
145     UINT_16     u2Duration;                 /* Duration */
146     UINT_8      aucDestAddr[MAC_ADDR_LEN];  /* DA */
147     UINT_8      aucSrcAddr[MAC_ADDR_LEN];   /* SA */
148     UINT_8      aucBSSID[MAC_ADDR_LEN];     /* BSSID */
149     UINT_16     u2SeqCtrl;                  /* Sequence Control */
150     /* P2P Public Action Frame Body */
151     UINT_8      ucCategory;                 /* Category, 0x04 */
152     UINT_8      ucAction;                   /* Action Value, 0x09 */
153     UINT_8      ucDialogToken;        /* Dialog Token. */
154     UINT_16    u2StatusCode;         /* Initial Response. */
155     UINT_16    u2ComebackDelay;   /* Initial Response. */     /* In unit of TU. */
156     UINT_8      aucInfoElem[1];             /* Advertisement IE. */
157 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_INITIAL_RESPONSE_FRAME_T;
158
159
160 /* P2P C.3-1 GAS Public Action Comeback Request Frame Format */
161 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T {
162     /* MAC header */
163     UINT_16     u2FrameCtrl;                /* Frame Control */
164     UINT_16     u2Duration;                 /* Duration */
165     UINT_8      aucDestAddr[MAC_ADDR_LEN];  /* DA */
166     UINT_8      aucSrcAddr[MAC_ADDR_LEN];   /* SA */
167     UINT_8      aucBSSID[MAC_ADDR_LEN];     /* BSSID */
168     UINT_16     u2SeqCtrl;                  /* Sequence Control */
169     /* P2P Public Action Frame Body */
170     UINT_8      ucCategory;                 /* Category, 0x04 */
171     UINT_8      ucAction;                   /* Action Value, 0x09 */
172     UINT_8      ucDialogToken;        /* Dialog Token. */
173 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_REQUEST_FRAME_T;
174
175 /* P2P C.3-2 GAS Public Action Comeback Response Frame Format */
176 typedef struct _GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T {
177     /* MAC header */
178     UINT_16     u2FrameCtrl;                /* Frame Control */
179     UINT_16     u2Duration;                 /* Duration */
180     UINT_8      aucDestAddr[MAC_ADDR_LEN];  /* DA */
181     UINT_8      aucSrcAddr[MAC_ADDR_LEN];   /* SA */
182     UINT_8      aucBSSID[MAC_ADDR_LEN];     /* BSSID */
183     UINT_16     u2SeqCtrl;                  /* Sequence Control */
184     /* P2P Public Action Frame Body */
185     UINT_8      ucCategory;                 /* Category, 0x04 */
186     UINT_8      ucAction;                   /* Action Value, 0x09 */
187     UINT_8      ucDialogToken;        /* Dialog Token. */
188     UINT_16    u2StatusCode;         /* Comeback Response. */
189     UINT_8      ucFragmentID;         /*Comeback Response. */
190     UINT_16    u2ComebackDelay;   /* Comeback Response. */
191     UINT_8      aucInfoElem[1];             /* Advertisement IE. */
192 } __KAL_ATTRIB_PACKED__ GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T, *P_GAS_PUBLIC_ACTION_COMEBACK_RESPONSE_FRAME_T;
193
194
195
196
197 typedef struct _P2P_SD_VENDER_SPECIFIC_CONTENT_T {
198     /* Service Discovery Vendor-specific Content. */
199     UINT_8 ucOuiSubtype;         // 0x09
200     UINT_16 u2ServiceUpdateIndicator;
201     UINT_8 aucServiceTLV[1];
202 } __KAL_ATTRIB_PACKED__ P2P_SD_VENDER_SPECIFIC_CONTENT_T, *P_P2P_SD_VENDER_SPECIFIC_CONTENT_T;
203
204
205 typedef struct _P2P_SERVICE_REQUEST_TLV_T {
206     UINT_16 u2Length;
207     UINT_8 ucServiceProtocolType;
208     UINT_8 ucServiceTransID;
209     UINT_8 aucQueryData[1];
210 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_REQUEST_TLV_T, *P_P2P_SERVICE_REQUEST_TLV_T;
211
212
213
214 typedef struct _P2P_SERVICE_RESPONSE_TLV_T {
215     UINT_16 u2Length;
216     UINT_8 ucServiceProtocolType;
217     UINT_8 ucServiceTransID;
218     UINT_8 ucStatusCode;
219     UINT_8 aucResponseData[1];
220 } __KAL_ATTRIB_PACKED__ P2P_SERVICE_RESPONSE_TLV_T, *P_P2P_SERVICE_RESPONSE_TLV_T;
221
222
223 #endif