hc
2023-03-21 4b55d97acc464242bcd6a8ae77b8ff37c22dec58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/******************************************************************************
 *
 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 *
 * Modifications for inclusion into the Linux staging tree are
 * Copyright(c) 2010 Larry Finger. All rights reserved.
 *
 * Contact information:
 * WLAN FAE <wlanfae@realtek.com>
 * Larry Finger <Larry.Finger@lwfinger.net>
 *
 ******************************************************************************/
#ifndef _RTL8712_XMIT_H_
#define _RTL8712_XMIT_H_
 
#define HWXMIT_ENTRY    4
 
#define VO_QUEUE_INX    0
#define VI_QUEUE_INX    1
#define BE_QUEUE_INX    2
#define BK_QUEUE_INX    3
#define TS_QUEUE_INX    4
#define MGT_QUEUE_INX    5
#define BMC_QUEUE_INX    6
#define BCN_QUEUE_INX    7
 
#define HW_QUEUE_ENTRY    8
 
#define TXDESC_SIZE 32
#define TXDESC_OFFSET TXDESC_SIZE
 
#define NR_AMSDU_XMITFRAME 8
#define NR_TXAGG_XMITFRAME 8
 
#define MAX_AMSDU_XMITBUF_SZ 8704
#define MAX_TXAGG_XMITBUF_SZ 16384 /*16k*/
 
 
#define tx_cmd tx_desc
 
 
/*
 *defined for TX DESC Operation
 */
 
#define MAX_TID (15)
 
/*OFFSET 0*/
#define OFFSET_SZ (0)
#define OFFSET_SHT (16)
#define OWN    BIT(31)
#define FSG    BIT(27)
#define LSG    BIT(26)
#define TYPE_SHT (24)
#define TYPE_MSK (0x03000000)
 
/*OFFSET 4*/
#define PKT_OFFSET_SZ (0)
#define QSEL_SHT (8)
#define HWPC BIT(31)
 
/*OFFSET 8*/
#define BMC BIT(7)
#define BK BIT(30)
#define AGG_EN BIT(29)
#define RTS_RC_SHT (16)
 
/*OFFSET 12*/
#define SEQ_SHT (16)
 
/*OFFSET 16*/
#define TXBW BIT(18)
 
/*OFFSET 20*/
#define DISFB BIT(15)
#define RSVD6_MSK (0x00E00000)
#define RSVD6_SHT (21)
 
struct tx_desc {
   /*DWORD 0*/
   __le32 txdw0;
   __le32 txdw1;
   __le32 txdw2;
   __le32 txdw3;
   __le32 txdw4;
   __le32 txdw5;
   __le32 txdw6;
   __le32 txdw7;
};
 
 
union txdesc {
   struct tx_desc txdesc;
   unsigned int value[TXDESC_SIZE>>2];
};
 
int r8712_xmitframe_complete(struct _adapter *padapter,
                struct xmit_priv *pxmitpriv,
                struct xmit_buf *pxmitbuf);
void r8712_do_queue_select(struct _adapter *padapter,
              struct pkt_attrib *pattrib);
 
#ifdef CONFIG_R8712_TX_AGGR
u8 r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf,
           struct xmit_frame *pxmitframe);
u8 r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf,
           struct xmit_frame *pxmitframe);
#endif
 
#endif