10c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/******************************************************************************
20c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
39003a4aba4b040be265ce8ed51f6fe437d369453Larry Finger * Copyright(c) 2009-2012  Realtek Corporation.
40c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
50c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * This program is free software; you can redistribute it and/or modify it
60c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * under the terms of version 2 of the GNU General Public License as
70c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * published by the Free Software Foundation.
80c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
90c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT
100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * more details.
130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * You should have received a copy of the GNU General Public License along with
150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * this program; if not, write to the Free Software Foundation, Inc.,
160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * The full GNU General Public License is included in this distribution in the
190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * file called LICENSE.
200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Contact Information:
220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * wlanfae <wlanfae@realtek.com>
230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Hsinchu 300, Taiwan.
250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Larry Finger <Larry.Finger@lwfinger.net>
270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *
280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *****************************************************************************/
290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#ifndef __RTL92CE_TRX_H__
310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define __RTL92CE_TRX_H__
320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define TX_DESC_SIZE				64
340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define TX_DESC_AGGR_SUBFRAME_SIZE		32
350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define RX_DESC_SIZE				32
370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define RX_DRV_INFO_SIZE_UNIT			8
380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define	TX_DESC_NEXT_DESC_OFFSET		40
400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define USB_HWDESC_HEADER_LEN			32
410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CRCLENGTH				4
420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger/* Define a macro that takes a le32 word, converts it to host ordering,
4417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * right shifts by a specified count, creates a mask of the specified
4517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * bit count, and extracts that number of bits.
4617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger */
4717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger
4817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger#define SHIFT_AND_MASK_LE(__pdesc, __shift, __mask)		\
4917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	((le32_to_cpu(*(((__le32 *)(__pdesc)))) >> (__shift)) &	\
5017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	BIT_LEN_MASK_32(__mask))
5117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger
5217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger/* Define a macro that clears a bit field in an le32 word and
5317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * sets the specified value into that bit field. The resulting
5417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * value remains in le32 ordering; however, it is properly converted
5517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * to host ordering for the clear and set operations before conversion
5617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger * back to le32.
5717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger */
5817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger
5917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger#define SET_BITS_OFFSET_LE(__pdesc, __shift, __len, __val)	\
6017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	(*(__le32 *)(__pdesc) = 				\
6117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	(cpu_to_le32((le32_to_cpu(*((__le32 *)(__pdesc))) &	\
6217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	(~(BIT_OFFSET_LEN_MASK_32((__shift), __len)))) |		\
6317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	(((u32)(__val) & BIT_LEN_MASK_32(__len)) << (__shift)))));
6417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger
6517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger/* macros to read/write various fields in RX or TX descriptors */
6617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger
670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_PKT_SIZE(__pdesc, __val)		\
6817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 0, 16, __val)
690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_OFFSET(__pdesc, __val)		\
7017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 16, 8, __val)
710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_BMC(__pdesc, __val)			\
7217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 24, 1, __val)
730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_HTC(__pdesc, __val)			\
7417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 25, 1, __val)
750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_LAST_SEG(__pdesc, __val)		\
7617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 26, 1, __val)
770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_FIRST_SEG(__pdesc, __val)		\
7817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 27, 1, __val)
790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_LINIP(__pdesc, __val)		\
8017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 28, 1, __val)
810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_NO_ACM(__pdesc, __val)		\
8217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 29, 1, __val)
830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_GF(__pdesc, __val)			\
8417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val)
850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_OWN(__pdesc, __val)			\
8617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val)
870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_PKT_SIZE(__pdesc)			\
8917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 0, 16)
900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_OFFSET(__pdesc)			\
9117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 16, 8)
920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_BMC(__pdesc)			\
9317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 24, 1)
940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_HTC(__pdesc)			\
9517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 25, 1)
960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_LAST_SEG(__pdesc)			\
9717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 26, 1)
980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_FIRST_SEG(__pdesc)			\
9917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 27, 1)
1000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_LINIP(__pdesc)			\
10117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 28, 1)
1020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_NO_ACM(__pdesc)			\
10317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 29, 1)
1040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_GF(__pdesc)				\
10517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 30, 1)
1060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_OWN(__pdesc)			\
10717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 31, 1)
1080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
1090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MACID(__pdesc, __val)		\
11017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 0, 5, __val)
1110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_AGG_BREAK(__pdesc, __val)		\
11217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 5, 1, __val)
1130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_BK(__pdesc, __val)			\
11417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 6, 1, __val)
1150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RDG_ENABLE(__pdesc, __val)		\
11617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 7, 1, __val)
1170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_QUEUE_SEL(__pdesc, __val)		\
11817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 8, 5, __val)
1190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val)	\
12017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 13, 1, __val)
1210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val)	\
12217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 14, 1, __val)
1230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_PIFS(__pdesc, __val)		\
12417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 15, 1, __val)
1250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RATE_ID(__pdesc, __val)		\
12617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 16, 4, __val)
1270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val)	\
12817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 20, 1, __val)
1290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_EN_DESC_ID(__pdesc, __val)		\
13017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 21, 1, __val)
1310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_SEC_TYPE(__pdesc, __val)		\
13217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 22, 2, __val)
1330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_PKT_OFFSET(__pdesc, __val)		\
13417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+4, 24, 8, __val)
1350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
1360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MACID(__pdesc)			\
13717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 0, 5)
1380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_AGG_ENABLE(__pdesc)			\
13917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 5, 1)
1400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_AGG_BREAK(__pdesc)			\
14117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 6, 1)
1420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RDG_ENABLE(__pdesc)			\
14317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 7, 1)
1440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_QUEUE_SEL(__pdesc)			\
14517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 8, 5)
1460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RDG_NAV_EXT(__pdesc)		\
14717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 13, 1)
1480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_LSIG_TXOP_EN(__pdesc)		\
14917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 14, 1)
1500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_PIFS(__pdesc)			\
15117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 15, 1)
1520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RATE_ID(__pdesc)			\
15317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 16, 4)
1540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_NAV_USE_HDR(__pdesc)		\
15517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 20, 1)
1560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_EN_DESC_ID(__pdesc)			\
15717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 21, 1)
1580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_SEC_TYPE(__pdesc)			\
15917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 22, 2)
1600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_PKT_OFFSET(__pdesc)			\
16117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 24, 8)
1620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
1630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_RC(__pdesc, __val)		\
16417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 0, 6, __val)
1650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_RC(__pdesc, __val)		\
16617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 6, 6, __val)
1670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val)		\
16817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 14, 2, __val)
1690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MORE_FRAG(__pdesc, __val)		\
17017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 17, 1, __val)
1710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RAW(__pdesc, __val)			\
17217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 18, 1, __val)
1730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_CCX(__pdesc, __val)			\
17417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 19, 1, __val)
1750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val)	\
17617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 20, 3, __val)
1770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_ANTSEL_A(__pdesc, __val)		\
17817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 24, 1, __val)
1790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_ANTSEL_B(__pdesc, __val)		\
18017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 25, 1, __val)
1810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_ANT_CCK(__pdesc, __val)		\
18217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 26, 2, __val)
1830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_ANTL(__pdesc, __val)		\
18417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 28, 2, __val)
1850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_ANT_HT(__pdesc, __val)		\
18617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+8, 30, 2, __val)
1870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
1880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_RC(__pdesc)			\
18917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 0, 6)
1900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_RC(__pdesc)			\
19117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 6, 6)
1920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_BAR_RTY_TH(__pdesc)			\
19317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 14, 2)
1940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MORE_FRAG(__pdesc)			\
19517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 17, 1)
1960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RAW(__pdesc)			\
19717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 18, 1)
1980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_CCX(__pdesc)			\
19917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 19, 1)
2000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_AMPDU_DENSITY(__pdesc)		\
20117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 20, 3)
2020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_ANTSEL_A(__pdesc)			\
20317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 24, 1)
2040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_ANTSEL_B(__pdesc)			\
20517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 25, 1)
2060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_ANT_CCK(__pdesc)			\
20717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 26, 2)
2080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_ANTL(__pdesc)			\
20917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 28, 2)
2100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_ANT_HT(__pdesc)			\
21117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 30, 2)
2120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
2130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_NEXT_HEAP_PAGE(__pdesc, __val)	\
21417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+12, 0, 8, __val)
2150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TAIL_PAGE(__pdesc, __val)		\
21617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+12, 8, 8, __val)
2170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_SEQ(__pdesc, __val)			\
21817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+12, 16, 12, __val)
2190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_PKT_ID(__pdesc, __val)		\
22017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+12, 28, 4, __val)
2210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
2220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_NEXT_HEAP_PAGE(__pdesc)		\
22317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 0, 8)
2240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TAIL_PAGE(__pdesc)			\
22517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 8, 8)
2260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_SEQ(__pdesc)			\
22717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 16, 12)
2280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_PKT_ID(__pdesc)			\
22917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 28, 4)
2300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
2310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_RATE(__pdesc, __val)		\
23217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 0, 5, __val)
2330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_AP_DCFE(__pdesc, __val)		\
23417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 5, 1, __val)
2350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_QOS(__pdesc, __val)			\
23617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 6, 1, __val)
2370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_HWSEQ_EN(__pdesc, __val)		\
23817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 7, 1, __val)
2390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_USE_RATE(__pdesc, __val)		\
24017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 8, 1, __val)
2410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val)	\
24217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 9, 1, __val)
2430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DISABLE_FB(__pdesc, __val)		\
24417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 10, 1, __val)
2450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_CTS2SELF(__pdesc, __val)		\
24617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 11, 1, __val)
2470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_ENABLE(__pdesc, __val)		\
24817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 12, 1, __val)
2490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val)	\
25017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 13, 1, __val)
2510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_PORT_ID(__pdesc, __val)		\
25217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 14, 1, __val)
2530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_WAIT_DCTS(__pdesc, __val)		\
25417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 18, 1, __val)
2550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_CTS2AP_EN(__pdesc, __val)		\
25617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 19, 1, __val)
2570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val)	\
25817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 20, 2, __val)
2590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_STBC(__pdesc, __val)		\
26017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 22, 2, __val)
2610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_SHORT(__pdesc, __val)		\
26217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 24, 1, __val)
2630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_BW(__pdesc, __val)		\
26417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 25, 1, __val)
2650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_SHORT(__pdesc, __val)		\
26617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 26, 1, __val)
2670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_BW(__pdesc, __val)		\
26817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 27, 1, __val)
2690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_SC(__pdesc, __val)		\
27017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 28, 2, __val)
2710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_STBC(__pdesc, __val)		\
27217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+16, 30, 2, __val)
2730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
2740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_RATE(__pdesc)			\
27517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 0, 5)
2760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_AP_DCFE(__pdesc)			\
27717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 5, 1)
2780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_QOS(__pdesc)			\
27917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 6, 1)
2800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_HWSEQ_EN(__pdesc)			\
28117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 7, 1)
2820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_USE_RATE(__pdesc)			\
28317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 8, 1)
2840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DISABLE_RTS_FB(__pdesc)		\
28517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 9, 1)
2860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DISABLE_FB(__pdesc)			\
28717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 10, 1)
2880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_CTS2SELF(__pdesc)			\
28917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 11, 1)
2900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_ENABLE(__pdesc)			\
29117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 12, 1)
2920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_HW_RTS_ENABLE(__pdesc)		\
29317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 13, 1)
2940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_PORT_ID(__pdesc)			\
29517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 14, 1)
2960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_WAIT_DCTS(__pdesc)			\
29717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 18, 1)
2980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_CTS2AP_EN(__pdesc)			\
29917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 19, 1)
3000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_SUB_CARRIER(__pdesc)		\
30117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 20, 2)
3020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_STBC(__pdesc)			\
30317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 22, 2)
3040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_SHORT(__pdesc)			\
30517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 24, 1)
3060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_BW(__pdesc)			\
30717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 25, 1)
3080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_SHORT(__pdesc)			\
30917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 26, 1)
3100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_BW(__pdesc)			\
31117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 27, 1)
3120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_SC(__pdesc)			\
31317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 28, 2)
3140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_STBC(__pdesc)			\
31517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 30, 2)
3160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_RATE(__pdesc, __val)		\
31817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 0, 6, __val)
3190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val)	\
32017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 6, 1, __val)
3210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_CCX_TAG(__pdesc, __val)		\
32217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 7, 1, __val)
3230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val)	\
32417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 8, 5, __val)
3250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val)	\
32617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 13, 4, __val)
3270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val)	\
32817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 17, 1, __val)
3290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val)	\
33017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 18, 6, __val)
3310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_USB_TXAGG_NUM(__pdesc, __val)	\
33217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+20, 24, 8, __val)
3330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_RATE(__pdesc)			\
33517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 0, 6)
3360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_SHORTGI(__pdesc)		\
33717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 6, 1)
3380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_CCX_TAG(__pdesc)			\
33917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 7, 1)
3400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc)		\
34117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 8, 5)
3420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc)		\
34317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 13, 4)
3440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc)		\
34517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 17, 1)
3460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_DATA_RETRY_LIMIT(__pdesc)		\
34717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 18, 6)
3480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_USB_TXAGG_NUM(__pdesc)		\
34917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 24, 8)
3500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TXAGC_A(__pdesc, __val)		\
35217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 0, 5, __val)
3530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TXAGC_B(__pdesc, __val)		\
35417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 5, 5, __val)
3550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val)		\
35617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 10, 1, __val)
3570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val)		\
35817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 11, 5, __val)
3590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG1_MAX_LEN(__pdesc, __val)	\
36017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 16, 4, __val)
3610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG2_MAX_LEN(__pdesc, __val)	\
36217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 20, 4, __val)
3630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG3_MAX_LEN(__pdesc, __val)	\
36417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 24, 4, __val)
3650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc, __val)	\
36617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 28, 4, __val)
3670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TXAGC_A(__pdesc)			\
36917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 0, 5)
3700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TXAGC_B(__pdesc)			\
37117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 5, 5)
3720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_USE_MAX_LEN(__pdesc)		\
37317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 10, 1)
3740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MAX_AGG_NUM(__pdesc)		\
37517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 11, 5)
3760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG1_MAX_LEN(__pdesc)		\
37717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 16, 4)
3780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG2_MAX_LEN(__pdesc)		\
37917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 20, 4)
3800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG3_MAX_LEN(__pdesc)		\
38117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 24, 4)
3820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc)		\
38317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 28, 4)
3840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val)	\
38617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 0, 16, __val)
3870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG4_MAX_LEN(__pdesc, __val)	\
38817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 16, 4, __val)
3890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG5_MAX_LEN(__pdesc, __val)	\
39017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 20, 4, __val)
3910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCSG6_MAX_LEN(__pdesc, __val)	\
39217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 24, 4, __val)
3930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc, __val)	\
39417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 28, 4, __val)
3950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
3960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc)		\
39717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 0, 16)
3980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG4_MAX_LEN(__pdesc)		\
39917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 16, 4)
4000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG5_MAX_LEN(__pdesc)		\
40117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 20, 4)
4020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCSG6_MAX_LEN(__pdesc)		\
40317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 24, 4)
4040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc)		\
40517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 28, 4)
4060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4070c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val)	\
40817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+32, 0, 32, __val)
4090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc, __val) \
41017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+36, 0, 32, __val)
4110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc)		\
41317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+32, 0, 32)
4140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc)	\
41517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+36, 0, 32)
4160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val)	\
41817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+40, 0, 32, __val)
4190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc, __val) \
42017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+44, 0, 32, __val)
4210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc)		\
42317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+40, 0, 32)
4240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc)	\
42517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+44, 0, 32)
4260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_PKT_LEN(__pdesc)			\
42817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 0, 14)
4290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_CRC32(__pdesc)			\
43017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 14, 1)
4310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_ICV(__pdesc)			\
43217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 15, 1)
4330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_DRV_INFO_SIZE(__pdesc)		\
43417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 16, 4)
4350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_SECURITY(__pdesc)			\
43617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 20, 3)
4370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_QOS(__pdesc)			\
43817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 23, 1)
4390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_SHIFT(__pdesc)			\
44017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 24, 2)
4410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_PHYST(__pdesc)			\
44217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 26, 1)
4430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_SWDEC(__pdesc)			\
44417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 27, 1)
4450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_LS(__pdesc)				\
44617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 28, 1)
4470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_FS(__pdesc)				\
44817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 29, 1)
4490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_EOR(__pdesc)			\
45017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 30, 1)
4510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_OWN(__pdesc)			\
45217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc, 31, 1)
4530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_RX_DESC_PKT_LEN(__pdesc, __val)		\
45517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 0, 14, __val)
4560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_RX_DESC_EOR(__pdesc, __val)			\
45717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val)
4580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_RX_DESC_OWN(__pdesc, __val)			\
45917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val)
4600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
4610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_MACID(__pdesc)			\
46217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 0, 5)
4630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_TID(__pdesc)			\
46417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 5, 4)
4650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_HWRSVD(__pdesc)			\
46617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 9, 5)
4670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_PAGGR(__pdesc)			\
46817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 14, 1)
4690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_FAGGR(__pdesc)			\
47017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 15, 1)
4710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_A1_FIT(__pdesc)			\
47217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 16, 4)
4730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_A2_FIT(__pdesc)			\
47417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 20, 4)
4750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_PAM(__pdesc)			\
47617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 24, 1)
4770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_PWR(__pdesc)			\
47817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 25, 1)
4790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_MD(__pdesc)				\
48017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 26, 1)
4810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_MF(__pdesc)				\
48217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 27, 1)
4830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_TYPE(__pdesc)			\
48417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 28, 2)
4850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_MC(__pdesc)				\
48617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 30, 1)
4870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_BC(__pdesc)				\
48817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+4, 31, 1)
4890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_SEQ(__pdesc)			\
49017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 0, 12)
4910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_FRAG(__pdesc)			\
49217c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 12, 4)
4930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_NEXT_PKT_LEN(__pdesc)		\
49417c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 16, 14)
4950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_NEXT_IND(__pdesc)			\
49617c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 30, 1)
4970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_RSVD(__pdesc)			\
49817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+8, 31, 1)
4990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_RXMCS(__pdesc)			\
50117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 0, 6)
5020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_RXHT(__pdesc)			\
50317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 6, 1)
5040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_SPLCP(__pdesc)			\
50517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 8, 1)
5060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_BW(__pdesc)				\
50717c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 9, 1)
5080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_HTC(__pdesc)			\
50917c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 10, 1)
5100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_HWPC_ERR(__pdesc)			\
51117c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 14, 1)
5120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_HWPC_IND(__pdesc)			\
51317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 15, 1)
5140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_IV0(__pdesc)			\
51517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+12, 16, 16)
5160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_IV1(__pdesc)			\
51817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+16, 0, 32)
5190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_TSFL(__pdesc)			\
52017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+20, 0, 32)
5210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_BUFF_ADDR(__pdesc)			\
52317c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+24, 0, 32)
5240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define GET_RX_DESC_BUFF_ADDR64(__pdesc)		\
52517c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SHIFT_AND_MASK_LE(__pdesc+28, 0, 32)
5260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_RX_DESC_BUFF_ADDR(__pdesc, __val)		\
52817c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+24, 0, 32, __val)
5290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) 	\
53017c9ac62812b58aacefc7336215aecbb522f6547Larry Finger	SET_BITS_OFFSET_LE(__pdesc+28, 0, 32, __val)
5310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size)	\
5330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerdo {							\
5340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	if (_size > TX_DESC_NEXT_DESC_OFFSET)		\
535716b1bf3c5040f2303d6d1d0dfee6d8851cedc9dLarry Finger		memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET);	\
5360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	else						\
537716b1bf3c5040f2303d6d1d0dfee6d8851cedc9dLarry Finger		memset(__pdesc, 0, _size);	\
5380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger} while (0);
5390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct rx_fwinfo_92c {
5410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 gain_trsw[4];
5420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 pwdb_all;
5430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 cfosho[4];
5440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 cfotail[4];
5450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	char rxevm[2];
5460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	char rxsnr[4];
5470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 pdsnr[2];
5480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 csi_current[2];
5490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 csi_target[2];
5500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 sigevm;
5510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 max_ex_pwr;
5520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 ex_intf_flag:1;
5530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 sgi_en:1;
5540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 rxsc:2;
5550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u8 reserve:4;
556e137478b56fd79c397b5c5c74fc08c049a42835aJohn W. Linville} __packed;
5570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct tx_desc_92c {
5590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pktsize:16;
5600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 offset:8;
5610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bmc:1;
5620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 htc:1;
5630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 lastseg:1;
5640c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 firstseg:1;
5650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 linip:1;
5660c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 noacm:1;
5670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 gf:1;
5680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 own:1;
5690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 macid:5;
5710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 agg_en:1;
5720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bk:1;
5730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rdg_en:1;
5740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 queuesel:5;
5750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rd_nav_ext:1;
5760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 lsig_txop_en:1;
5770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pifs:1;
5780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rateid:4;
5790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nav_usehdr:1;
5800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 en_descid:1;
5810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 sectype:2;
5820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pktoffset:8;
5830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
5840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rts_rc:6;
5850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 data_rc:6;
5860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rsvd0:2;
5870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bar_retryht:2;
5880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rsvd1:1;
5890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 morefrag:1;
5900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 raw:1;
5910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ccx:1;
5920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ampdudensity:3;
5930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rsvd2:1;
5940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ant_sela:1;
5950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ant_selb:1;
5960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txant_cck:2;
5970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txant_l:2;
5980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txant_ht:2;
5990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nextheadpage:8;
6010c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 tailpage:8;
6020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 seq:12;
6030c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pktid:4;
6040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6050c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtsrate:5;
6060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 apdcfe:1;
6070c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 qos:1;
6080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 hwseq_enable:1;
6090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 userrate:1;
6100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 dis_rtsfb:1;
6110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 dis_datafb:1;
6120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 cts2self:1;
6130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rts_en:1;
6140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 hwrts_en:1;
6150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 portid:1;
6160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rsvd3:3;
6170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 waitdcts:1;
6180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 cts2ap_en:1;
6190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txsc:2;
6200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 stbc:2;
6210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txshort:1;
6220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txbw:1;
6230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtsshort:1;
6240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtsbw:1;
6250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtssc:2;
6260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtsstbc:2;
6270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txrate:6;
6290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 shortgi:1;
6300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ccxt:1;
6310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txrate_fb_lmt:5;
6320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rtsrate_fb_lmt:4;
6330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 retrylmt_en:1;
6340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txretrylmt:6;
6350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 usb_txaggnum:8;
6360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txagca:5;
6380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txagcb:5;
6390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 usemaxlen:1;
6400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 maxaggnum:5;
6410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg1maxlen:4;
6420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg2maxlen:4;
6430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg3maxlen:4;
6440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcs7sgimaxlen:4;
6450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txbuffersize:16;
6470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg4maxlen:4;
6480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg5maxlen:4;
6490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg6maxlen:4;
6500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mcsg15sgimaxlen:4;
6510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txbuffaddr;
6530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 txbufferaddr64;
6540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nextdescaddress;
6550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nextdescaddress64;
6560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 reserve_pass_pcie_mm_limit[4];
658e137478b56fd79c397b5c5c74fc08c049a42835aJohn W. Linville} __packed;
6590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct rx_desc_92c {
6610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 length:14;
6620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 crc32:1;
6630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 icverror:1;
6640c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 drv_infosize:4;
6650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 security:3;
6660c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 qos:1;
6670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 shift:2;
6680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 phystatus:1;
6690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 swdec:1;
6700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 lastseg:1;
6710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 firstseg:1;
6720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 eor:1;
6730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 own:1;
6740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 macid:5;
6760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 tid:4;
6770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 hwrsvd:5;
6780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 paggr:1;
6790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 faggr:1;
6800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 a1_fit:4;
6810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 a2_fit:4;
6820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pam:1;
6830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 pwr:1;
6840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 moredata:1;
6850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 morefrag:1;
6860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 type:2;
6870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 mc:1;
6880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bc:1;
6890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 seq:12;
6910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 frag:4;
6920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nextpktlen:14;
6930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 nextind:1;
6940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rsvd:1;
6950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
6960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rxmcs:6;
6970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 rxht:1;
6980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 amsdu:1;
6990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 splcp:1;
7000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bandwidth:1;
7010c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 htc:1;
7020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 tcpchk_rpt:1;
7030c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 ipcchk_rpt:1;
7040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 tcpchk_valid:1;
7050c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 hwpcerr:1;
7060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 hwpcind:1;
7070c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 iv0:16;
7080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
7090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 iv1;
7100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
7110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 tsfl;
7120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
7130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bufferaddress;
7140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger	u32 bufferaddress64;
7150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
716e137478b56fd79c397b5c5c74fc08c049a42835aJohn W. Linville} __packed;
7170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger
7180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
7190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			  struct ieee80211_hdr *hdr,
7200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			  u8 *pdesc, struct ieee80211_tx_info *info,
72176c34f910a5c99a402de5068444563d4c151e794Chaoming_Li			  struct sk_buff *skb, u8 hw_queue,
72276c34f910a5c99a402de5068444563d4c151e794Chaoming_Li			  struct rtl_tcb_desc *ptcb_desc);
7230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerbool rtl92ce_rx_query_desc(struct ieee80211_hw *hw,
7240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			   struct rtl_stats *stats,
7250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			   struct ieee80211_rx_status *rx_status,
7260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			   u8 *pdesc, struct sk_buff *skb);
7270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92ce_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val);
7280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingeru32 rtl92ce_get_desc(u8 *pdesc, bool istx, u8 desc_name);
72976c34f910a5c99a402de5068444563d4c151e794Chaoming_Livoid rtl92ce_tx_polling(struct ieee80211_hw *hw, u8 hw_queue);
7300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc,
7310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			     bool b_firstseg, bool b_lastseg,
7320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger			     struct sk_buff *skb);
7330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#endif
734