1 /****************************************************************************** 2 * 3 * Copyright(c) 2016 - 2019 Realtek Corporation. All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 ******************************************************************************/ 15 16 #ifndef _HALMAC_TX_DESC_BUFFER_NIC_H_ 17 #define _HALMAC_TX_DESC_BUFFER_NIC_H_ 18 #if (HALMAC_8814B_SUPPORT) 19 20 /*TXDESC_WORD0*/ 21 22 #define SET_TX_DESC_BUFFER_RDG_EN(txdesc, value) \ 23 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 31, 1, value) 24 #define GET_TX_DESC_BUFFER_RDG_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 31, 1) 25 #define SET_TX_DESC_BUFFER_BCNPKT_TSF_CTRL(txdesc, value) \ 26 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 30, 1, value) 27 #define GET_TX_DESC_BUFFER_BCNPKT_TSF_CTRL(txdesc) \ 28 LE_BITS_TO_4BYTE(txdesc + 0x00, 30, 1) 29 #define SET_TX_DESC_BUFFER_AGG_EN(txdesc, value) \ 30 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 29, 1, value) 31 #define GET_TX_DESC_BUFFER_AGG_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 29, 1) 32 #define SET_TX_DESC_BUFFER_PKT_OFFSET(txdesc, value) \ 33 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 24, 5, value) 34 #define GET_TX_DESC_BUFFER_PKT_OFFSET(txdesc) \ 35 LE_BITS_TO_4BYTE(txdesc + 0x00, 24, 5) 36 #define SET_TX_DESC_BUFFER_OFFSET(txdesc, value) \ 37 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 16, 8, value) 38 #define GET_TX_DESC_BUFFER_OFFSET(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x00, 16, 8) 39 #define SET_TX_DESC_BUFFER_TXPKTSIZE(txdesc, value) \ 40 SET_BITS_TO_LE_4BYTE(txdesc + 0x00, 0, 16, value) 41 #define GET_TX_DESC_BUFFER_TXPKTSIZE(txdesc) \ 42 LE_BITS_TO_4BYTE(txdesc + 0x00, 0, 16) 43 44 /*TXDESC_WORD1*/ 45 46 #define SET_TX_DESC_BUFFER_USERATE(txdesc, value) \ 47 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 31, 1, value) 48 #define GET_TX_DESC_BUFFER_USERATE(txdesc) \ 49 LE_BITS_TO_4BYTE(txdesc + 0x04, 31, 1) 50 #define SET_TX_DESC_BUFFER_AMSDU(txdesc, value) \ 51 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 30, 1, value) 52 #define GET_TX_DESC_BUFFER_AMSDU(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 30, 1) 53 #define SET_TX_DESC_BUFFER_EN_HWSEQ(txdesc, value) \ 54 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 29, 1, value) 55 #define GET_TX_DESC_BUFFER_EN_HWSEQ(txdesc) \ 56 LE_BITS_TO_4BYTE(txdesc + 0x04, 29, 1) 57 #define SET_TX_DESC_BUFFER_EN_HWEXSEQ(txdesc, value) \ 58 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 28, 1, value) 59 #define GET_TX_DESC_BUFFER_EN_HWEXSEQ(txdesc) \ 60 LE_BITS_TO_4BYTE(txdesc + 0x04, 28, 1) 61 #define SET_TX_DESC_BUFFER_SW_SEQ(txdesc, value) \ 62 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 16, 12, value) 63 #define GET_TX_DESC_BUFFER_SW_SEQ(txdesc) \ 64 LE_BITS_TO_4BYTE(txdesc + 0x04, 16, 12) 65 #define SET_TX_DESC_BUFFER_DROP_ID(txdesc, value) \ 66 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 14, 2, value) 67 #define GET_TX_DESC_BUFFER_DROP_ID(txdesc) \ 68 LE_BITS_TO_4BYTE(txdesc + 0x04, 14, 2) 69 #define SET_TX_DESC_BUFFER_MOREDATA(txdesc, value) \ 70 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 13, 1, value) 71 #define GET_TX_DESC_BUFFER_MOREDATA(txdesc) \ 72 LE_BITS_TO_4BYTE(txdesc + 0x04, 13, 1) 73 #define SET_TX_DESC_BUFFER_QSEL(txdesc, value) \ 74 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 8, 5, value) 75 #define GET_TX_DESC_BUFFER_QSEL(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 8, 5) 76 #define SET_TX_DESC_BUFFER_MACID(txdesc, value) \ 77 SET_BITS_TO_LE_4BYTE(txdesc + 0x04, 0, 8, value) 78 #define GET_TX_DESC_BUFFER_MACID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x04, 0, 8) 79 80 /*TXDESC_WORD2*/ 81 82 #define SET_TX_DESC_BUFFER_CHK_EN(txdesc, value) \ 83 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 31, 1, value) 84 #define GET_TX_DESC_BUFFER_CHK_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x08, 31, 1) 85 #define SET_TX_DESC_BUFFER_DISQSELSEQ(txdesc, value) \ 86 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 30, 1, value) 87 #define GET_TX_DESC_BUFFER_DISQSELSEQ(txdesc) \ 88 LE_BITS_TO_4BYTE(txdesc + 0x08, 30, 1) 89 #define SET_TX_DESC_BUFFER_SND_PKT_SEL(txdesc, value) \ 90 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 28, 2, value) 91 #define GET_TX_DESC_BUFFER_SND_PKT_SEL(txdesc) \ 92 LE_BITS_TO_4BYTE(txdesc + 0x08, 28, 2) 93 #define SET_TX_DESC_BUFFER_DMA_PRI(txdesc, value) \ 94 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 27, 1, value) 95 #define GET_TX_DESC_BUFFER_DMA_PRI(txdesc) \ 96 LE_BITS_TO_4BYTE(txdesc + 0x08, 27, 1) 97 #define SET_TX_DESC_BUFFER_MAX_AMSDU_MODE(txdesc, value) \ 98 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 24, 3, value) 99 #define GET_TX_DESC_BUFFER_MAX_AMSDU_MODE(txdesc) \ 100 LE_BITS_TO_4BYTE(txdesc + 0x08, 24, 3) 101 #define SET_TX_DESC_BUFFER_DMA_TXAGG_NUM(txdesc, value) \ 102 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 16, 8, value) 103 #define GET_TX_DESC_BUFFER_DMA_TXAGG_NUM(txdesc) \ 104 LE_BITS_TO_4BYTE(txdesc + 0x08, 16, 8) 105 #define SET_TX_DESC_BUFFER_TXDESC_CHECKSUM(txdesc, value) \ 106 SET_BITS_TO_LE_4BYTE(txdesc + 0x08, 0, 16, value) 107 #define GET_TX_DESC_BUFFER_TXDESC_CHECKSUM(txdesc) \ 108 LE_BITS_TO_4BYTE(txdesc + 0x08, 0, 16) 109 110 /*TXDESC_WORD3*/ 111 112 #define SET_TX_DESC_BUFFER_OFFLOAD_SIZE(txdesc, value) \ 113 SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 16, 15, value) 114 #define GET_TX_DESC_BUFFER_OFFLOAD_SIZE(txdesc) \ 115 LE_BITS_TO_4BYTE(txdesc + 0x0C, 16, 15) 116 #define SET_TX_DESC_BUFFER_CHANNEL_DMA(txdesc, value) \ 117 SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 11, 5, value) 118 #define GET_TX_DESC_BUFFER_CHANNEL_DMA(txdesc) \ 119 LE_BITS_TO_4BYTE(txdesc + 0x0C, 11, 5) 120 #define SET_TX_DESC_BUFFER_MBSSID(txdesc, value) \ 121 SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 7, 4, value) 122 #define GET_TX_DESC_BUFFER_MBSSID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x0C, 7, 4) 123 #define SET_TX_DESC_BUFFER_BK(txdesc, value) \ 124 SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 6, 1, value) 125 #define GET_TX_DESC_BUFFER_BK(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x0C, 6, 1) 126 #define SET_TX_DESC_BUFFER_WHEADER_LEN(txdesc, value) \ 127 SET_BITS_TO_LE_4BYTE(txdesc + 0x0C, 0, 5, value) 128 #define GET_TX_DESC_BUFFER_WHEADER_LEN(txdesc) \ 129 LE_BITS_TO_4BYTE(txdesc + 0x0C, 0, 5) 130 131 /*TXDESC_WORD4*/ 132 133 #define SET_TX_DESC_BUFFER_TRY_RATE(txdesc, value) \ 134 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 26, 1, value) 135 #define GET_TX_DESC_BUFFER_TRY_RATE(txdesc) \ 136 LE_BITS_TO_4BYTE(txdesc + 0x10, 26, 1) 137 #define SET_TX_DESC_BUFFER_DATA_BW(txdesc, value) \ 138 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 24, 2, value) 139 #define GET_TX_DESC_BUFFER_DATA_BW(txdesc) \ 140 LE_BITS_TO_4BYTE(txdesc + 0x10, 24, 2) 141 #define SET_TX_DESC_BUFFER_DATA_SHORT(txdesc, value) \ 142 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 23, 1, value) 143 #define GET_TX_DESC_BUFFER_DATA_SHORT(txdesc) \ 144 LE_BITS_TO_4BYTE(txdesc + 0x10, 23, 1) 145 #define SET_TX_DESC_BUFFER_DATARATE(txdesc, value) \ 146 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 16, 7, value) 147 #define GET_TX_DESC_BUFFER_DATARATE(txdesc) \ 148 LE_BITS_TO_4BYTE(txdesc + 0x10, 16, 7) 149 #define SET_TX_DESC_BUFFER_TXBF_PATH(txdesc, value) \ 150 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 11, 1, value) 151 #define GET_TX_DESC_BUFFER_TXBF_PATH(txdesc) \ 152 LE_BITS_TO_4BYTE(txdesc + 0x10, 11, 1) 153 #define SET_TX_DESC_BUFFER_GROUP_BIT_IE_OFFSET(txdesc, value) \ 154 SET_BITS_TO_LE_4BYTE(txdesc + 0x10, 0, 11, value) 155 #define GET_TX_DESC_BUFFER_GROUP_BIT_IE_OFFSET(txdesc) \ 156 LE_BITS_TO_4BYTE(txdesc + 0x10, 0, 11) 157 158 /*TXDESC_WORD5*/ 159 160 #define SET_TX_DESC_BUFFER_RTY_LMT_EN(txdesc, value) \ 161 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 31, 1, value) 162 #define GET_TX_DESC_BUFFER_RTY_LMT_EN(txdesc) \ 163 LE_BITS_TO_4BYTE(txdesc + 0x14, 31, 1) 164 #define SET_TX_DESC_BUFFER_HW_RTS_EN(txdesc, value) \ 165 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 30, 1, value) 166 #define GET_TX_DESC_BUFFER_HW_RTS_EN(txdesc) \ 167 LE_BITS_TO_4BYTE(txdesc + 0x14, 30, 1) 168 #define SET_TX_DESC_BUFFER_RTS_EN(txdesc, value) \ 169 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 29, 1, value) 170 #define GET_TX_DESC_BUFFER_RTS_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 29, 1) 171 #define SET_TX_DESC_BUFFER_CTS2SELF(txdesc, value) \ 172 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 28, 1, value) 173 #define GET_TX_DESC_BUFFER_CTS2SELF(txdesc) \ 174 LE_BITS_TO_4BYTE(txdesc + 0x14, 28, 1) 175 #define SET_TX_DESC_BUFFER_TAILPAGE_H(txdesc, value) \ 176 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 24, 4, value) 177 #define GET_TX_DESC_BUFFER_TAILPAGE_H(txdesc) \ 178 LE_BITS_TO_4BYTE(txdesc + 0x14, 24, 4) 179 #define SET_TX_DESC_BUFFER_TAILPAGE_L(txdesc, value) \ 180 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 16, 8, value) 181 #define GET_TX_DESC_BUFFER_TAILPAGE_L(txdesc) \ 182 LE_BITS_TO_4BYTE(txdesc + 0x14, 16, 8) 183 #define SET_TX_DESC_BUFFER_NAVUSEHDR(txdesc, value) \ 184 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 15, 1, value) 185 #define GET_TX_DESC_BUFFER_NAVUSEHDR(txdesc) \ 186 LE_BITS_TO_4BYTE(txdesc + 0x14, 15, 1) 187 #define SET_TX_DESC_BUFFER_BMC(txdesc, value) \ 188 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 14, 1, value) 189 #define GET_TX_DESC_BUFFER_BMC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 14, 1) 190 #define SET_TX_DESC_BUFFER_RTS_DATA_RTY_LMT(txdesc, value) \ 191 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 8, 6, value) 192 #define GET_TX_DESC_BUFFER_RTS_DATA_RTY_LMT(txdesc) \ 193 LE_BITS_TO_4BYTE(txdesc + 0x14, 8, 6) 194 #define SET_TX_DESC_BUFFER_HW_AES_IV(txdesc, value) \ 195 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 7, 1, value) 196 #define GET_TX_DESC_BUFFER_HW_AES_IV(txdesc) \ 197 LE_BITS_TO_4BYTE(txdesc + 0x14, 7, 1) 198 #define SET_TX_DESC_BUFFER_BT_NULL(txdesc, value) \ 199 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 3, 1, value) 200 #define GET_TX_DESC_BUFFER_BT_NULL(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 3, 1) 201 #define SET_TX_DESC_BUFFER_EN_DESC_ID(txdesc, value) \ 202 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 2, 1, value) 203 #define GET_TX_DESC_BUFFER_EN_DESC_ID(txdesc) \ 204 LE_BITS_TO_4BYTE(txdesc + 0x14, 2, 1) 205 #define SET_TX_DESC_BUFFER_SECTYPE(txdesc, value) \ 206 SET_BITS_TO_LE_4BYTE(txdesc + 0x14, 0, 2, value) 207 #define GET_TX_DESC_BUFFER_SECTYPE(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x14, 0, 2) 208 209 /*TXDESC_WORD6*/ 210 211 #define SET_TX_DESC_BUFFER_MULTIPLE_PORT(txdesc, value) \ 212 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 29, 3, value) 213 #define GET_TX_DESC_BUFFER_MULTIPLE_PORT(txdesc) \ 214 LE_BITS_TO_4BYTE(txdesc + 0x18, 29, 3) 215 #define SET_TX_DESC_BUFFER_POLLUTED(txdesc, value) \ 216 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 28, 1, value) 217 #define GET_TX_DESC_BUFFER_POLLUTED(txdesc) \ 218 LE_BITS_TO_4BYTE(txdesc + 0x18, 28, 1) 219 #define SET_TX_DESC_BUFFER_NULL_1(txdesc, value) \ 220 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 27, 1, value) 221 #define GET_TX_DESC_BUFFER_NULL_1(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 27, 1) 222 #define SET_TX_DESC_BUFFER_NULL_0(txdesc, value) \ 223 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 26, 1, value) 224 #define GET_TX_DESC_BUFFER_NULL_0(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 26, 1) 225 #define SET_TX_DESC_BUFFER_TRI_FRAME(txdesc, value) \ 226 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 25, 1, value) 227 #define GET_TX_DESC_BUFFER_TRI_FRAME(txdesc) \ 228 LE_BITS_TO_4BYTE(txdesc + 0x18, 25, 1) 229 #define SET_TX_DESC_BUFFER_SPE_RPT(txdesc, value) \ 230 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 24, 1, value) 231 #define GET_TX_DESC_BUFFER_SPE_RPT(txdesc) \ 232 LE_BITS_TO_4BYTE(txdesc + 0x18, 24, 1) 233 #define SET_TX_DESC_BUFFER_FTM_EN(txdesc, value) \ 234 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 23, 1, value) 235 #define GET_TX_DESC_BUFFER_FTM_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 23, 1) 236 #define SET_TX_DESC_BUFFER_MU_DATARATE(txdesc, value) \ 237 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 16, 7, value) 238 #define GET_TX_DESC_BUFFER_MU_DATARATE(txdesc) \ 239 LE_BITS_TO_4BYTE(txdesc + 0x18, 16, 7) 240 #define SET_TX_DESC_BUFFER_CCA_RTS(txdesc, value) \ 241 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 14, 2, value) 242 #define GET_TX_DESC_BUFFER_CCA_RTS(txdesc) \ 243 LE_BITS_TO_4BYTE(txdesc + 0x18, 14, 2) 244 #define SET_TX_DESC_BUFFER_NDPA(txdesc, value) \ 245 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 12, 2, value) 246 #define GET_TX_DESC_BUFFER_NDPA(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 12, 2) 247 #define SET_TX_DESC_BUFFER_TXPWR_OFSET_TYPE(txdesc, value) \ 248 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 9, 2, value) 249 #define GET_TX_DESC_BUFFER_TXPWR_OFSET_TYPE(txdesc) \ 250 LE_BITS_TO_4BYTE(txdesc + 0x18, 9, 2) 251 #define SET_TX_DESC_BUFFER_P_AID(txdesc, value) \ 252 SET_BITS_TO_LE_4BYTE(txdesc + 0x18, 0, 9, value) 253 #define GET_TX_DESC_BUFFER_P_AID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x18, 0, 9) 254 255 /*TXDESC_WORD7*/ 256 257 #define SET_TX_DESC_BUFFER_SW_DEFINE(txdesc, value) \ 258 SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 16, 12, value) 259 #define GET_TX_DESC_BUFFER_SW_DEFINE(txdesc) \ 260 LE_BITS_TO_4BYTE(txdesc + 0x1C, 16, 12) 261 #define SET_TX_DESC_BUFFER_CTRL_CNT_VALID(txdesc, value) \ 262 SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 9, 1, value) 263 #define GET_TX_DESC_BUFFER_CTRL_CNT_VALID(txdesc) \ 264 LE_BITS_TO_4BYTE(txdesc + 0x1C, 9, 1) 265 #define SET_TX_DESC_BUFFER_CTRL_CNT(txdesc, value) \ 266 SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 5, 4, value) 267 #define GET_TX_DESC_BUFFER_CTRL_CNT(txdesc) \ 268 LE_BITS_TO_4BYTE(txdesc + 0x1C, 5, 4) 269 #define SET_TX_DESC_BUFFER_DATA_RTY_LOWEST_RATE(txdesc, value) \ 270 SET_BITS_TO_LE_4BYTE(txdesc + 0x1C, 0, 5, value) 271 #define GET_TX_DESC_BUFFER_DATA_RTY_LOWEST_RATE(txdesc) \ 272 LE_BITS_TO_4BYTE(txdesc + 0x1C, 0, 5) 273 274 /*TXDESC_WORD8*/ 275 276 #define SET_TX_DESC_BUFFER_PATH_MAPA(txdesc, value) \ 277 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 30, 2, value) 278 #define GET_TX_DESC_BUFFER_PATH_MAPA(txdesc) \ 279 LE_BITS_TO_4BYTE(txdesc + 0x20, 30, 2) 280 #define SET_TX_DESC_BUFFER_PATH_MAPB(txdesc, value) \ 281 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 28, 2, value) 282 #define GET_TX_DESC_BUFFER_PATH_MAPB(txdesc) \ 283 LE_BITS_TO_4BYTE(txdesc + 0x20, 28, 2) 284 #define SET_TX_DESC_BUFFER_PATH_MAPC(txdesc, value) \ 285 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 26, 2, value) 286 #define GET_TX_DESC_BUFFER_PATH_MAPC(txdesc) \ 287 LE_BITS_TO_4BYTE(txdesc + 0x20, 26, 2) 288 #define SET_TX_DESC_BUFFER_PATH_MAPD(txdesc, value) \ 289 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 24, 2, value) 290 #define GET_TX_DESC_BUFFER_PATH_MAPD(txdesc) \ 291 LE_BITS_TO_4BYTE(txdesc + 0x20, 24, 2) 292 #define SET_TX_DESC_BUFFER_ANTSEL_A(txdesc, value) \ 293 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 20, 4, value) 294 #define GET_TX_DESC_BUFFER_ANTSEL_A(txdesc) \ 295 LE_BITS_TO_4BYTE(txdesc + 0x20, 20, 4) 296 #define SET_TX_DESC_BUFFER_ANTSEL_B(txdesc, value) \ 297 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 16, 4, value) 298 #define GET_TX_DESC_BUFFER_ANTSEL_B(txdesc) \ 299 LE_BITS_TO_4BYTE(txdesc + 0x20, 16, 4) 300 #define SET_TX_DESC_BUFFER_ANTSEL_C(txdesc, value) \ 301 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 12, 4, value) 302 #define GET_TX_DESC_BUFFER_ANTSEL_C(txdesc) \ 303 LE_BITS_TO_4BYTE(txdesc + 0x20, 12, 4) 304 #define SET_TX_DESC_BUFFER_ANTSEL_D(txdesc, value) \ 305 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 8, 4, value) 306 #define GET_TX_DESC_BUFFER_ANTSEL_D(txdesc) \ 307 LE_BITS_TO_4BYTE(txdesc + 0x20, 8, 4) 308 #define SET_TX_DESC_BUFFER_NTX_PATH_EN(txdesc, value) \ 309 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 4, 4, value) 310 #define GET_TX_DESC_BUFFER_NTX_PATH_EN(txdesc) \ 311 LE_BITS_TO_4BYTE(txdesc + 0x20, 4, 4) 312 #define SET_TX_DESC_BUFFER_ANTLSEL_EN(txdesc, value) \ 313 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 3, 1, value) 314 #define GET_TX_DESC_BUFFER_ANTLSEL_EN(txdesc) \ 315 LE_BITS_TO_4BYTE(txdesc + 0x20, 3, 1) 316 #define SET_TX_DESC_BUFFER_AMPDU_DENSITY(txdesc, value) \ 317 SET_BITS_TO_LE_4BYTE(txdesc + 0x20, 0, 3, value) 318 #define GET_TX_DESC_BUFFER_AMPDU_DENSITY(txdesc) \ 319 LE_BITS_TO_4BYTE(txdesc + 0x20, 0, 3) 320 321 /*TXDESC_WORD9*/ 322 323 #define SET_TX_DESC_BUFFER_VCS_STBC(txdesc, value) \ 324 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 30, 2, value) 325 #define GET_TX_DESC_BUFFER_VCS_STBC(txdesc) \ 326 LE_BITS_TO_4BYTE(txdesc + 0x24, 30, 2) 327 #define SET_TX_DESC_BUFFER_DATA_STBC(txdesc, value) \ 328 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 28, 2, value) 329 #define GET_TX_DESC_BUFFER_DATA_STBC(txdesc) \ 330 LE_BITS_TO_4BYTE(txdesc + 0x24, 28, 2) 331 #define SET_TX_DESC_BUFFER_RTS_RTY_LOWEST_RATE(txdesc, value) \ 332 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 24, 4, value) 333 #define GET_TX_DESC_BUFFER_RTS_RTY_LOWEST_RATE(txdesc) \ 334 LE_BITS_TO_4BYTE(txdesc + 0x24, 24, 4) 335 #define SET_TX_DESC_BUFFER_SIGNALING_TA_PKT_EN(txdesc, value) \ 336 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 23, 1, value) 337 #define GET_TX_DESC_BUFFER_SIGNALING_TA_PKT_EN(txdesc) \ 338 LE_BITS_TO_4BYTE(txdesc + 0x24, 23, 1) 339 #define SET_TX_DESC_BUFFER_MHR_CP(txdesc, value) \ 340 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 22, 1, value) 341 #define GET_TX_DESC_BUFFER_MHR_CP(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 22, 1) 342 #define SET_TX_DESC_BUFFER_SMH_EN(txdesc, value) \ 343 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 21, 1, value) 344 #define GET_TX_DESC_BUFFER_SMH_EN(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 21, 1) 345 #define SET_TX_DESC_BUFFER_RTSRATE(txdesc, value) \ 346 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 16, 5, value) 347 #define GET_TX_DESC_BUFFER_RTSRATE(txdesc) \ 348 LE_BITS_TO_4BYTE(txdesc + 0x24, 16, 5) 349 #define SET_TX_DESC_BUFFER_SMH_CAM(txdesc, value) \ 350 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 8, 8, value) 351 #define GET_TX_DESC_BUFFER_SMH_CAM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x24, 8, 8) 352 #define SET_TX_DESC_BUFFER_ARFR_TABLE_SEL(txdesc, value) \ 353 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 7, 1, value) 354 #define GET_TX_DESC_BUFFER_ARFR_TABLE_SEL(txdesc) \ 355 LE_BITS_TO_4BYTE(txdesc + 0x24, 7, 1) 356 #define SET_TX_DESC_BUFFER_ARFR_HT_EN(txdesc, value) \ 357 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 6, 1, value) 358 #define GET_TX_DESC_BUFFER_ARFR_HT_EN(txdesc) \ 359 LE_BITS_TO_4BYTE(txdesc + 0x24, 6, 1) 360 #define SET_TX_DESC_BUFFER_ARFR_OFDM_EN(txdesc, value) \ 361 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 5, 1, value) 362 #define GET_TX_DESC_BUFFER_ARFR_OFDM_EN(txdesc) \ 363 LE_BITS_TO_4BYTE(txdesc + 0x24, 5, 1) 364 #define SET_TX_DESC_BUFFER_ARFR_CCK_EN(txdesc, value) \ 365 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 4, 1, value) 366 #define GET_TX_DESC_BUFFER_ARFR_CCK_EN(txdesc) \ 367 LE_BITS_TO_4BYTE(txdesc + 0x24, 4, 1) 368 #define SET_TX_DESC_BUFFER_RTS_SHORT(txdesc, value) \ 369 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 3, 1, value) 370 #define GET_TX_DESC_BUFFER_RTS_SHORT(txdesc) \ 371 LE_BITS_TO_4BYTE(txdesc + 0x24, 3, 1) 372 #define SET_TX_DESC_BUFFER_DISDATAFB(txdesc, value) \ 373 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 2, 1, value) 374 #define GET_TX_DESC_BUFFER_DISDATAFB(txdesc) \ 375 LE_BITS_TO_4BYTE(txdesc + 0x24, 2, 1) 376 #define SET_TX_DESC_BUFFER_DISRTSFB(txdesc, value) \ 377 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 1, 1, value) 378 #define GET_TX_DESC_BUFFER_DISRTSFB(txdesc) \ 379 LE_BITS_TO_4BYTE(txdesc + 0x24, 1, 1) 380 #define SET_TX_DESC_BUFFER_EXT_EDCA(txdesc, value) \ 381 SET_BITS_TO_LE_4BYTE(txdesc + 0x24, 0, 1, value) 382 #define GET_TX_DESC_BUFFER_EXT_EDCA(txdesc) \ 383 LE_BITS_TO_4BYTE(txdesc + 0x24, 0, 1) 384 385 /*TXDESC_WORD10*/ 386 387 #define SET_TX_DESC_BUFFER_AMPDU_MAX_TIME(txdesc, value) \ 388 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 24, 8, value) 389 #define GET_TX_DESC_BUFFER_AMPDU_MAX_TIME(txdesc) \ 390 LE_BITS_TO_4BYTE(txdesc + 0x28, 24, 8) 391 #define SET_TX_DESC_BUFFER_SPECIAL_CW(txdesc, value) \ 392 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 23, 1, value) 393 #define GET_TX_DESC_BUFFER_SPECIAL_CW(txdesc) \ 394 LE_BITS_TO_4BYTE(txdesc + 0x28, 23, 1) 395 #define SET_TX_DESC_BUFFER_RDG_NAV_EXT(txdesc, value) \ 396 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 22, 1, value) 397 #define GET_TX_DESC_BUFFER_RDG_NAV_EXT(txdesc) \ 398 LE_BITS_TO_4BYTE(txdesc + 0x28, 22, 1) 399 #define SET_TX_DESC_BUFFER_RAW(txdesc, value) \ 400 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 21, 1, value) 401 #define GET_TX_DESC_BUFFER_RAW(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 21, 1) 402 #define SET_TX_DESC_BUFFER_MAX_AGG_NUM(txdesc, value) \ 403 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 16, 5, value) 404 #define GET_TX_DESC_BUFFER_MAX_AGG_NUM(txdesc) \ 405 LE_BITS_TO_4BYTE(txdesc + 0x28, 16, 5) 406 #define SET_TX_DESC_BUFFER_FINAL_DATA_RATE(txdesc, value) \ 407 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 8, 8, value) 408 #define GET_TX_DESC_BUFFER_FINAL_DATA_RATE(txdesc) \ 409 LE_BITS_TO_4BYTE(txdesc + 0x28, 8, 8) 410 #define SET_TX_DESC_BUFFER_GF(txdesc, value) \ 411 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 7, 1, value) 412 #define GET_TX_DESC_BUFFER_GF(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 7, 1) 413 #define SET_TX_DESC_BUFFER_MOREFRAG(txdesc, value) \ 414 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 6, 1, value) 415 #define GET_TX_DESC_BUFFER_MOREFRAG(txdesc) \ 416 LE_BITS_TO_4BYTE(txdesc + 0x28, 6, 1) 417 #define SET_TX_DESC_BUFFER_NOACM(txdesc, value) \ 418 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 5, 1, value) 419 #define GET_TX_DESC_BUFFER_NOACM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 5, 1) 420 #define SET_TX_DESC_BUFFER_HTC(txdesc, value) \ 421 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 4, 1, value) 422 #define GET_TX_DESC_BUFFER_HTC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x28, 4, 1) 423 #define SET_TX_DESC_BUFFER_TX_PKT_AFTER_PIFS(txdesc, value) \ 424 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 3, 1, value) 425 #define GET_TX_DESC_BUFFER_TX_PKT_AFTER_PIFS(txdesc) \ 426 LE_BITS_TO_4BYTE(txdesc + 0x28, 3, 1) 427 #define SET_TX_DESC_BUFFER_USE_MAX_TIME_EN(txdesc, value) \ 428 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 2, 1, value) 429 #define GET_TX_DESC_BUFFER_USE_MAX_TIME_EN(txdesc) \ 430 LE_BITS_TO_4BYTE(txdesc + 0x28, 2, 1) 431 #define SET_TX_DESC_BUFFER_HW_SSN_SEL(txdesc, value) \ 432 SET_BITS_TO_LE_4BYTE(txdesc + 0x28, 0, 2, value) 433 #define GET_TX_DESC_BUFFER_HW_SSN_SEL(txdesc) \ 434 LE_BITS_TO_4BYTE(txdesc + 0x28, 0, 2) 435 436 /*TXDESC_WORD11*/ 437 438 #define SET_TX_DESC_BUFFER_ADDR_CAM(txdesc, value) \ 439 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 24, 8, value) 440 #define GET_TX_DESC_BUFFER_ADDR_CAM(txdesc) \ 441 LE_BITS_TO_4BYTE(txdesc + 0x2C, 24, 8) 442 #define SET_TX_DESC_BUFFER_SND_TARGET(txdesc, value) \ 443 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 16, 8, value) 444 #define GET_TX_DESC_BUFFER_SND_TARGET(txdesc) \ 445 LE_BITS_TO_4BYTE(txdesc + 0x2C, 16, 8) 446 #define SET_TX_DESC_BUFFER_DATA_LDPC(txdesc, value) \ 447 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 15, 1, value) 448 #define GET_TX_DESC_BUFFER_DATA_LDPC(txdesc) \ 449 LE_BITS_TO_4BYTE(txdesc + 0x2C, 15, 1) 450 #define SET_TX_DESC_BUFFER_LSIG_TXOP_EN(txdesc, value) \ 451 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 14, 1, value) 452 #define GET_TX_DESC_BUFFER_LSIG_TXOP_EN(txdesc) \ 453 LE_BITS_TO_4BYTE(txdesc + 0x2C, 14, 1) 454 #define SET_TX_DESC_BUFFER_G_ID(txdesc, value) \ 455 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 8, 6, value) 456 #define GET_TX_DESC_BUFFER_G_ID(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x2C, 8, 6) 457 #define SET_TX_DESC_BUFFER_SIGNALING_TA_PKT_SC(txdesc, value) \ 458 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 4, 4, value) 459 #define GET_TX_DESC_BUFFER_SIGNALING_TA_PKT_SC(txdesc) \ 460 LE_BITS_TO_4BYTE(txdesc + 0x2C, 4, 4) 461 #define SET_TX_DESC_BUFFER_DATA_SC(txdesc, value) \ 462 SET_BITS_TO_LE_4BYTE(txdesc + 0x2C, 0, 4, value) 463 #define GET_TX_DESC_BUFFER_DATA_SC(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x2C, 0, 4) 464 465 /*TXDESC_WORD12*/ 466 467 #define SET_TX_DESC_BUFFER_LEN1_L(txdesc, value) \ 468 SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 17, 7, value) 469 #define GET_TX_DESC_BUFFER_LEN1_L(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 17, 7) 470 #define SET_TX_DESC_BUFFER_LEN0(txdesc, value) \ 471 SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 4, 13, value) 472 #define GET_TX_DESC_BUFFER_LEN0(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 4, 13) 473 #define SET_TX_DESC_BUFFER_PKT_NUM(txdesc, value) \ 474 SET_BITS_TO_LE_4BYTE(txdesc + 0x30, 0, 4, value) 475 #define GET_TX_DESC_BUFFER_PKT_NUM(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x30, 0, 4) 476 477 /*TXDESC_WORD13*/ 478 479 #define SET_TX_DESC_BUFFER_LEN3(txdesc, value) \ 480 SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 19, 13, value) 481 #define GET_TX_DESC_BUFFER_LEN3(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 19, 13) 482 #define SET_TX_DESC_BUFFER_LEN2(txdesc, value) \ 483 SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 6, 13, value) 484 #define GET_TX_DESC_BUFFER_LEN2(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 6, 13) 485 #define SET_TX_DESC_BUFFER_LEN1_H(txdesc, value) \ 486 SET_BITS_TO_LE_4BYTE(txdesc + 0x34, 0, 6, value) 487 #define GET_TX_DESC_BUFFER_LEN1_H(txdesc) LE_BITS_TO_4BYTE(txdesc + 0x34, 0, 6) 488 489 #endif 490 491 #endif 492