1e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/****************************************************************************** 2e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 3ca742cd9766ff519b0e927a9296e29541ee13c7bLarry Finger * Copyright(c) 2009-2012 Realtek Corporation. 4e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 5e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * This program is free software; you can redistribute it and/or modify it 6e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * under the terms of version 2 of the GNU General Public License as 7e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * published by the Free Software Foundation. 8e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 9e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * This program is distributed in the hope that it will be useful, but WITHOUT 10e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * more details. 13e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 14e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * You should have received a copy of the GNU General Public License along with 15e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * this program; if not, write to the Free Software Foundation, Inc., 16e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 18e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * The full GNU General Public License is included in this distribution in the 19e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * file called LICENSE. 20e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 21e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * Contact Information: 22e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * wlanfae <wlanfae@realtek.com> 23e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 24e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * Hsinchu 300, Taiwan. 25e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 26e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * Larry Finger <Larry.Finger@lwfinger.net> 27e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * 28e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li *****************************************************************************/ 29e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#ifndef __REALTEK_92S_DEF_H__ 30e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define __REALTEK_92S_DEF_H__ 31e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 32e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define RX_MPDU_QUEUE 0 33e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define RX_CMD_QUEUE 1 34e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define RX_MAX_QUEUE 2 35e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 36e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SHORT_SLOT_TIME 9 37e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define NON_SHORT_SLOT_TIME 20 38e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 39e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Queue Select Value in TxDesc */ 40e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_BK 0x2 41e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_BE 0x0 42e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_VI 0x5 43e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_VO 0x6 44e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_BEACON 0x10 45e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_HIGH 0x11 46e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_MGNT 0x12 47e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define QSLT_CMD 0x13 48e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 49e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Tx Desc */ 50e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define TX_DESC_SIZE_RTL8192S (16 * 4) 51e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define TX_CMDDESC_SIZE_RTL8192S (16 * 4) 52e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 53e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Define a macro that takes a le32 word, converts it to host ordering, 54e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * right shifts by a specified count, creates a mask of the specified 55e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * bit count, and extracts that number of bits. 56e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li */ 57e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 58e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SHIFT_AND_MASK_LE(__pdesc, __shift, __mask) \ 59e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li ((le32_to_cpu(*(((__le32 *)(__pdesc)))) >> (__shift)) & \ 60e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li BIT_LEN_MASK_32(__mask)) 61e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 62e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Define a macro that clears a bit field in an le32 word and 63e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * sets the specified value into that bit field. The resulting 64e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * value remains in le32 ordering; however, it is properly converted 65e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * to host ordering for the clear and set operations before conversion 66e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * back to le32. 67e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li */ 68e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 69e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_BITS_OFFSET_LE(__pdesc, __shift, __len, __val) \ 70e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li (*(__le32 *)(__pdesc) = \ 71e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li (cpu_to_le32((le32_to_cpu(*((__le32 *)(__pdesc))) & \ 72e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li (~(BIT_OFFSET_LEN_MASK_32((__shift), __len)))) | \ 73e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li (((u32)(__val) & BIT_LEN_MASK_32(__len)) << (__shift))))); 74e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 75e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* macros to read/write various fields in RX or TX descriptors */ 76e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 77e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 0 */ 78e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_PKT_SIZE(__pdesc, __val) \ 79e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 0, 16, __val) 80e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_OFFSET(__pdesc, __val) \ 81e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 16, 8, __val) 82e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TYPE(__pdesc, __val) \ 83e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 24, 2, __val) 84e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_LAST_SEG(__pdesc, __val) \ 85e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 26, 1, __val) 86e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_FIRST_SEG(__pdesc, __val) \ 87e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 27, 1, __val) 88e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_LINIP(__pdesc, __val) \ 89e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 28, 1, __val) 90e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_AMSDU(__pdesc, __val) \ 91e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 29, 1, __val) 92e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_GREEN_FIELD(__pdesc, __val) \ 93e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val) 94e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_OWN(__pdesc, __val) \ 95e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val) 96e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 97e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_TX_DESC_OWN(__pdesc) \ 98e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 31, 1) 99e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 100e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 1 */ 101e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_MACID(__pdesc, __val) \ 102e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 0, 5, __val) 103e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_MORE_DATA(__pdesc, __val) \ 104e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 5, 1, __val) 105e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_MORE_FRAG(__pdesc, __val) \ 106e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 6, 1, __val) 107e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_PIFS(__pdesc, __val) \ 108e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 7, 1, __val) 109e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_QUEUE_SEL(__pdesc, __val) \ 110e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 8, 5, __val) 111e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_ACK_POLICY(__pdesc, __val) \ 112e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 13, 2, __val) 113e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_NO_ACM(__pdesc, __val) \ 114e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 15, 1, __val) 115e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_NON_QOS(__pdesc, __val) \ 116e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 16, 1, __val) 117e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_KEY_ID(__pdesc, __val) \ 118e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 17, 2, __val) 119e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_OUI(__pdesc, __val) \ 120e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 19, 1, __val) 121e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_PKT_TYPE(__pdesc, __val) \ 122e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 20, 1, __val) 123e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_EN_DESC_ID(__pdesc, __val) \ 124e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 21, 1, __val) 125e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_SEC_TYPE(__pdesc, __val) \ 126e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 22, 2, __val) 127e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_WDS(__pdesc, __val) \ 128e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 24, 1, __val) 129e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_HTC(__pdesc, __val) \ 130e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 25, 1, __val) 131e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_PKT_OFFSET(__pdesc, __val) \ 132e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 26, 5, __val) 133e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_HWPC(__pdesc, __val) \ 134e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 27, 1, __val) 135e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 136e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 2 */ 137e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_DATA_RETRY_LIMIT(__pdesc, __val) \ 138e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 0, 6, __val) 139e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RETRY_LIMIT_ENABLE(__pdesc, __val) \ 140e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 6, 1, __val) 141e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TSFL(__pdesc, __val) \ 142e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 7, 5, __val) 143e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_RETRY_COUNT(__pdesc, __val) \ 144e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 12, 6, __val) 145e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_DATA_RETRY_COUNT(__pdesc, __val) \ 146e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 18, 6, __val) 147e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RSVD_MACID(__pdesc, __val) \ 148e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(((__pdesc) + 8), 24, 5, __val) 149e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_AGG_ENABLE(__pdesc, __val) \ 150e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 29, 1, __val) 151e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_AGG_BREAK(__pdesc, __val) \ 152e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 30, 1, __val) 153e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_OWN_MAC(__pdesc, __val) \ 154e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 31, 1, __val) 155e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 156e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 3 */ 157e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_NEXT_HEAP_PAGE(__pdesc, __val) \ 158e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 0, 8, __val) 159e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TAIL_PAGE(__pdesc, __val) \ 160e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 8, 8, __val) 161e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_SEQ(__pdesc, __val) \ 162e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 16, 12, __val) 163e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_FRAG(__pdesc, __val) \ 164e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 28, 4, __val) 165e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 166e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 4 */ 167e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_RATE(__pdesc, __val) \ 168e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 0, 6, __val) 169e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_DISABLE_RTS_FB(__pdesc, __val) \ 170e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 6, 1, __val) 171e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_RATE_FB_LIMIT(__pdesc, __val) \ 172e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 7, 4, __val) 173e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_CTS_ENABLE(__pdesc, __val) \ 174e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 11, 1, __val) 175e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_ENABLE(__pdesc, __val) \ 176e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 12, 1, __val) 177e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RA_BRSR_ID(__pdesc, __val) \ 178e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 13, 3, __val) 179e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TXHT(__pdesc, __val) \ 180e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 16, 1, __val) 181e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_SHORT(__pdesc, __val) \ 182e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 17, 1, __val) 183e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_BANDWIDTH(__pdesc, __val) \ 184e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 18, 1, __val) 185e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_SUB_CARRIER(__pdesc, __val) \ 186e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 19, 2, __val) 187e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_STBC(__pdesc, __val) \ 188e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 21, 2, __val) 189e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_REVERSE_DIRECTION(__pdesc, __val) \ 190e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 23, 1, __val) 191e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_HT(__pdesc, __val) \ 192e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 24, 1, __val) 193e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_SHORT(__pdesc, __val) \ 194e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 25, 1, __val) 195e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_BANDWIDTH(__pdesc, __val) \ 196e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 26, 1, __val) 197e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_SUB_CARRIER(__pdesc, __val) \ 198e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 27, 2, __val) 199e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_RTS_STBC(__pdesc, __val) \ 200e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 29, 2, __val) 201e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_USER_RATE(__pdesc, __val) \ 202e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 31, 1, __val) 203e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 204e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 5 */ 205e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_PACKET_ID(__pdesc, __val) \ 206e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 0, 9, __val) 207e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_RATE(__pdesc, __val) \ 208e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 9, 6, __val) 209e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_DISABLE_FB(__pdesc, __val) \ 210e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 15, 1, __val) 211e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_DATA_RATE_FB_LIMIT(__pdesc, __val) \ 212e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 16, 5, __val) 213e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_AGC(__pdesc, __val) \ 214e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 21, 11, __val) 215e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 216e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 6 */ 217e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_IP_CHECK_SUM(__pdesc, __val) \ 218e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 24, 0, 16, __val) 219e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TCP_CHECK_SUM(__pdesc, __val) \ 220e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 24, 16, 16, __val) 221e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 222e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 7 */ 223e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_BUFFER_SIZE(__pdesc, __val) \ 224e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 28, 0, 16, __val) 225e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_IP_HEADER_OFFSET(__pdesc, __val) \ 226e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 28, 16, 8, __val) 227e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TCP_ENABLE(__pdesc, __val) \ 228e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 28, 31, 1, __val) 229e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 230e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 8 */ 231e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc, __val) \ 232e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 32, 0, 32, __val) 233e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_TX_DESC_TX_BUFFER_ADDRESS(__pdesc) \ 234e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 32, 0, 32) 235e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 236e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Dword 9 */ 237e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_TX_DESC_NEXT_DESC_ADDRESS(__pdesc, __val) \ 238e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 36, 0, 32, __val) 239e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 240e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Because the PCI Tx descriptors are chaied at the 241e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * initialization and all the NextDescAddresses in 242e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * these descriptors cannot not be cleared (,or 243e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * driver/HW cannot find the next descriptor), the 244e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * offset 36 (NextDescAddresses) is reserved when 245e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * the desc is cleared. */ 246e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define TX_DESC_NEXT_DESC_OFFSET 36 247e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define CLEAR_PCI_TX_DESC_CONTENT(__pdesc, _size) \ 248da951c2417ec1020d0d00813da36f38e395994e9Joe Perches memset(__pdesc, 0, min_t(size_t, _size, TX_DESC_NEXT_DESC_OFFSET)) 249e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 250e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* Rx Desc */ 251e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define RX_STATUS_DESC_SIZE 24 252e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define RX_DRV_INFO_SIZE_UNIT 8 253e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 254e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 0 */ 255e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_PKT_LEN(__pdesc, __val) \ 256e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 0, 14, __val) 257e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_CRC32(__pdesc, __val) \ 258e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 14, 1, __val) 259e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_ICV(__pdesc, __val) \ 260e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 15, 1, __val) 261e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_DRVINFO_SIZE(__pdesc, __val) \ 262e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 16, 4, __val) 263e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_SECURITY(__pdesc, __val) \ 264e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 20, 3, __val) 265e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_QOS(__pdesc, __val) \ 266e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 23, 1, __val) 267e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_SHIFT(__pdesc, __val) \ 268e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 24, 2, __val) 269e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_PHY_STATUS(__pdesc, __val) \ 270e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 26, 1, __val) 271e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_SWDEC(__pdesc, __val) \ 272e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 27, 1, __val) 273e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_LAST_SEG(__pdesc, __val) \ 274e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 28, 1, __val) 275e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_FIRST_SEG(__pdesc, __val) \ 276e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 29, 1, __val) 277e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_EOR(__pdesc, __val) \ 278e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 30, 1, __val) 279e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_OWN(__pdesc, __val) \ 280e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc, 31, 1, __val) 281e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 282e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_PKT_LEN(__pdesc) \ 283e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 0, 14) 284e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_CRC32(__pdesc) \ 285e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 14, 1) 286e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_ICV(__pdesc) \ 287e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 15, 1) 288e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_DRVINFO_SIZE(__pdesc) \ 289e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 16, 4) 290e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_SECURITY(__pdesc) \ 291e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 20, 3) 292e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_QOS(__pdesc) \ 293e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 23, 1) 294e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_SHIFT(__pdesc) \ 295e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 24, 2) 296e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_PHY_STATUS(__pdesc) \ 297e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 26, 1) 298e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_SWDEC(__pdesc) \ 299e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 27, 1) 300e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_LAST_SEG(__pdesc) \ 301e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 28, 1) 302e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_FIRST_SEG(__pdesc) \ 303e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 29, 1) 304e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_EOR(__pdesc) \ 305e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 30, 1) 306e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_OWN(__pdesc) \ 307e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc, 31, 1) 308e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 309e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 1 */ 310e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_MACID(__pdesc, __val) \ 311e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 0, 5, __val) 312e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_TID(__pdesc, __val) \ 313e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 5, 4, __val) 314e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_PAGGR(__pdesc, __val) \ 315e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 14, 1, __val) 316e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_FAGGR(__pdesc, __val) \ 317e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 15, 1, __val) 318e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_A1_FIT(__pdesc, __val) \ 319e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 16, 4, __val) 320e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_A2_FIT(__pdesc, __val) \ 321e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 20, 4, __val) 322e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_PAM(__pdesc, __val) \ 323e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 24, 1, __val) 324e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_PWR(__pdesc, __val) \ 325e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 25, 1, __val) 326e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_MOREDATA(__pdesc, __val) \ 327e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 26, 1, __val) 328e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_MOREFRAG(__pdesc, __val) \ 329e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 27, 1, __val) 330e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_TYPE(__pdesc, __val) \ 331e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 28, 2, __val) 332e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_MC(__pdesc, __val) \ 333e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 30, 1, __val) 334e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_BC(__pdesc, __val) \ 335e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 4, 31, 1, __val) 336e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 337e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DEC_MACID(__pdesc) \ 338e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 0, 5) 339e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_TID(__pdesc) \ 340e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 5, 4) 341e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_PAGGR(__pdesc) \ 342e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 14, 1) 343e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_FAGGR(__pdesc) \ 344e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 15, 1) 345e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_A1_FIT(__pdesc) \ 346e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 16, 4) 347e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_A2_FIT(__pdesc) \ 348e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 20, 4) 349e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_PAM(__pdesc) \ 350e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 24, 1) 351e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_PWR(__pdesc) \ 352e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 25, 1) 353e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_MORE_DATA(__pdesc) \ 354e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 26, 1) 355e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_MORE_FRAG(__pdesc) \ 356e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 27, 1) 357e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_TYPE(__pdesc) \ 358e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 28, 2) 359e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_MC(__pdesc) \ 360e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 30, 1) 361e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_BC(__pdesc) \ 362e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 4, 31, 1) 363e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 364e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 2 */ 365e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_SEQ(__pdesc, __val) \ 366e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 0, 12, __val) 367e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_FRAG(__pdesc, __val) \ 368e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 12, 4, __val) 369e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_NEXT_PKTLEN(__pdesc, __val) \ 370e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 16, 8, __val) 371e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_NEXT_IND(__pdesc, __val) \ 372e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 8, 30, 1, __val) 373e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 374e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_SEQ(__pdesc) \ 375e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 8, 0, 12) 376e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_FRAG(__pdesc) \ 377e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 8, 12, 4) 378e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_NEXT_PKTLEN(__pdesc) \ 379e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 8, 16, 8) 380e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_NEXT_IND(__pdesc) \ 381e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 8, 30, 1) 382e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 383e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 3 */ 384e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_RX_MCS(__pdesc, __val) \ 385e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 0, 6, __val) 386e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_RX_HT(__pdesc, __val) \ 387e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 6, 1, __val) 388e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_AMSDU(__pdesc, __val) \ 389e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 7, 1, __val) 390e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_SPLCP(__pdesc, __val) \ 391e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 8, 1, __val) 392e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_BW(__pdesc, __val) \ 393e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 9, 1, __val) 394e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_HTC(__pdesc, __val) \ 395e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 10, 1, __val) 396e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_TCP_CHK_RPT(__pdesc, __val) \ 397e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 11, 1, __val) 398e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_IP_CHK_RPT(__pdesc, __val) \ 399e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 12, 1, __val) 400e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_TCP_CHK_VALID(__pdesc, __val) \ 401e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 13, 1, __val) 402e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_HWPC_ERR(__pdesc, __val) \ 403e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 14, 1, __val) 404e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_HWPC_IND(__pdesc, __val) \ 405e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 15, 1, __val) 406e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_IV0(__pdesc, __val) \ 407e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 12, 16, 16, __val) 408e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 409e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_RX_MCS(__pdesc) \ 410e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 0, 6) 411e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_RX_HT(__pdesc) \ 412e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 6, 1) 413e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_AMSDU(__pdesc) \ 414e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 7, 1) 415e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_SPLCP(__pdesc) \ 416e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 8, 1) 417e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_BW(__pdesc) \ 418e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 9, 1) 419e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_HTC(__pdesc) \ 420e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 10, 1) 421e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_TCP_CHK_RPT(__pdesc) \ 422e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 11, 1) 423e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_IP_CHK_RPT(__pdesc) \ 424e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 12, 1) 425e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_TCP_CHK_VALID(__pdesc) \ 426e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 13, 1) 427e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_HWPC_ERR(__pdesc) \ 428e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 14, 1) 429e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_HWPC_IND(__pdesc) \ 430e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 15, 1) 431e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_IV0(__pdesc) \ 432e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 12, 16, 16) 433e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 434e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 4 */ 435e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_IV1(__pdesc, __val) \ 436e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 16, 0, 32, __val) 437e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_IV1(__pdesc) \ 438e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 16, 0, 32) 439e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 440e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 5 */ 441e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS_DESC_TSFL(__pdesc, __val) \ 442e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 20, 0, 32, __val) 443e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define GET_RX_STATUS_DESC_TSFL(__pdesc) \ 444e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SHIFT_AND_MASK_LE(__pdesc + 20, 0, 32) 445e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 446e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li/* DWORD 6 */ 447e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#define SET_RX_STATUS__DESC_BUFF_ADDR(__pdesc, __val) \ 448e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li SET_BITS_OFFSET_LE(__pdesc + 24, 0, 32, __val) 44930c5ccc6afee39754cff75ad8d775ad39a2ce989Larry Finger#define GET_RX_STATUS_DESC_BUFF_ADDR(__pdesc) \ 45030c5ccc6afee39754cff75ad8d775ad39a2ce989Larry Finger SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32) 451e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 452da3ba88a9996cd64c6768bed5727e02da81e2c8dLarry Finger#define SE_RX_HAL_IS_CCK_RATE(_pdesc)\ 4538e35337731abb901f3ae20ebc3f44a50ba6953e9Larry Finger (GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE1M || \ 4548e35337731abb901f3ae20ebc3f44a50ba6953e9Larry Finger GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE2M || \ 4558e35337731abb901f3ae20ebc3f44a50ba6953e9Larry Finger GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE5_5M ||\ 4568e35337731abb901f3ae20ebc3f44a50ba6953e9Larry Finger GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE11M) 457e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 458e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Lienum rf_optype { 459e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li RF_OP_BY_SW_3WIRE = 0, 460e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li RF_OP_BY_FW, 461e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li RF_OP_MAX 462e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li}; 463e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 464e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Lienum ic_inferiority { 465e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li IC_INFERIORITY_A = 0, 466e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li IC_INFERIORITY_B = 1, 467e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li}; 468e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 469e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Lienum fwcmd_iotype { 470e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* For DIG DM */ 471e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_ENABLE = 0, 472e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_DISABLE = 1, 473e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_HALT = 2, 474e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_RESUME = 3, 475e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* For High Power DM */ 476e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_HIGH_PWR_ENABLE = 4, 477e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_HIGH_PWR_DISABLE = 5, 478e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* For Rate adaptive DM */ 479e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_RESET = 6, 480e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_ACTIVE = 7, 481e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_REFRESH_N = 8, 482e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_REFRESH_BG = 9, 483e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_INIT = 10, 484e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* For FW supported IQK */ 485e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_IQK_INIT = 11, 486e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Tx power tracking switch, 487e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * MP driver only */ 488e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_TXPWR_TRACK_ENABLE = 12, 489e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Tx power tracking switch, 490e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * MP driver only */ 491e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_TXPWR_TRACK_DISABLE = 13, 492e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Tx power tracking with thermal 493e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * indication, for Normal driver */ 494e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_TXPWR_TRACK_THERMAL = 14, 495e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_PAUSE_DM_BY_SCAN = 15, 496e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RESUME_DM_BY_SCAN = 16, 497e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_REFRESH_N_COMB = 17, 498e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_RA_REFRESH_BG_COMB = 18, 499e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_ANTENNA_SW_ENABLE = 19, 500e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_ANTENNA_SW_DISABLE = 20, 501e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Tx Status report for CCX from FW */ 502e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_TX_FEEDBACK_CCX_ENABLE = 21, 503e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Indifate firmware that driver 504e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * enters LPS, For PS-Poll issue */ 505e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_LPS_ENTER = 22, 506e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Indicate firmware that driver 507e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * leave LPS*/ 508e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_LPS_LEAVE = 23, 509e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Set DIG mode to signal strength */ 510e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_MODE_SS = 24, 511e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* Set DIG mode to false alarm. */ 512e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_DIG_MODE_FA = 25, 513e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_ADD_A2_ENTRY = 26, 514e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_CTRL_DM_BY_DRIVER = 27, 515e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_CTRL_DM_BY_DRIVER_NEW = 28, 516e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_PAPE_CONTROL = 29, 517e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li FW_CMD_IQK_ENABLE = 30, 518e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li}; 519e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 520dac67975f3dc8565e4254b1d7a49618494f1a2f1Daniel Stamer/* Driver info contain PHY status 521e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * and other variabel size info 522e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li * PHY Status content as below 523e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li */ 524e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Listruct rx_fwinfo { 525e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 0 */ 526e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 gain_trsw[4]; 527e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 1 */ 528e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 pwdb_all; 529e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 cfosho[4]; 530e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 2 */ 531e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 cfotail[4]; 532e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 3 */ 533e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li s8 rxevm[2]; 534e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li s8 rxsnr[4]; 535e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 4 */ 536e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 pdsnr[2]; 537e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 5 */ 538e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 csi_current[2]; 539e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 csi_target[2]; 540e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li /* DWORD 6 */ 541e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 sigevm; 542e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 max_ex_pwr; 543e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 ex_intf_flag:1; 544e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 sgi_en:1; 545e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 rxsc:2; 546e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 reserve:4; 547e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li}; 548e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 549e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Listruct phy_sts_cck_8192s_t { 550e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 adc_pwdb_x[4]; 551e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 sq_rpt; 552e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li u8 cck_agc_rpt; 553e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li}; 554e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 555e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li#endif 556e52dadb341c9c5ac25d6abd9216dd62752784f03Chaoming Li 557