Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2/******************************************************************************
3 *
4 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
5 *
6 * Modifications for inclusion into the Linux staging tree are
7 * Copyright(c) 2010 Larry Finger. All rights reserved.
8 *
9 * Contact information:
10 * WLAN FAE <wlanfae@realtek.com>
11 * Larry Finger <Larry.Finger@lwfinger.net>
12 *
13 ******************************************************************************/
14#ifndef _RTL8712_XMIT_H_
15#define _RTL8712_XMIT_H_
16
17#define HWXMIT_ENTRY 4
18
19#define VO_QUEUE_INX 0
20#define VI_QUEUE_INX 1
21#define BE_QUEUE_INX 2
22#define BK_QUEUE_INX 3
23#define TS_QUEUE_INX 4
24#define MGT_QUEUE_INX 5
25#define BMC_QUEUE_INX 6
26#define BCN_QUEUE_INX 7
27
28#define HW_QUEUE_ENTRY 8
29
30#define TXDESC_SIZE 32
31#define TXDESC_OFFSET TXDESC_SIZE
32
33#define NR_AMSDU_XMITFRAME 8
34#define NR_TXAGG_XMITFRAME 8
35
36#define MAX_AMSDU_XMITBUF_SZ 8704
37#define MAX_TXAGG_XMITBUF_SZ 16384 /*16k*/
38
39
40#define tx_cmd tx_desc
41
42
43/*
44 *defined for TX DESC Operation
45 */
46
47#define MAX_TID (15)
48
49/*OFFSET 0*/
50#define OFFSET_SZ (0)
51#define OFFSET_SHT (16)
52#define OWN BIT(31)
53#define FSG BIT(27)
54#define LSG BIT(26)
55#define TYPE_SHT (24)
56#define TYPE_MSK (0x03000000)
57
58/*OFFSET 4*/
59#define PKT_OFFSET_SZ (0)
60#define QSEL_SHT (8)
61#define HWPC BIT(31)
62
63/*OFFSET 8*/
64#define BMC BIT(7)
65#define BK BIT(30)
66#define AGG_EN BIT(29)
67#define RTS_RC_SHT (16)
68
69/*OFFSET 12*/
70#define SEQ_SHT (16)
71
72/*OFFSET 16*/
73#define TXBW BIT(18)
74
75/*OFFSET 20*/
76#define DISFB BIT(15)
77#define RSVD6_MSK (0x00E00000)
78#define RSVD6_SHT (21)
79
80struct tx_desc {
81 /*DWORD 0*/
82 __le32 txdw0;
83 __le32 txdw1;
84 __le32 txdw2;
85 __le32 txdw3;
86 __le32 txdw4;
87 __le32 txdw5;
88 __le32 txdw6;
89 __le32 txdw7;
90};
91
92
93union txdesc {
94 struct tx_desc txdesc;
95 unsigned int value[TXDESC_SIZE>>2];
96};
97
98int r8712_xmitframe_complete(struct _adapter *padapter,
99 struct xmit_priv *pxmitpriv,
100 struct xmit_buf *pxmitbuf);
101void r8712_do_queue_select(struct _adapter *padapter,
102 struct pkt_attrib *pattrib);
103
104#ifdef CONFIG_R8712_TX_AGGR
105void r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf,
106 struct xmit_frame *pxmitframe);
107void r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf,
108 struct xmit_frame *pxmitframe);
109#endif
110
111#endif