]> Pileus Git - ~andy/linux/blob - drivers/staging/csr/csr_wifi_router_prim.h
Merge tag 'tegra-for-3.8-fixes-for-rc1' of git://git.kernel.org/pub/scm/linux/kernel...
[~andy/linux] / drivers / staging / csr / csr_wifi_router_prim.h
1 /*****************************************************************************
2
3             (c) Cambridge Silicon Radio Limited 2011
4             All rights reserved and confidential information of CSR
5
6             Refer to LICENSE.txt included with this source for details
7             on the license terms.
8
9 *****************************************************************************/
10
11 /* Note: this is an auto-generated file. */
12
13 #ifndef CSR_WIFI_ROUTER_PRIM_H__
14 #define CSR_WIFI_ROUTER_PRIM_H__
15
16 #include <linux/types.h>
17 #include "csr_prim_defs.h"
18 #include "csr_sched.h"
19 #include "csr_wifi_common.h"
20 #include "csr_result.h"
21 #include "csr_wifi_fsm_event.h"
22
23 #define CSR_WIFI_ROUTER_PRIM                                            (0x0400)
24
25 typedef CsrPrim CsrWifiRouterPrim;
26
27 typedef void (*CsrWifiRouterFrameFreeFunction)(void *frame);
28
29 /*******************************************************************************
30
31   NAME
32     CsrWifiRouterAppType
33
34   DESCRIPTION
35
36  VALUES
37     CSR_WIFI_ROUTER_APP_TYPE_SME   -
38     CSR_WIFI_ROUTER_APP_TYPE_PAL   -
39     CSR_WIFI_ROUTER_APP_TYPE_NME   -
40     CSR_WIFI_ROUTER_APP_TYPE_OTHER -
41
42 *******************************************************************************/
43 typedef u8 CsrWifiRouterAppType;
44 #define CSR_WIFI_ROUTER_APP_TYPE_SME     ((CsrWifiRouterAppType) 0x0)
45 #define CSR_WIFI_ROUTER_APP_TYPE_PAL     ((CsrWifiRouterAppType) 0x1)
46 #define CSR_WIFI_ROUTER_APP_TYPE_NME     ((CsrWifiRouterAppType) 0x2)
47 #define CSR_WIFI_ROUTER_APP_TYPE_OTHER   ((CsrWifiRouterAppType) 0x3)
48
49 /*******************************************************************************
50
51   NAME
52     CsrWifiRouterEncapsulation
53
54   DESCRIPTION
55     Indicates the type of encapsulation used for the subscription
56
57  VALUES
58     CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET
59                    - Ethernet encapsulation
60     CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP
61                    - LLC/SNAP encapsulation
62
63 *******************************************************************************/
64 typedef u8 CsrWifiRouterEncapsulation;
65 #define CSR_WIFI_ROUTER_ENCAPSULATION_ETHERNET   ((CsrWifiRouterEncapsulation) 0x00)
66 #define CSR_WIFI_ROUTER_ENCAPSULATION_LLC_SNAP   ((CsrWifiRouterEncapsulation) 0x01)
67
68 /*******************************************************************************
69
70   NAME
71     CsrWifiRouterOui
72
73   DESCRIPTION
74
75  VALUES
76     CSR_WIFI_ROUTER_OUI_RFC_1042 -
77     CSR_WIFI_ROUTER_OUI_BT       -
78
79 *******************************************************************************/
80 typedef u32 CsrWifiRouterOui;
81 #define CSR_WIFI_ROUTER_OUI_RFC_1042   ((CsrWifiRouterOui) 0x000000)
82 #define CSR_WIFI_ROUTER_OUI_BT         ((CsrWifiRouterOui) 0x001958)
83
84 /*******************************************************************************
85
86   NAME
87     CsrWifiRouterPriority
88
89   DESCRIPTION
90     As defined in the IEEE 802.11 standards
91
92  VALUES
93     CSR_WIFI_ROUTER_PRIORITY_QOS_UP0
94                    - See IEEE 802.11 Standard
95     CSR_WIFI_ROUTER_PRIORITY_QOS_UP1
96                    - See IEEE 802.11 Standard
97     CSR_WIFI_ROUTER_PRIORITY_QOS_UP2
98                    - See IEEE 802.11 Standard
99     CSR_WIFI_ROUTER_PRIORITY_QOS_UP3
100                    - See IEEE 802.11 Standard
101     CSR_WIFI_ROUTER_PRIORITY_QOS_UP4
102                    - See IEEE 802.11 Standard
103     CSR_WIFI_ROUTER_PRIORITY_QOS_UP5
104                    - See IEEE 802.11 Standard
105     CSR_WIFI_ROUTER_PRIORITY_QOS_UP6
106                    - See IEEE 802.11 Standard
107     CSR_WIFI_ROUTER_PRIORITY_QOS_UP7
108                    - See IEEE 802.11 Standard
109     CSR_WIFI_ROUTER_PRIORITY_CONTENTION
110                    - See IEEE 802.11 Standard
111     CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT
112                    - See IEEE 802.11 Standard
113
114 *******************************************************************************/
115 typedef u16 CsrWifiRouterPriority;
116 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP0      ((CsrWifiRouterPriority) 0x0000)
117 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP1      ((CsrWifiRouterPriority) 0x0001)
118 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP2      ((CsrWifiRouterPriority) 0x0002)
119 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP3      ((CsrWifiRouterPriority) 0x0003)
120 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP4      ((CsrWifiRouterPriority) 0x0004)
121 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP5      ((CsrWifiRouterPriority) 0x0005)
122 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP6      ((CsrWifiRouterPriority) 0x0006)
123 #define CSR_WIFI_ROUTER_PRIORITY_QOS_UP7      ((CsrWifiRouterPriority) 0x0007)
124 #define CSR_WIFI_ROUTER_PRIORITY_CONTENTION   ((CsrWifiRouterPriority) 0x8000)
125 #define CSR_WIFI_ROUTER_PRIORITY_MANAGEMENT   ((CsrWifiRouterPriority) 0x8010)
126
127
128 /* Downstream */
129 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST            (0x0000)
130
131 #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_REQ           ((CsrWifiRouterPrim) (0x0000 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST))
132 #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_REQ         ((CsrWifiRouterPrim) (0x0001 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST))
133 #define CSR_WIFI_ROUTER_MA_PACKET_REQ                     ((CsrWifiRouterPrim) (0x0002 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST))
134 #define CSR_WIFI_ROUTER_MA_PACKET_RES                     ((CsrWifiRouterPrim) (0x0003 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST))
135 #define CSR_WIFI_ROUTER_MA_PACKET_CANCEL_REQ              ((CsrWifiRouterPrim) (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST))
136
137
138 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST           (0x0004 + CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)
139
140 /* Upstream */
141 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST              (0x0000 + CSR_PRIM_UPSTREAM)
142
143 #define CSR_WIFI_ROUTER_MA_PACKET_SUBSCRIBE_CFM           ((CsrWifiRouterPrim)(0x0000 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST))
144 #define CSR_WIFI_ROUTER_MA_PACKET_UNSUBSCRIBE_CFM         ((CsrWifiRouterPrim)(0x0001 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST))
145 #define CSR_WIFI_ROUTER_MA_PACKET_CFM                     ((CsrWifiRouterPrim)(0x0002 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST))
146 #define CSR_WIFI_ROUTER_MA_PACKET_IND                     ((CsrWifiRouterPrim)(0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST))
147
148 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST             (0x0003 + CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)
149
150 #define CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_COUNT             (CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_HIGHEST + 1 - CSR_WIFI_ROUTER_PRIM_DOWNSTREAM_LOWEST)
151 #define CSR_WIFI_ROUTER_PRIM_UPSTREAM_COUNT               (CSR_WIFI_ROUTER_PRIM_UPSTREAM_HIGHEST   + 1 - CSR_WIFI_ROUTER_PRIM_UPSTREAM_LOWEST)
152
153 /*******************************************************************************
154
155   NAME
156     CsrWifiRouterMaPacketSubscribeReq
157
158   DESCRIPTION
159     A task can use this primitive to subscribe for a particular OUI/protocol
160     and transmit and receive frames matching the subscription.
161     NOTE: Multiple subscriptions for a given protocol and OUI will result in
162     the first subscription receiving the data and not the subsequent
163     subscriptions.
164
165   MEMBERS
166     common        - Common header for use with the CsrWifiFsm Module
167     interfaceTag  - Interface Identifier; unique identifier of an interface
168     encapsulation - Specifies the encapsulation type, which will be used for the
169                     subscription
170     protocol      - Together with the OUI, specifies the protocol, which a task
171                     wants to subscribe to
172     oui           - Specifies the OUI for the protocol, which a task wants to
173                     subscribe to
174
175 *******************************************************************************/
176 typedef struct
177 {
178     CsrWifiFsmEvent            common;
179     u16                  interfaceTag;
180     CsrWifiRouterEncapsulation encapsulation;
181     u16                  protocol;
182     u32                  oui;
183 } CsrWifiRouterMaPacketSubscribeReq;
184
185 /*******************************************************************************
186
187   NAME
188     CsrWifiRouterMaPacketUnsubscribeReq
189
190   DESCRIPTION
191     A task sends this primitive to unsubscribe a subscription
192
193   MEMBERS
194     common             - Common header for use with the CsrWifiFsm Module
195     interfaceTag       - Interface Identifier; unique identifier of an interface
196     subscriptionHandle - The handle of the subscription
197
198 *******************************************************************************/
199 typedef struct
200 {
201     CsrWifiFsmEvent common;
202     u16       interfaceTag;
203     u8        subscriptionHandle;
204 } CsrWifiRouterMaPacketUnsubscribeReq;
205
206 /*******************************************************************************
207
208   NAME
209     CsrWifiRouterMaPacketReq
210
211   DESCRIPTION
212     A task sends this primitive to transmit a frame.
213
214   MEMBERS
215     common             - Common header for use with the CsrWifiFsm Module
216     interfaceTag       - Interface Identifier; unique identifier of an interface
217     subscriptionHandle - The handle of the subscription
218     frameLength        - Length of the frame to be sent in bytes
219     frame              - Pointer to the frame to be sent
220     freeFunction       - Pointer to function to be used to free the frame
221     priority           - Priority of the frame, which should be sent
222     hostTag            - An application shall set the bits b31..b28 using one of
223                          the CSR_WIFI_ROUTER_APP_TYPE_* masks. Bits b0..b27 can
224                          be used by the requestor without any restrictions, but
225                          the hostTag shall be unique so the hostTag for
226                          CSR_WIFI_ROUTER_APP _TYPE_OTHER should be constructured
227                          in the following way [ CSR_WIFI_ROUTER_APP_TYPE_OTHER
228                          (4 bits) | SubscriptionHandle (8 bits) | Sequence no.
229                          (20 bits) ]. If the hostTag is not unique, the
230                          behaviour of the system is unpredicatable with respect
231                          to data/management frame transfer.
232     cfmRequested       - Indicates if the requestor needs a confirm for packet
233                          requests sent under this subscription. If set to TRUE,
234                          the router will send a confirm, else it will not send
235                          any confirm
236
237 *******************************************************************************/
238 typedef struct
239 {
240     CsrWifiFsmEvent                common;
241     u16                      interfaceTag;
242     u8                       subscriptionHandle;
243     u16                      frameLength;
244     u8                      *frame;
245     CsrWifiRouterFrameFreeFunction freeFunction;
246     CsrWifiRouterPriority          priority;
247     u32                      hostTag;
248     u8                        cfmRequested;
249 } CsrWifiRouterMaPacketReq;
250
251 /*******************************************************************************
252
253   NAME
254     CsrWifiRouterMaPacketRes
255
256   DESCRIPTION
257     A task send this primitive to confirm the reception of the received
258     frame.
259
260   MEMBERS
261     common             - Common header for use with the CsrWifiFsm Module
262     interfaceTag       - Interface Identifier; unique identifier of an interface
263     subscriptionHandle - The handle of the subscription
264     result             - Status of the operation
265
266 *******************************************************************************/
267 typedef struct
268 {
269     CsrWifiFsmEvent common;
270     u16       interfaceTag;
271     u8        subscriptionHandle;
272     CsrResult       result;
273 } CsrWifiRouterMaPacketRes;
274
275 /*******************************************************************************
276
277   NAME
278     CsrWifiRouterMaPacketCancelReq
279
280   DESCRIPTION
281     This primitive is used to request cancellation of a previously send
282     CsrWifiRouterMaPacketReq.
283     The frame may already have been transmitted so there is no guarantees
284     that the CsrWifiRouterMaPacketCancelReq actually cancels the transmission
285     of the frame in question.
286     If the cancellation fails, the Router will send, if required,
287     CsrWifiRouterMaPacketCfm.
288     If the cancellation succeeds, the Router will not send
289     CsrWifiRouterMaPacketCfm.
290
291   MEMBERS
292     common         - Common header for use with the CsrWifiFsm Module
293     interfaceTag   - Interface Identifier; unique identifier of an interface
294     hostTag        - The hostTag for the frame, which should be cancelled.
295     priority       - Priority of the frame, which should be cancelled
296     peerMacAddress - Destination MAC address of the frame, which should be
297                      cancelled
298
299 *******************************************************************************/
300 typedef struct
301 {
302     CsrWifiFsmEvent       common;
303     u16             interfaceTag;
304     u32             hostTag;
305     CsrWifiRouterPriority priority;
306     CsrWifiMacAddress     peerMacAddress;
307 } CsrWifiRouterMaPacketCancelReq;
308
309 /*******************************************************************************
310
311   NAME
312     CsrWifiRouterMaPacketSubscribeCfm
313
314   DESCRIPTION
315     The router sends this primitive to confirm the result of the
316     subscription.
317
318   MEMBERS
319     common             - Common header for use with the CsrWifiFsm Module
320     interfaceTag       - Interface Identifier; unique identifier of an interface
321     subscriptionHandle - Handle to the subscription
322                          This handle must be used in all subsequent requests
323     status             - Status of the operation
324     allocOffset        - Size of the offset for the frames of the subscription
325
326 *******************************************************************************/
327 typedef struct
328 {
329     CsrWifiFsmEvent common;
330     u16       interfaceTag;
331     u8        subscriptionHandle;
332     CsrResult       status;
333     u16       allocOffset;
334 } CsrWifiRouterMaPacketSubscribeCfm;
335
336 /*******************************************************************************
337
338   NAME
339     CsrWifiRouterMaPacketUnsubscribeCfm
340
341   DESCRIPTION
342     The router sends this primitive to confirm the result of the
343     unsubscription.
344
345   MEMBERS
346     common       - Common header for use with the CsrWifiFsm Module
347     interfaceTag - Interface Identifier; unique identifier of an interface
348     status       - Status of the operation
349
350 *******************************************************************************/
351 typedef struct
352 {
353     CsrWifiFsmEvent common;
354     u16       interfaceTag;
355     CsrResult       status;
356 } CsrWifiRouterMaPacketUnsubscribeCfm;
357
358 /*******************************************************************************
359
360   NAME
361     CsrWifiRouterMaPacketCfm
362
363   DESCRIPTION
364     The router sends the primitive to confirm the result of the transmission
365     of the packet of the corresponding CSR_WIFI_ROUTER MA_PACKET_REQ request.
366
367   MEMBERS
368     common       - Common header for use with the CsrWifiFsm Module
369     interfaceTag - Interface Identifier; unique identifier of an interface
370     result       - Status of the operation
371     hostTag      - The hostTrag will match the hostTag sent in the request.
372     rate         - Transmission/Reception rate
373
374 *******************************************************************************/
375 typedef struct
376 {
377     CsrWifiFsmEvent common;
378     u16       interfaceTag;
379     CsrResult       result;
380     u32       hostTag;
381     u16       rate;
382 } CsrWifiRouterMaPacketCfm;
383
384 /*******************************************************************************
385
386   NAME
387     CsrWifiRouterMaPacketInd
388
389   DESCRIPTION
390     The router sends the primitive to a subscribed task when it receives a
391     frame matching the subscription.
392
393   MEMBERS
394     common             - Common header for use with the CsrWifiFsm Module
395     interfaceTag       - Interface Identifier; unique identifier of an interface
396     subscriptionHandle - The handle of the subscription
397     result             - Status of the operation
398     frameLength        - Length of the received frame in bytes
399     frame              - Pointer to the received frame
400     freeFunction       - Pointer to function to be used to free the frame
401     rssi               - Received signal strength indication in dBm
402     snr                - Signal to Noise Ratio
403     rate               - Transmission/Reception rate
404
405 *******************************************************************************/
406 typedef struct
407 {
408     CsrWifiFsmEvent                common;
409     u16                      interfaceTag;
410     u8                       subscriptionHandle;
411     CsrResult                      result;
412     u16                      frameLength;
413     u8                      *frame;
414     CsrWifiRouterFrameFreeFunction freeFunction;
415     s16                       rssi;
416     s16                       snr;
417     u16                      rate;
418 } CsrWifiRouterMaPacketInd;
419
420 #endif /* CSR_WIFI_ROUTER_PRIM_H__ */
421