linux/drivers/staging/rtlwifi/halmac/halmac_tx_desc_nic.h
<<
>>
Prefs
   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