Linux-libre 3.0.56-gnu1
[librecmc/linux-libre.git] / drivers / staging / rtl8712 / rtl8712_xmit.h
1 #ifndef _RTL8712_XMIT_H_
2 #define _RTL8712_XMIT_H_
3
4 #define HWXMIT_ENTRY    4
5
6 #define VO_QUEUE_INX    0
7 #define VI_QUEUE_INX    1
8 #define BE_QUEUE_INX    2
9 #define BK_QUEUE_INX    3
10 #define TS_QUEUE_INX    4
11 #define MGT_QUEUE_INX   5
12 #define BMC_QUEUE_INX   6
13 #define BCN_QUEUE_INX   7
14
15 #define HW_QUEUE_ENTRY  8
16
17 #define TXDESC_SIZE 32
18 #define TXDESC_OFFSET TXDESC_SIZE
19
20 #define NR_AMSDU_XMITFRAME 8
21 #define NR_TXAGG_XMITFRAME 8
22
23 #define MAX_AMSDU_XMITBUF_SZ 8704
24 #define MAX_TXAGG_XMITBUF_SZ 16384 /*16k*/
25
26
27 #define tx_cmd tx_desc
28
29
30 /*
31  *defined for TX DESC Operation
32  */
33
34 #define MAX_TID (15)
35
36 /*OFFSET 0*/
37 #define OFFSET_SZ (0)
38 #define OFFSET_SHT (16)
39 #define OWN     BIT(31)
40 #define FSG     BIT(27)
41 #define LSG     BIT(26)
42
43 /*OFFSET 4*/
44 #define PKT_OFFSET_SZ (0)
45 #define QSEL_SHT (8)
46 #define HWPC BIT(31)
47
48 /*OFFSET 8*/
49 #define BMC BIT(7)
50 #define BK BIT(30)
51 #define AGG_EN BIT(29)
52
53 /*OFFSET 12*/
54 #define SEQ_SHT (16)
55
56 /*OFFSET 16*/
57 #define TXBW BIT(18)
58
59 /*OFFSET 20*/
60 #define DISFB BIT(15)
61
62 struct tx_desc {
63         /*DWORD 0*/
64         unsigned int txdw0;
65         unsigned int txdw1;
66         unsigned int txdw2;
67         unsigned int txdw3;
68         unsigned int txdw4;
69         unsigned int txdw5;
70         unsigned int txdw6;
71         unsigned int txdw7;
72 };
73
74
75 union txdesc {
76         struct tx_desc txdesc;
77         unsigned int value[TXDESC_SIZE>>2];
78 };
79
80 int r8712_xmitframe_complete(struct _adapter *padapter,
81                              struct xmit_priv *pxmitpriv,
82                              struct xmit_buf *pxmitbuf);
83 void r8712_do_queue_select(struct _adapter *padapter,
84                            struct pkt_attrib *pattrib);
85
86 #endif