1674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li/****************************************************************************** 2674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 36a57b08e222f4e054a7e7160ef7426c5614c0cc0Larry Finger * Copyright(c) 2009-2012 Realtek Corporation. 4674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 5674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * This program is free software; you can redistribute it and/or modify it 6674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * under the terms of version 2 of the GNU General Public License as 7674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * published by the Free Software Foundation. 8674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 9674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * This program is distributed in the hope that it will be useful, but WITHOUT 10674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * more details. 13674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 14674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * You should have received a copy of the GNU General Public License along with 15674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * this program; if not, write to the Free Software Foundation, Inc., 16674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 18674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * The full GNU General Public License is included in this distribution in the 19674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * file called LICENSE. 20674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 21674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * Contact Information: 22674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * wlanfae <wlanfae@realtek.com> 23674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 24674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * Hsinchu 300, Taiwan. 25674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 26674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * Larry Finger <Larry.Finger@lwfinger.net> 27674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * 28674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li *****************************************************************************/ 29674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 30674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#ifndef __RTL92DE_TRX_H__ 31674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define __RTL92DE_TRX_H__ 32674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 33674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define TX_DESC_SIZE 64 34674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define TX_DESC_AGGR_SUBFRAME_SIZE 32 35674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 36674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define RX_DESC_SIZE 32 37674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define RX_DRV_INFO_SIZE_UNIT 8 38674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 39674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define TX_DESC_NEXT_DESC_OFFSET 40 40674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define USB_HWDESC_HEADER_LEN 32 41674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define CRCLENGTH 4 42674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 43674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li/* Define a macro that takes a le32 word, converts it to host ordering, 44674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * right shifts by a specified count, creates a mask of the specified 45674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * bit count, and extracts that number of bits. 46674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li */ 47674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 48674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SHIFT_AND_MASK_LE(__pdesc, __shift, __mask) \ 49674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li ((le32_to_cpu(*(((__le32 *)(__pdesc)))) >> (__shift)) & \ 50674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li BIT_LEN_MASK_32(__mask)) 51674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 52674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li/* Define a macro that clears a bit field in an le32 word and 53674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * sets the specified value into that bit field. The resulting 54674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * value remains in le32 ordering; however, it is properly converted 55674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * to host ordering for the clear and set operations before conversion 56674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li * back to le32. 57674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li */ 58674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 59674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_BITS_OFFSET_LE(__pdesc, __shift, __len, __val) \ 60674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li (*(__le32 *)(__pdesc) = \ 61674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li (cpu_to_le32((le32_to_cpu(*((__le32 *)(__pdesc))) & \ 62674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li (~(BIT_OFFSET_LEN_MASK_32((__shift), __len)))) | \ 63674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li (((u32)(__val) & BIT_LEN_MASK_32(__len)) << (__shift))))); 64674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 65674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li/* macros to read/write various fields in RX or TX descriptors */ 66674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 67674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ 68674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 0, 16, __val) 69674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_OFFSET(__pdesc, __val) \ 70674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 16, 8, __val) 71674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_BMC(__pdesc, __val) \ 72674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 24, 1, __val) 73674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_HTC(__pdesc, __val) \ 74674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 25, 1, __val) 75674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ 76674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 26, 1, __val) 77674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ 78674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 27, 1, __val) 79674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_LINIP(__pdesc, __val) \ 80674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 28, 1, __val) 81674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_NO_ACM(__pdesc, __val) \ 82674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 29, 1, __val) 83674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_GF(__pdesc, __val) \ 84674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val) 85674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_OWN(__pdesc, __val) \ 86674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val) 87674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 88674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_PKT_SIZE(__pdesc) \ 89674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 0, 16) 90674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_OFFSET(__pdesc) \ 91674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 16, 8) 92674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_BMC(__pdesc) \ 93674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 24, 1) 94674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_HTC(__pdesc) \ 95674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 25, 1) 96674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_LAST_SEG(__pdesc) \ 97674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 26, 1) 98674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_FIRST_SEG(__pdesc) \ 99674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 27, 1) 100674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_LINIP(__pdesc) \ 101674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 28, 1) 102674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_NO_ACM(__pdesc) \ 103674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 29, 1) 104674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_GF(__pdesc) \ 105674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 30, 1) 106674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_OWN(__pdesc) \ 107674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 31, 1) 108674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 109674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MACID(__pdesc, __val) \ 110674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 0, 5, __val) 111674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_AGG_ENABLE(__pdesc, __val) \ 112674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 5, 1, __val) 113674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_BK(__pdesc, __val) \ 114674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 6, 1, __val) 115674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RDG_ENABLE(__pdesc, __val) \ 116674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 7, 1, __val) 117674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ 118674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 8, 5, __val) 119674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RDG_NAV_EXT(__pdesc, __val) \ 120674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 13, 1, __val) 121674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_LSIG_TXOP_EN(__pdesc, __val) \ 122674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 14, 1, __val) 123674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_PIFS(__pdesc, __val) \ 124674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 15, 1, __val) 125674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RATE_ID(__pdesc, __val) \ 126674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 16, 4, __val) 127674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_NAV_USE_HDR(__pdesc, __val) \ 128674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 20, 1, __val) 129674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ 130674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 21, 1, __val) 131674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ 132674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 22, 2, __val) 133674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ 134674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+4, 26, 8, __val) 135674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 136674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MACID(__pdesc) \ 137674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 0, 5) 138674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_AGG_ENABLE(__pdesc) \ 139674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 5, 1) 140674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_AGG_BREAK(__pdesc) \ 141674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 6, 1) 142674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RDG_ENABLE(__pdesc) \ 143674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 7, 1) 144674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_QUEUE_SEL(__pdesc) \ 145674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 8, 5) 146674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RDG_NAV_EXT(__pdesc) \ 147674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 13, 1) 148674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_LSIG_TXOP_EN(__pdesc) \ 149674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 14, 1) 150674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_PIFS(__pdesc) \ 151674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 15, 1) 152674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RATE_ID(__pdesc) \ 153674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 16, 4) 154674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_NAV_USE_HDR(__pdesc) \ 155674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 20, 1) 156674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_EN_DESC_ID(__pdesc) \ 157674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 21, 1) 158674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_SEC_TYPE(__pdesc) \ 159674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 22, 2) 160674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_PKT_OFFSET(__pdesc) \ 161674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 24, 8) 162674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 163674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_RC(__pdesc, __val) \ 164674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 0, 6, __val) 165674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_RC(__pdesc, __val) \ 166674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 6, 6, __val) 167674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_BAR_RTY_TH(__pdesc, __val) \ 168674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 14, 2, __val) 169674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ 170674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 17, 1, __val) 171674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RAW(__pdesc, __val) \ 172674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 18, 1, __val) 173674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_CCX(__pdesc, __val) \ 174674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 19, 1, __val) 175674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_AMPDU_DENSITY(__pdesc, __val) \ 176674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 20, 3, __val) 177674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_ANTSEL_A(__pdesc, __val) \ 178674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 24, 1, __val) 179674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_ANTSEL_B(__pdesc, __val) \ 180674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 25, 1, __val) 181674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_ANT_CCK(__pdesc, __val) \ 182674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 26, 2, __val) 183674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_ANTL(__pdesc, __val) \ 184674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 28, 2, __val) 185674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_ANT_HT(__pdesc, __val) \ 186674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+8, 30, 2, __val) 187674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 188674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_RC(__pdesc) \ 189674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 0, 6) 190674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_RC(__pdesc) \ 191674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 6, 6) 192674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_BAR_RTY_TH(__pdesc) \ 193674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 14, 2) 194674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MORE_FRAG(__pdesc) \ 195674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 17, 1) 196674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RAW(__pdesc) \ 197674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 18, 1) 198674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_CCX(__pdesc) \ 199674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 19, 1) 200674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_AMPDU_DENSITY(__pdesc) \ 201674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 20, 3) 202674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_ANTSEL_A(__pdesc) \ 203674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 24, 1) 204674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_ANTSEL_B(__pdesc) \ 205674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 25, 1) 206674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_ANT_CCK(__pdesc) \ 207674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 26, 2) 208674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_ANTL(__pdesc) \ 209674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 28, 2) 210674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_ANT_HT(__pdesc) \ 211674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 30, 2) 212674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 213674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_NEXT_HEAP_PAGE(__pdesc, __val) \ 214674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+12, 0, 8, __val) 215674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TAIL_PAGE(__pdesc, __val) \ 216674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+12, 8, 8, __val) 217674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_SEQ(__pdesc, __val) \ 218674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+12, 16, 12, __val) 219674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_PKT_ID(__pdesc, __val) \ 220674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+12, 28, 4, __val) 221674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 222674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_NEXT_HEAP_PAGE(__pdesc) \ 223674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 0, 8) 224674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TAIL_PAGE(__pdesc) \ 225674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 8, 8) 226674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_SEQ(__pdesc) \ 227674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 16, 12) 228674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_PKT_ID(__pdesc) \ 229674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 28, 4) 230674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 231674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ 232674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 0, 5, __val) 233674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_AP_DCFE(__pdesc, __val) \ 234674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 5, 1, __val) 235674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_QOS(__pdesc, __val) \ 236674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 6, 1, __val) 237674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_HWSEQ_EN(__pdesc, __val) \ 238674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 7, 1, __val) 239674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_USE_RATE(__pdesc, __val) \ 240674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 8, 1, __val) 241674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ 242674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 9, 1, __val) 243674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ 244674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 10, 1, __val) 245674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_CTS2SELF(__pdesc, __val) \ 246674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 11, 1, __val) 247674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ 248674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 12, 1, __val) 249674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_HW_RTS_ENABLE(__pdesc, __val) \ 250674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 13, 1, __val) 251674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_PORT_ID(__pdesc, __val) \ 252674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 14, 1, __val) 253674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_WAIT_DCTS(__pdesc, __val) \ 254674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 18, 1, __val) 255674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_CTS2AP_EN(__pdesc, __val) \ 256674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 19, 1, __val) 257674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ 258674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 20, 2, __val) 259674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_STBC(__pdesc, __val) \ 260674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 22, 2, __val) 261674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_SHORT(__pdesc, __val) \ 262674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 24, 1, __val) 263674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_BW(__pdesc, __val) \ 264674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 25, 1, __val) 265674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ 266674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 26, 1, __val) 267674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_BW(__pdesc, __val) \ 268674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 27, 1, __val) 269674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_SC(__pdesc, __val) \ 270674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 28, 2, __val) 271674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_STBC(__pdesc, __val) \ 272674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+16, 30, 2, __val) 273674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 274674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_RATE(__pdesc) \ 275674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 0, 5) 276674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_AP_DCFE(__pdesc) \ 277674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 5, 1) 278674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_QOS(__pdesc) \ 279674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 6, 1) 280674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_HWSEQ_EN(__pdesc) \ 281674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 7, 1) 282674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_USE_RATE(__pdesc) \ 283674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 8, 1) 284674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DISABLE_RTS_FB(__pdesc) \ 285674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 9, 1) 286674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DISABLE_FB(__pdesc) \ 287674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 10, 1) 288674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_CTS2SELF(__pdesc) \ 289674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 11, 1) 290674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_ENABLE(__pdesc) \ 291674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 12, 1) 292674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_HW_RTS_ENABLE(__pdesc) \ 293674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 13, 1) 294674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_PORT_ID(__pdesc) \ 295674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 14, 1) 296674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_WAIT_DCTS(__pdesc) \ 297674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 18, 1) 298674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_CTS2AP_EN(__pdesc) \ 299674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 19, 1) 300674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_SUB_CARRIER(__pdesc) \ 301674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 20, 2) 302674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_STBC(__pdesc) \ 303674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 22, 2) 304674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_SHORT(__pdesc) \ 305674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 24, 1) 306674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_BW(__pdesc) \ 307674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 25, 1) 308674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_SHORT(__pdesc) \ 309674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 26, 1) 310674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_BW(__pdesc) \ 311674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 27, 1) 312674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_SC(__pdesc) \ 313674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 28, 2) 314674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_STBC(__pdesc) \ 315674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 30, 2) 316674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 317674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_RATE(__pdesc, __val) \ 318674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 0, 6, __val) 319674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_SHORTGI(__pdesc, __val) \ 320674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 6, 1, __val) 321674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_CCX_TAG(__pdesc, __val) \ 322674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 7, 1, __val) 323674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ 324674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 8, 5, __val) 325674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ 326674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 13, 4, __val) 327674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ 328674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 17, 1, __val) 329674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ 330674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 18, 6, __val) 331674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_USB_TXAGG_NUM(__pdesc, __val) \ 332674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+20, 24, 8, __val) 333674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 334674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_RATE(__pdesc) \ 335674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 0, 6) 336674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_SHORTGI(__pdesc) \ 337674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 6, 1) 338674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_CCX_TAG(__pdesc) \ 339674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 7, 1) 340674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc) \ 341674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 8, 5) 342674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc) \ 343674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 13, 4) 344674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc) \ 345674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 17, 1) 346674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_DATA_RETRY_LIMIT(__pdesc) \ 347674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 18, 6) 348674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_USB_TXAGG_NUM(__pdesc) \ 349674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 24, 8) 350674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 351674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TXAGC_A(__pdesc, __val) \ 352674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 0, 5, __val) 353674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TXAGC_B(__pdesc, __val) \ 354674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 5, 5, __val) 355674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_USE_MAX_LEN(__pdesc, __val) \ 356674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 10, 1, __val) 357674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MAX_AGG_NUM(__pdesc, __val) \ 358674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 11, 5, __val) 359674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG1_MAX_LEN(__pdesc, __val) \ 360674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 16, 4, __val) 361674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG2_MAX_LEN(__pdesc, __val) \ 362674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 20, 4, __val) 363674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG3_MAX_LEN(__pdesc, __val) \ 364674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 24, 4, __val) 365674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc, __val) \ 366674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 28, 4, __val) 367674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 368674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TXAGC_A(__pdesc) \ 369674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 0, 5) 370674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TXAGC_B(__pdesc) \ 371674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 5, 5) 372674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_USE_MAX_LEN(__pdesc) \ 373674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 10, 1) 374674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MAX_AGG_NUM(__pdesc) \ 375674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 11, 5) 376674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG1_MAX_LEN(__pdesc) \ 377674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 16, 4) 378674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG2_MAX_LEN(__pdesc) \ 379674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 20, 4) 380674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG3_MAX_LEN(__pdesc) \ 381674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 24, 4) 382674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCS7_SGI_MAX_LEN(__pdesc) \ 383674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 28, 4) 384674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 385674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ 386674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 0, 16, __val) 387674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG4_MAX_LEN(__pdesc, __val) \ 388674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 16, 4, __val) 389674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG5_MAX_LEN(__pdesc, __val) \ 390674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 20, 4, __val) 391674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCSG6_MAX_LEN(__pdesc, __val) \ 392674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 24, 4, __val) 393674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc, __val) \ 394674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 28, 4, __val) 395674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 396674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_BUFFER_SIZE(__pdesc) \ 397674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 0, 16) 398674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG4_MAX_LEN(__pdesc) \ 399674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 16, 4) 400674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG5_MAX_LEN(__pdesc) \ 401674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 20, 4) 402674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCSG6_MAX_LEN(__pdesc) \ 403674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 24, 4) 404674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_MCS15_SGI_MAX_LEN(__pdesc) \ 405674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 28, 4) 406674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 407674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ 408674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+32, 0, 32, __val) 409674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc, __val) \ 410674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+36, 0, 32, __val) 411674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 412674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ 413674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+32, 0, 32) 414674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_TX_BUFFER_ADDRESS64(__pdesc) \ 415674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+36, 0, 32) 416674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 417674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ 418674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+40, 0, 32, __val) 419674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc, __val) \ 420674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+44, 0, 32, __val) 421674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 422674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc) \ 423674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+40, 0, 32) 424674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_TX_DESC_NEXT_DESC_ADDRESS64(__pdesc) \ 425674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+44, 0, 32) 426674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 427674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_PKT_LEN(__pdesc) \ 428674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 0, 14) 429674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_CRC32(__pdesc) \ 430674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 14, 1) 431674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_ICV(__pdesc) \ 432674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 15, 1) 433674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_DRV_INFO_SIZE(__pdesc) \ 434674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 16, 4) 435674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_SECURITY(__pdesc) \ 436674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 20, 3) 437674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_QOS(__pdesc) \ 438674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 23, 1) 439674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_SHIFT(__pdesc) \ 440674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 24, 2) 441674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_PHYST(__pdesc) \ 442674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 26, 1) 443674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_SWDEC(__pdesc) \ 444674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 27, 1) 445674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_LS(__pdesc) \ 446674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 28, 1) 447674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_FS(__pdesc) \ 448674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 29, 1) 449674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_EOR(__pdesc) \ 450674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 30, 1) 451674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_OWN(__pdesc) \ 452674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 31, 1) 453674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 454674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_RX_DESC_PKT_LEN(__pdesc, __val) \ 455674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 0, 14, __val) 456674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_RX_DESC_EOR(__pdesc, __val) \ 457674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val) 458674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_RX_DESC_OWN(__pdesc, __val) \ 459674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val) 460674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 461674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_MACID(__pdesc) \ 462674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 0, 5) 463674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_TID(__pdesc) \ 464674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 5, 4) 465674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_HWRSVD(__pdesc) \ 466674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 9, 5) 467674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_PAGGR(__pdesc) \ 468674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 14, 1) 469674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_FAGGR(__pdesc) \ 470674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 15, 1) 471674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_A1_FIT(__pdesc) \ 472674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 16, 4) 473674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_A2_FIT(__pdesc) \ 474674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 20, 4) 475674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_PAM(__pdesc) \ 476674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 24, 1) 477674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_PWR(__pdesc) \ 478674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 25, 1) 479674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_MD(__pdesc) \ 480674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 26, 1) 481674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_MF(__pdesc) \ 482674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 27, 1) 483674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_TYPE(__pdesc) \ 484674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 28, 2) 485674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_MC(__pdesc) \ 486674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 30, 1) 487674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_BC(__pdesc) \ 488674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+4, 31, 1) 489674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_SEQ(__pdesc) \ 490674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 0, 12) 491674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_FRAG(__pdesc) \ 492674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 12, 4) 493674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_NEXT_PKT_LEN(__pdesc) \ 494674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 16, 14) 495674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_NEXT_IND(__pdesc) \ 496674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 30, 1) 497674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_RSVD(__pdesc) \ 498674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+8, 31, 1) 499674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 500674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_RXMCS(__pdesc) \ 501674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 0, 6) 502674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_RXHT(__pdesc) \ 503674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 6, 1) 504674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_SPLCP(__pdesc) \ 505674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 8, 1) 506674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_BW(__pdesc) \ 507674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 9, 1) 508674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_HTC(__pdesc) \ 509674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 10, 1) 510674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_HWPC_ERR(__pdesc) \ 511674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 14, 1) 512674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_HWPC_IND(__pdesc) \ 513674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 15, 1) 514674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_IV0(__pdesc) \ 515674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+12, 16, 16) 516674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 517674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_IV1(__pdesc) \ 518674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+16, 0, 32) 519674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_TSFL(__pdesc) \ 520674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+20, 0, 32) 521674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 522674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_BUFF_ADDR(__pdesc) \ 523674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+24, 0, 32) 524674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define GET_RX_DESC_BUFF_ADDR64(__pdesc) \ 525674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SHIFT_AND_MASK_LE(__pdesc+28, 0, 32) 526674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 527674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_RX_DESC_BUFF_ADDR(__pdesc, __val) \ 528674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+24, 0, 32, __val) 529674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_RX_DESC_BUFF_ADDR64(__pdesc, __val) \ 530674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__pdesc+28, 0, 32, __val) 531674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 532674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ 533674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Lido { \ 534674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li if (_size > TX_DESC_NEXT_DESC_OFFSET) \ 535674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li memset((void *)__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET); \ 536674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li else \ 537674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li memset((void *)__pdesc, 0, _size); \ 538674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li} while (0); 539674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 540674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li/* For 92D early mode */ 541674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_PKTNUM(__paddr, __value) \ 542674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr, 0, 3, __value) 543674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN0(__paddr, __value) \ 544674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr, 4, 12, __value) 545674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN1(__paddr, __value) \ 546674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr, 16, 12, __value) 547674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN2_1(__paddr, __value) \ 548674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr, 28, 4, __value) 549674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN2_2(__paddr, __value) \ 550674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr+4, 0, 8, __value) 551674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN3(__paddr, __value) \ 552674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr+4, 8, 12, __value) 553674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#define SET_EARLYMODE_LEN4(__paddr, __value) \ 554674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li SET_BITS_OFFSET_LE(__paddr+4, 20, 12, __value) 555674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 556674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Listruct rx_fwinfo_92d { 557674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 gain_trsw[4]; 558674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 pwdb_all; 559674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 cfosho[4]; 560674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 cfotail[4]; 561674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li char rxevm[2]; 562674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li char rxsnr[4]; 563674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 pdsnr[2]; 564674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 csi_current[2]; 565674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 csi_target[2]; 566674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 sigevm; 567674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 max_ex_pwr; 568674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 ex_intf_flag:1; 569674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 sgi_en:1; 570674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 rxsc:2; 571674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 reserve:4; 572674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li} __packed; 573674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 574674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Listruct tx_desc_92d { 575674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pktsize:16; 576674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 offset:8; 577674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bmc:1; 578674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 htc:1; 579674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 lastseg:1; 580674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 firstseg:1; 581674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 linip:1; 582674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 noacm:1; 583674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 gf:1; 584674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 own:1; 585674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 586674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 macid:5; 587674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 agg_en:1; 588674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bk:1; 589674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rdg_en:1; 590674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 queuesel:5; 591674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rd_nav_ext:1; 592674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 lsig_txop_en:1; 593674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pifs:1; 594674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rateid:4; 595674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nav_usehdr:1; 596674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 en_descid:1; 597674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 sectype:2; 598674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pktoffset:8; 599674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 600674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rts_rc:6; 601674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 data_rc:6; 602674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rsvd0:2; 603674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bar_retryht:2; 604674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rsvd1:1; 605674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 morefrag:1; 606674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 raw:1; 607674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ccx:1; 608674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ampdudensity:3; 609674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rsvd2:1; 610674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ant_sela:1; 611674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ant_selb:1; 612674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txant_cck:2; 613674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txant_l:2; 614674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txant_ht:2; 615674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 616674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nextheadpage:8; 617674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 tailpage:8; 618674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 seq:12; 619674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pktid:4; 620674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 621674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtsrate:5; 622674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 apdcfe:1; 623674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 qos:1; 624674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 hwseq_enable:1; 625674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 userrate:1; 626674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 dis_rtsfb:1; 627674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 dis_datafb:1; 628674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 cts2self:1; 629674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rts_en:1; 630674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 hwrts_en:1; 631674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 portid:1; 632674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rsvd3:3; 633674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 waitdcts:1; 634674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 cts2ap_en:1; 635674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txsc:2; 636674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 stbc:2; 637674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txshort:1; 638674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txbw:1; 639674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtsshort:1; 640674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtsbw:1; 641674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtssc:2; 642674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtsstbc:2; 643674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 644674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txrate:6; 645674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 shortgi:1; 646674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ccxt:1; 647674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txrate_fb_lmt:5; 648674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rtsrate_fb_lmt:4; 649674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 retrylmt_en:1; 650674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txretrylmt:6; 651674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 usb_txaggnum:8; 652674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 653674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txagca:5; 654674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txagcb:5; 655674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 usemaxlen:1; 656674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 maxaggnum:5; 657674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg1maxlen:4; 658674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg2maxlen:4; 659674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg3maxlen:4; 660674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcs7sgimaxlen:4; 661674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 662674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txbuffersize:16; 663674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg4maxlen:4; 664674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg5maxlen:4; 665674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg6maxlen:4; 666674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mcsg15sgimaxlen:4; 667674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 668674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txbuffaddr; 669674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 txbufferaddr64; 670674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nextdescaddress; 671674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nextdescaddress64; 672674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 673674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 reserve_pass_pcie_mm_limit[4]; 674674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li} __packed; 675674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 676674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Listruct rx_desc_92d { 677674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 length:14; 678674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 crc32:1; 679674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 icverror:1; 680674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 drv_infosize:4; 681674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 security:3; 682674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 qos:1; 683674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 shift:2; 684674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 phystatus:1; 685674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 swdec:1; 686674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 lastseg:1; 687674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 firstseg:1; 688674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 eor:1; 689674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 own:1; 690674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 691674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 macid:5; 692674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 tid:4; 693674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 hwrsvd:5; 694674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 paggr:1; 695674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 faggr:1; 696674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 a1_fit:4; 697674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 a2_fit:4; 698674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pam:1; 699674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 pwr:1; 700674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 moredata:1; 701674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 morefrag:1; 702674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 type:2; 703674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 mc:1; 704674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bc:1; 705674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 706674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 seq:12; 707674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 frag:4; 708674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nextpktlen:14; 709674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 nextind:1; 710674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rsvd:1; 711674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 712674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rxmcs:6; 713674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 rxht:1; 714674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 amsdu:1; 715674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 splcp:1; 716674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bandwidth:1; 717674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 htc:1; 718674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 tcpchk_rpt:1; 719674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 ipcchk_rpt:1; 720674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 tcpchk_valid:1; 721674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 hwpcerr:1; 722674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 hwpcind:1; 723674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 iv0:16; 724674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 725674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 iv1; 726674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 727674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 tsfl; 728674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 729674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bufferaddress; 730674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u32 bufferaddress64; 731674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 732674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li} __packed; 733674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 734674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Livoid rtl92de_tx_fill_desc(struct ieee80211_hw *hw, 735674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct ieee80211_hdr *hdr, 736674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 *pdesc, struct ieee80211_tx_info *info, 737674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct sk_buff *skb, u8 hw_queue, 738674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct rtl_tcb_desc *ptcb_desc); 739674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Libool rtl92de_rx_query_desc(struct ieee80211_hw *hw, 740674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct rtl_stats *stats, 741674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct ieee80211_rx_status *rx_status, 742674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li u8 *pdesc, struct sk_buff *skb); 743674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Livoid rtl92de_set_desc(u8 *pdesc, bool istx, u8 desc_name, u8 *val); 744674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Liu32 rtl92de_get_desc(u8 *pdesc, bool istx, u8 desc_name); 745674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Livoid rtl92de_tx_polling(struct ieee80211_hw *hw, u8 hw_queue); 746674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Livoid rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, 747674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li bool b_firstseg, bool b_lastseg, 748674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li struct sk_buff *skb); 749674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li 750674f0523ec07a7c716f5ed8a2debe6632be750f8Chaoming Li#endif 751