1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2016 Realtek Corporation. 5 * 6 * Contact Information: 7 * wlanfae <wlanfae@realtek.com> 8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 9 * Hsinchu 300, Taiwan. 10 * 11 * Larry Finger <Larry.Finger@lwfinger.net> 12 * 13 *****************************************************************************/ 14 #ifndef _HALMAC_TX_DESC_NIC_H_ 15 #define _HALMAC_TX_DESC_NIC_H_ 16 17 /*TXDESC_WORD0*/ 18 19 #define SET_TX_DESC_DISQSELSEQ(__tx_desc, __value) \ 20 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 31, 1, __value) 21 #define GET_TX_DESC_DISQSELSEQ(__tx_desc) \ 22 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 31, 1) 23 24 #define SET_TX_DESC_GF(__tx_desc, __value) \ 25 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 30, 1, __value) 26 #define GET_TX_DESC_GF(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 30, 1) 27 #define SET_TX_DESC_NO_ACM(__tx_desc, __value) \ 28 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 29, 1, __value) 29 #define GET_TX_DESC_NO_ACM(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 29, 1) 30 31 #define SET_TX_DESC_BCNPKT_TSF_CTRL(__tx_desc, __value) \ 32 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 28, 1, __value) 33 #define GET_TX_DESC_BCNPKT_TSF_CTRL(__tx_desc) \ 34 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 28, 1) 35 36 #define SET_TX_DESC_AMSDU_PAD_EN(__tx_desc, __value) \ 37 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 27, 1, __value) 38 #define GET_TX_DESC_AMSDU_PAD_EN(__tx_desc) \ 39 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 27, 1) 40 41 #define SET_TX_DESC_LS(__tx_desc, __value) \ 42 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 26, 1, __value) 43 #define GET_TX_DESC_LS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 26, 1) 44 #define SET_TX_DESC_HTC(__tx_desc, __value) \ 45 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 25, 1, __value) 46 #define GET_TX_DESC_HTC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 25, 1) 47 #define SET_TX_DESC_BMC(__tx_desc, __value) \ 48 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 24, 1, __value) 49 #define GET_TX_DESC_BMC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 24, 1) 50 #define SET_TX_DESC_OFFSET(__tx_desc, __value) \ 51 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 16, 8, __value) 52 #define GET_TX_DESC_OFFSET(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x00, 16, 8) 53 #define SET_TX_DESC_TXPKTSIZE(__tx_desc, __value) \ 54 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x00, 0, 16, __value) 55 #define GET_TX_DESC_TXPKTSIZE(__tx_desc) \ 56 LE_BITS_TO_4BYTE(__tx_desc + 0x00, 0, 16) 57 58 /*TXDESC_WORD1*/ 59 60 #define SET_TX_DESC_MOREDATA(__tx_desc, __value) \ 61 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 29, 1, __value) 62 #define GET_TX_DESC_MOREDATA(__tx_desc) \ 63 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 29, 1) 64 #define SET_TX_DESC_PKT_OFFSET(__tx_desc, __value) \ 65 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 24, 5, __value) 66 #define GET_TX_DESC_PKT_OFFSET(__tx_desc) \ 67 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 24, 5) 68 #define SET_TX_DESC_SEC_TYPE(__tx_desc, __value) \ 69 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 22, 2, __value) 70 #define GET_TX_DESC_SEC_TYPE(__tx_desc) \ 71 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 22, 2) 72 #define SET_TX_DESC_EN_DESC_ID(__tx_desc, __value) \ 73 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 21, 1, __value) 74 #define GET_TX_DESC_EN_DESC_ID(__tx_desc) \ 75 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 21, 1) 76 #define SET_TX_DESC_RATE_ID(__tx_desc, __value) \ 77 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 16, 5, __value) 78 #define GET_TX_DESC_RATE_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 16, 5) 79 #define SET_TX_DESC_PIFS(__tx_desc, __value) \ 80 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 15, 1, __value) 81 #define GET_TX_DESC_PIFS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 15, 1) 82 #define SET_TX_DESC_LSIG_TXOP_EN(__tx_desc, __value) \ 83 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 14, 1, __value) 84 #define GET_TX_DESC_LSIG_TXOP_EN(__tx_desc) \ 85 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 14, 1) 86 #define SET_TX_DESC_RD_NAV_EXT(__tx_desc, __value) \ 87 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 13, 1, __value) 88 #define GET_TX_DESC_RD_NAV_EXT(__tx_desc) \ 89 LE_BITS_TO_4BYTE(__tx_desc + 0x04, 13, 1) 90 #define SET_TX_DESC_QSEL(__tx_desc, __value) \ 91 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 8, 5, __value) 92 #define GET_TX_DESC_QSEL(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 8, 5) 93 #define SET_TX_DESC_MACID(__tx_desc, __value) \ 94 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x04, 0, 7, __value) 95 #define GET_TX_DESC_MACID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x04, 0, 7) 96 97 /*TXDESC_WORD2*/ 98 99 #define SET_TX_DESC_HW_AES_IV(__tx_desc, __value) \ 100 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 31, 1, __value) 101 #define GET_TX_DESC_HW_AES_IV(__tx_desc) \ 102 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 31, 1) 103 104 #define SET_TX_DESC_FTM_EN(__tx_desc, __value) \ 105 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 30, 1, __value) 106 #define GET_TX_DESC_FTM_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 30, 1) 107 108 #define SET_TX_DESC_G_ID(__tx_desc, __value) \ 109 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 24, 6, __value) 110 #define GET_TX_DESC_G_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 24, 6) 111 #define SET_TX_DESC_BT_NULL(__tx_desc, __value) \ 112 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 23, 1, __value) 113 #define GET_TX_DESC_BT_NULL(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 23, 1) 114 #define SET_TX_DESC_AMPDU_DENSITY(__tx_desc, __value) \ 115 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 20, 3, __value) 116 #define GET_TX_DESC_AMPDU_DENSITY(__tx_desc) \ 117 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 20, 3) 118 #ifdef SET_TX_DESC_SPE_RPT 119 #undef SET_TX_DESC_SPE_RPT 120 #endif 121 #define SET_TX_DESC_SPE_RPT(__tx_desc, __value) \ 122 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 19, 1, __value) 123 #define GET_TX_DESC_SPE_RPT(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 19, 1) 124 #define SET_TX_DESC_RAW(__tx_desc, __value) \ 125 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 18, 1, __value) 126 #define GET_TX_DESC_RAW(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 18, 1) 127 #define SET_TX_DESC_MOREFRAG(__tx_desc, __value) \ 128 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 17, 1, __value) 129 #define GET_TX_DESC_MOREFRAG(__tx_desc) \ 130 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 17, 1) 131 #define SET_TX_DESC_BK(__tx_desc, __value) \ 132 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 16, 1, __value) 133 #define GET_TX_DESC_BK(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 16, 1) 134 #define SET_TX_DESC_NULL_1(__tx_desc, __value) \ 135 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 15, 1, __value) 136 #define GET_TX_DESC_NULL_1(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 15, 1) 137 #define SET_TX_DESC_NULL_0(__tx_desc, __value) \ 138 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 14, 1, __value) 139 #define GET_TX_DESC_NULL_0(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 14, 1) 140 #define SET_TX_DESC_RDG_EN(__tx_desc, __value) \ 141 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 13, 1, __value) 142 #define GET_TX_DESC_RDG_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 13, 1) 143 #define SET_TX_DESC_AGG_EN(__tx_desc, __value) \ 144 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 12, 1, __value) 145 #define GET_TX_DESC_AGG_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 12, 1) 146 #define SET_TX_DESC_CCA_RTS(__tx_desc, __value) \ 147 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 10, 2, __value) 148 #define GET_TX_DESC_CCA_RTS(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 10, 2) 149 150 #define SET_TX_DESC_TRI_FRAME(__tx_desc, __value) \ 151 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 9, 1, __value) 152 #define GET_TX_DESC_TRI_FRAME(__tx_desc) \ 153 LE_BITS_TO_4BYTE(__tx_desc + 0x08, 9, 1) 154 155 #define SET_TX_DESC_P_AID(__tx_desc, __value) \ 156 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x08, 0, 9, __value) 157 #define GET_TX_DESC_P_AID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x08, 0, 9) 158 159 /*TXDESC_WORD3*/ 160 161 #define SET_TX_DESC_AMPDU_MAX_TIME(__tx_desc, __value) \ 162 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 24, 8, __value) 163 #define GET_TX_DESC_AMPDU_MAX_TIME(__tx_desc) \ 164 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 24, 8) 165 #define SET_TX_DESC_NDPA(__tx_desc, __value) \ 166 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 22, 2, __value) 167 #define GET_TX_DESC_NDPA(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 22, 2) 168 #define SET_TX_DESC_MAX_AGG_NUM(__tx_desc, __value) \ 169 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 17, 5, __value) 170 #define GET_TX_DESC_MAX_AGG_NUM(__tx_desc) \ 171 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 17, 5) 172 #define SET_TX_DESC_USE_MAX_TIME_EN(__tx_desc, __value) \ 173 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 16, 1, __value) 174 #define GET_TX_DESC_USE_MAX_TIME_EN(__tx_desc) \ 175 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 16, 1) 176 #define SET_TX_DESC_NAVUSEHDR(__tx_desc, __value) \ 177 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 15, 1, __value) 178 #define GET_TX_DESC_NAVUSEHDR(__tx_desc) \ 179 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 15, 1) 180 181 #define SET_TX_DESC_CHK_EN(__tx_desc, __value) \ 182 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 14, 1, __value) 183 #define GET_TX_DESC_CHK_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 14, 1) 184 185 #define SET_TX_DESC_HW_RTS_EN(__tx_desc, __value) \ 186 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 13, 1, __value) 187 #define GET_TX_DESC_HW_RTS_EN(__tx_desc) \ 188 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 13, 1) 189 #define SET_TX_DESC_RTSEN(__tx_desc, __value) \ 190 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 12, 1, __value) 191 #define GET_TX_DESC_RTSEN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 12, 1) 192 #define SET_TX_DESC_CTS2SELF(__tx_desc, __value) \ 193 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 11, 1, __value) 194 #define GET_TX_DESC_CTS2SELF(__tx_desc) \ 195 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 11, 1) 196 #define SET_TX_DESC_DISDATAFB(__tx_desc, __value) \ 197 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 10, 1, __value) 198 #define GET_TX_DESC_DISDATAFB(__tx_desc) \ 199 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 10, 1) 200 #define SET_TX_DESC_DISRTSFB(__tx_desc, __value) \ 201 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 9, 1, __value) 202 #define GET_TX_DESC_DISRTSFB(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 9, 1) 203 #define SET_TX_DESC_USE_RATE(__tx_desc, __value) \ 204 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 8, 1, __value) 205 #define GET_TX_DESC_USE_RATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 8, 1) 206 #define SET_TX_DESC_HW_SSN_SEL(__tx_desc, __value) \ 207 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 6, 2, __value) 208 #define GET_TX_DESC_HW_SSN_SEL(__tx_desc) \ 209 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 6, 2) 210 211 #define SET_TX_DESC_WHEADER_LEN(__tx_desc, __value) \ 212 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x0C, 0, 5, __value) 213 #define GET_TX_DESC_WHEADER_LEN(__tx_desc) \ 214 LE_BITS_TO_4BYTE(__tx_desc + 0x0C, 0, 5) 215 216 /*TXDESC_WORD4*/ 217 218 #define SET_TX_DESC_PCTS_MASK_IDX(__tx_desc, __value) \ 219 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 30, 2, __value) 220 #define GET_TX_DESC_PCTS_MASK_IDX(__tx_desc) \ 221 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 30, 2) 222 #define SET_TX_DESC_PCTS_EN(__tx_desc, __value) \ 223 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 29, 1, __value) 224 #define GET_TX_DESC_PCTS_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 29, 1) 225 #define SET_TX_DESC_RTSRATE(__tx_desc, __value) \ 226 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 24, 5, __value) 227 #define GET_TX_DESC_RTSRATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 24, 5) 228 #define SET_TX_DESC_RTS_DATA_RTY_LMT(__tx_desc, __value) \ 229 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 18, 6, __value) 230 #define GET_TX_DESC_RTS_DATA_RTY_LMT(__tx_desc) \ 231 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 18, 6) 232 #define SET_TX_DESC_RTY_LMT_EN(__tx_desc, __value) \ 233 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 17, 1, __value) 234 #define GET_TX_DESC_RTY_LMT_EN(__tx_desc) \ 235 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 17, 1) 236 #define SET_TX_DESC_RTS_RTY_LOWEST_RATE(__tx_desc, __value) \ 237 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 13, 4, __value) 238 #define GET_TX_DESC_RTS_RTY_LOWEST_RATE(__tx_desc) \ 239 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 13, 4) 240 #define SET_TX_DESC_DATA_RTY_LOWEST_RATE(__tx_desc, __value) \ 241 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 8, 5, __value) 242 #define GET_TX_DESC_DATA_RTY_LOWEST_RATE(__tx_desc) \ 243 LE_BITS_TO_4BYTE(__tx_desc + 0x10, 8, 5) 244 #define SET_TX_DESC_TRY_RATE(__tx_desc, __value) \ 245 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 7, 1, __value) 246 #define GET_TX_DESC_TRY_RATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 7, 1) 247 #define SET_TX_DESC_DATARATE(__tx_desc, __value) \ 248 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x10, 0, 7, __value) 249 #define GET_TX_DESC_DATARATE(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x10, 0, 7) 250 251 /*TXDESC_WORD5*/ 252 253 #define SET_TX_DESC_POLLUTED(__tx_desc, __value) \ 254 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 31, 1, __value) 255 #define GET_TX_DESC_POLLUTED(__tx_desc) \ 256 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 31, 1) 257 258 #define SET_TX_DESC_TXPWR_OFSET(__tx_desc, __value) \ 259 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 28, 3, __value) 260 #define GET_TX_DESC_TXPWR_OFSET(__tx_desc) \ 261 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 28, 3) 262 #define SET_TX_DESC_TX_ANT(__tx_desc, __value) \ 263 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 24, 4, __value) 264 #define GET_TX_DESC_TX_ANT(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 24, 4) 265 #define SET_TX_DESC_PORT_ID(__tx_desc, __value) \ 266 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 21, 3, __value) 267 #define GET_TX_DESC_PORT_ID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 21, 3) 268 269 #define SET_TX_DESC_MULTIPLE_PORT(__tx_desc, __value) \ 270 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 18, 3, __value) 271 #define GET_TX_DESC_MULTIPLE_PORT(__tx_desc) \ 272 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 18, 3) 273 274 #define SET_TX_DESC_SIGNALING_TAPKT_EN(__tx_desc, __value) \ 275 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 17, 1, __value) 276 #define GET_TX_DESC_SIGNALING_TAPKT_EN(__tx_desc) \ 277 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 17, 1) 278 279 #define SET_TX_DESC_RTS_SC(__tx_desc, __value) \ 280 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 13, 4, __value) 281 #define GET_TX_DESC_RTS_SC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 13, 4) 282 #define SET_TX_DESC_RTS_SHORT(__tx_desc, __value) \ 283 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 12, 1, __value) 284 #define GET_TX_DESC_RTS_SHORT(__tx_desc) \ 285 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 12, 1) 286 287 #define SET_TX_DESC_VCS_STBC(__tx_desc, __value) \ 288 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 10, 2, __value) 289 #define GET_TX_DESC_VCS_STBC(__tx_desc) \ 290 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 10, 2) 291 292 #define SET_TX_DESC_DATA_STBC(__tx_desc, __value) \ 293 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 8, 2, __value) 294 #define GET_TX_DESC_DATA_STBC(__tx_desc) \ 295 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 8, 2) 296 297 #define SET_TX_DESC_DATA_LDPC(__tx_desc, __value) \ 298 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 7, 1, __value) 299 #define GET_TX_DESC_DATA_LDPC(__tx_desc) \ 300 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 7, 1) 301 302 #define SET_TX_DESC_DATA_BW(__tx_desc, __value) \ 303 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 5, 2, __value) 304 #define GET_TX_DESC_DATA_BW(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 5, 2) 305 #define SET_TX_DESC_DATA_SHORT(__tx_desc, __value) \ 306 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 4, 1, __value) 307 #define GET_TX_DESC_DATA_SHORT(__tx_desc) \ 308 LE_BITS_TO_4BYTE(__tx_desc + 0x14, 4, 1) 309 #define SET_TX_DESC_DATA_SC(__tx_desc, __value) \ 310 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x14, 0, 4, __value) 311 #define GET_TX_DESC_DATA_SC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x14, 0, 4) 312 313 /*TXDESC_WORD6*/ 314 315 #define SET_TX_DESC_ANTSEL_D(__tx_desc, __value) \ 316 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 30, 2, __value) 317 #define GET_TX_DESC_ANTSEL_D(__tx_desc) \ 318 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 30, 2) 319 #define SET_TX_DESC_ANT_MAPD(__tx_desc, __value) \ 320 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 28, 2, __value) 321 #define GET_TX_DESC_ANT_MAPD(__tx_desc) \ 322 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 28, 2) 323 #define SET_TX_DESC_ANT_MAPC(__tx_desc, __value) \ 324 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 26, 2, __value) 325 #define GET_TX_DESC_ANT_MAPC(__tx_desc) \ 326 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 26, 2) 327 #define SET_TX_DESC_ANT_MAPB(__tx_desc, __value) \ 328 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 24, 2, __value) 329 #define GET_TX_DESC_ANT_MAPB(__tx_desc) \ 330 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 24, 2) 331 #define SET_TX_DESC_ANT_MAPA(__tx_desc, __value) \ 332 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 22, 2, __value) 333 #define GET_TX_DESC_ANT_MAPA(__tx_desc) \ 334 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 22, 2) 335 #define SET_TX_DESC_ANTSEL_C(__tx_desc, __value) \ 336 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 20, 2, __value) 337 #define GET_TX_DESC_ANTSEL_C(__tx_desc) \ 338 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 20, 2) 339 #define SET_TX_DESC_ANTSEL_B(__tx_desc, __value) \ 340 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 18, 2, __value) 341 #define GET_TX_DESC_ANTSEL_B(__tx_desc) \ 342 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 18, 2) 343 344 #define SET_TX_DESC_ANTSEL_A(__tx_desc, __value) \ 345 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 16, 2, __value) 346 #define GET_TX_DESC_ANTSEL_A(__tx_desc) \ 347 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 16, 2) 348 #define SET_TX_DESC_MBSSID(__tx_desc, __value) \ 349 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 12, 4, __value) 350 #define GET_TX_DESC_MBSSID(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x18, 12, 4) 351 #ifdef SET_TX_DESC_SW_DEFINE 352 #undef SET_TX_DESC_SW_DEFINE 353 #endif 354 #define SET_TX_DESC_SW_DEFINE(__tx_desc, __value) \ 355 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x18, 0, 12, __value) 356 #define GET_TX_DESC_SW_DEFINE(__tx_desc) \ 357 LE_BITS_TO_4BYTE(__tx_desc + 0x18, 0, 12) 358 359 /*TXDESC_WORD7*/ 360 361 #define SET_TX_DESC_DMA_TXAGG_NUM(__tx_desc, __value) \ 362 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 24, 8, __value) 363 #define GET_TX_DESC_DMA_TXAGG_NUM(__tx_desc) \ 364 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 24, 8) 365 366 #define SET_TX_DESC_FINAL_DATA_RATE(__tx_desc, __value) \ 367 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 24, 8, __value) 368 #define GET_TX_DESC_FINAL_DATA_RATE(__tx_desc) \ 369 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 24, 8) 370 #define SET_TX_DESC_NTX_MAP(__tx_desc, __value) \ 371 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 20, 4, __value) 372 #define GET_TX_DESC_NTX_MAP(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 20, 4) 373 374 #define SET_TX_DESC_TX_BUFF_SIZE(__tx_desc, __value) \ 375 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value) 376 #define GET_TX_DESC_TX_BUFF_SIZE(__tx_desc) \ 377 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16) 378 #define SET_TX_DESC_TXDESC_CHECKSUM(__tx_desc, __value) \ 379 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value) 380 #define GET_TX_DESC_TXDESC_CHECKSUM(__tx_desc) \ 381 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16) 382 #define SET_TX_DESC_TIMESTAMP(__tx_desc, __value) \ 383 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x1C, 0, 16, __value) 384 #define GET_TX_DESC_TIMESTAMP(__tx_desc) \ 385 LE_BITS_TO_4BYTE(__tx_desc + 0x1C, 0, 16) 386 387 /*TXDESC_WORD8*/ 388 389 #define SET_TX_DESC_TXWIFI_CP(__tx_desc, __value) \ 390 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 31, 1, __value) 391 #define GET_TX_DESC_TXWIFI_CP(__tx_desc) \ 392 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 31, 1) 393 #define SET_TX_DESC_MAC_CP(__tx_desc, __value) \ 394 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 30, 1, __value) 395 #define GET_TX_DESC_MAC_CP(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 30, 1) 396 #define SET_TX_DESC_STW_PKTRE_DIS(__tx_desc, __value) \ 397 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 29, 1, __value) 398 #define GET_TX_DESC_STW_PKTRE_DIS(__tx_desc) \ 399 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 29, 1) 400 #define SET_TX_DESC_STW_RB_DIS(__tx_desc, __value) \ 401 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 28, 1, __value) 402 #define GET_TX_DESC_STW_RB_DIS(__tx_desc) \ 403 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 28, 1) 404 #define SET_TX_DESC_STW_RATE_DIS(__tx_desc, __value) \ 405 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 27, 1, __value) 406 #define GET_TX_DESC_STW_RATE_DIS(__tx_desc) \ 407 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 27, 1) 408 #define SET_TX_DESC_STW_ANT_DIS(__tx_desc, __value) \ 409 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 26, 1, __value) 410 #define GET_TX_DESC_STW_ANT_DIS(__tx_desc) \ 411 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 26, 1) 412 #define SET_TX_DESC_STW_EN(__tx_desc, __value) \ 413 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 25, 1, __value) 414 #define GET_TX_DESC_STW_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 25, 1) 415 #define SET_TX_DESC_SMH_EN(__tx_desc, __value) \ 416 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 24, 1, __value) 417 #define GET_TX_DESC_SMH_EN(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 24, 1) 418 419 #define SET_TX_DESC_TAILPAGE_L(__tx_desc, __value) \ 420 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 24, 8, __value) 421 #define GET_TX_DESC_TAILPAGE_L(__tx_desc) \ 422 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 24, 8) 423 424 #define SET_TX_DESC_SDIO_DMASEQ(__tx_desc, __value) \ 425 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 16, 8, __value) 426 #define GET_TX_DESC_SDIO_DMASEQ(__tx_desc) \ 427 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 16, 8) 428 429 #define SET_TX_DESC_NEXTHEADPAGE_L(__tx_desc, __value) \ 430 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 16, 8, __value) 431 #define GET_TX_DESC_NEXTHEADPAGE_L(__tx_desc) \ 432 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 16, 8) 433 #define SET_TX_DESC_EN_HWSEQ(__tx_desc, __value) \ 434 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 15, 1, __value) 435 #define GET_TX_DESC_EN_HWSEQ(__tx_desc) \ 436 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 15, 1) 437 438 #define SET_TX_DESC_EN_HWEXSEQ(__tx_desc, __value) \ 439 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 14, 1, __value) 440 #define GET_TX_DESC_EN_HWEXSEQ(__tx_desc) \ 441 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 14, 1) 442 443 #define SET_TX_DESC_DATA_RC(__tx_desc, __value) \ 444 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 8, 6, __value) 445 #define GET_TX_DESC_DATA_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 8, 6) 446 #define SET_TX_DESC_BAR_RTY_TH(__tx_desc, __value) \ 447 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 6, 2, __value) 448 #define GET_TX_DESC_BAR_RTY_TH(__tx_desc) \ 449 LE_BITS_TO_4BYTE(__tx_desc + 0x20, 6, 2) 450 #define SET_TX_DESC_RTS_RC(__tx_desc, __value) \ 451 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x20, 0, 6, __value) 452 #define GET_TX_DESC_RTS_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x20, 0, 6) 453 454 /*TXDESC_WORD9*/ 455 456 #define SET_TX_DESC_TAILPAGE_H(__tx_desc, __value) \ 457 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 28, 4, __value) 458 #define GET_TX_DESC_TAILPAGE_H(__tx_desc) \ 459 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 28, 4) 460 #define SET_TX_DESC_NEXTHEADPAGE_H(__tx_desc, __value) \ 461 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 24, 4, __value) 462 #define GET_TX_DESC_NEXTHEADPAGE_H(__tx_desc) \ 463 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 24, 4) 464 465 #define SET_TX_DESC_SW_SEQ(__tx_desc, __value) \ 466 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 12, 12, __value) 467 #define GET_TX_DESC_SW_SEQ(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x24, 12, 12) 468 #define SET_TX_DESC_TXBF_PATH(__tx_desc, __value) \ 469 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 11, 1, __value) 470 #define GET_TX_DESC_TXBF_PATH(__tx_desc) \ 471 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 11, 1) 472 #define SET_TX_DESC_PADDING_LEN(__tx_desc, __value) \ 473 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 0, 11, __value) 474 #define GET_TX_DESC_PADDING_LEN(__tx_desc) \ 475 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 0, 11) 476 #define SET_TX_DESC_GROUP_BIT_IE_OFFSET(__tx_desc, __value) \ 477 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x24, 0, 8, __value) 478 #define GET_TX_DESC_GROUP_BIT_IE_OFFSET(__tx_desc) \ 479 LE_BITS_TO_4BYTE(__tx_desc + 0x24, 0, 8) 480 481 /*WORD10*/ 482 483 #define SET_TX_DESC_MU_DATARATE(__tx_desc, __value) \ 484 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 8, 8, __value) 485 #define GET_TX_DESC_MU_DATARATE(__tx_desc) \ 486 LE_BITS_TO_4BYTE(__tx_desc + 0x28, 8, 8) 487 #define SET_TX_DESC_MU_RC(__tx_desc, __value) \ 488 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 4, 4, __value) 489 #define GET_TX_DESC_MU_RC(__tx_desc) LE_BITS_TO_4BYTE(__tx_desc + 0x28, 4, 4) 490 #define SET_TX_DESC_SND_PKT_SEL(__tx_desc, __value) \ 491 SET_BITS_TO_LE_4BYTE(__tx_desc + 0x28, 0, 2, __value) 492 #define GET_TX_DESC_SND_PKT_SEL(__tx_desc) \ 493 LE_BITS_TO_4BYTE(__tx_desc + 0x28, 0, 2) 494 495 #endif 496