OSDN Git Service

Add rtl8821ce driver version 5.5.2
[android-x86/external-kernel-drivers.git] / rtl8821ce / hal / halmac / halmac_tx_desc_ie_ap.h
diff --git a/rtl8821ce/hal/halmac/halmac_tx_desc_ie_ap.h b/rtl8821ce/hal/halmac/halmac_tx_desc_ie_ap.h
new file mode 100644 (file)
index 0000000..a6d215f
--- /dev/null
@@ -0,0 +1,1005 @@
+/******************************************************************************
+ *
+ * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ ******************************************************************************/
+
+#ifndef _HALMAC_TX_DESC_IE_AP_H_
+#define _HALMAC_TX_DESC_IE_AP_H_
+#if (HALMAC_8814B_SUPPORT)
+
+#define IE0_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE0_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE0_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE0_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE0_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE0_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE0_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE0_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE0_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE0_GET_TX_DESC_ARFR_TABLE_SEL(txdesc_ie)                              \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 19)
+#define IE0_SET_TX_DESC_ARFR_TABLE_SEL(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 19)
+#define IE0_SET_TX_DESC_ARFR_TABLE_SEL_NO_CLR(txdesc_ie, value)                \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 19)
+#define IE0_GET_TX_DESC_ARFR_HT_EN(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 18)
+#define IE0_SET_TX_DESC_ARFR_HT_EN(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 18)
+#define IE0_SET_TX_DESC_ARFR_HT_EN_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 18)
+#define IE0_GET_TX_DESC_ARFR_OFDM_EN(txdesc_ie)                                \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 17)
+#define IE0_SET_TX_DESC_ARFR_OFDM_EN(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 17)
+#define IE0_SET_TX_DESC_ARFR_OFDM_EN_NO_CLR(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 17)
+#define IE0_GET_TX_DESC_ARFR_CCK_EN(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 16)
+#define IE0_SET_TX_DESC_ARFR_CCK_EN(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 16)
+#define IE0_SET_TX_DESC_ARFR_CCK_EN_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 16)
+#define IE0_GET_TX_DESC_HW_RTS_EN(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 9)
+#define IE0_SET_TX_DESC_HW_RTS_EN(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
+#define IE0_SET_TX_DESC_HW_RTS_EN_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
+#define IE0_GET_TX_DESC_RTS_EN(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 8)
+#define IE0_SET_TX_DESC_RTS_EN(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
+#define IE0_SET_TX_DESC_RTS_EN_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
+#define IE0_GET_TX_DESC_CTS2SELF(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 7)
+#define IE0_SET_TX_DESC_CTS2SELF(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE0_SET_TX_DESC_CTS2SELF_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE0_GET_TX_DESC_RTY_LMT_EN(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 6)
+#define IE0_SET_TX_DESC_RTY_LMT_EN(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE0_SET_TX_DESC_RTY_LMT_EN_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE0_GET_TX_DESC_RTS_SHORT(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 5)
+#define IE0_SET_TX_DESC_RTS_SHORT(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
+#define IE0_SET_TX_DESC_RTS_SHORT_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
+#define IE0_GET_TX_DESC_DISDATAFB(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 4)
+#define IE0_SET_TX_DESC_DISDATAFB(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
+#define IE0_SET_TX_DESC_DISDATAFB_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
+#define IE0_GET_TX_DESC_DISRTSFB(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 3)
+#define IE0_SET_TX_DESC_DISRTSFB(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE0_SET_TX_DESC_DISRTSFB_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE0_GET_TX_DESC_DATA_SHORT(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 2)
+#define IE0_SET_TX_DESC_DATA_SHORT(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE0_SET_TX_DESC_DATA_SHORT_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE0_GET_TX_DESC_TRY_RATE(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 1)
+#define IE0_SET_TX_DESC_TRY_RATE(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE0_SET_TX_DESC_TRY_RATE_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE0_GET_TX_DESC_USERATE(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 0)
+#define IE0_SET_TX_DESC_USERATE(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE0_SET_TX_DESC_USERATE_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE0_GET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc_ie)                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 27)
+#define IE0_SET_TX_DESC_RTS_RTY_LOWEST_RATE(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
+#define IE0_SET_TX_DESC_RTS_RTY_LOWEST_RATE_NO_CLR(txdesc_ie, value)           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
+#define IE0_GET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc_ie)                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1f, 22)
+#define IE0_SET_TX_DESC_DATA_RTY_LOWEST_RATE(txdesc_ie, value)                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1f, 22)
+#define IE0_SET_TX_DESC_DATA_RTY_LOWEST_RATE_NO_CLR(txdesc_ie, value)          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1f, 22)
+#define IE0_GET_TX_DESC_RTS_DATA_RTY_LMT(txdesc_ie)                            \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3f, 16)
+#define IE0_SET_TX_DESC_RTS_DATA_RTY_LMT(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 16)
+#define IE0_SET_TX_DESC_RTS_DATA_RTY_LMT_NO_CLR(txdesc_ie, value)              \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 16)
+#define IE0_GET_TX_DESC_DATA_BW(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 12)
+#define IE0_SET_TX_DESC_DATA_BW(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
+#define IE0_SET_TX_DESC_DATA_BW_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
+#define IE0_GET_TX_DESC_RTSRATE(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 7)
+#define IE0_SET_TX_DESC_RTSRATE(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 7)
+#define IE0_SET_TX_DESC_RTSRATE_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 7)
+#define IE0_GET_TX_DESC_DATARATE(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x7f, 0)
+#define IE0_SET_TX_DESC_DATARATE(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
+#define IE0_SET_TX_DESC_DATARATE_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
+#define IE1_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE1_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE1_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE1_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE1_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE1_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE1_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE1_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE1_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE1_GET_TX_DESC_AMPDU_DENSITY(txdesc_ie)                               \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x7, 21)
+#define IE1_SET_TX_DESC_AMPDU_DENSITY(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 21)
+#define IE1_SET_TX_DESC_AMPDU_DENSITY_NO_CLR(txdesc_ie, value)                 \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 21)
+#define IE1_GET_TX_DESC_MAX_AGG_NUM(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1f, 16)
+#define IE1_SET_TX_DESC_MAX_AGG_NUM(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1f, 16)
+#define IE1_SET_TX_DESC_MAX_AGG_NUM_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1f, 16)
+#define IE1_GET_TX_DESC_SECTYPE(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x3, 14)
+#define IE1_SET_TX_DESC_SECTYPE(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 14)
+#define IE1_SET_TX_DESC_SECTYPE_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 14)
+#define IE1_GET_TX_DESC_MOREFRAG(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 13)
+#define IE1_SET_TX_DESC_MOREFRAG(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 13)
+#define IE1_SET_TX_DESC_MOREFRAG_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 13)
+#define IE1_GET_TX_DESC_NOACM(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 12)
+#define IE1_SET_TX_DESC_NOACM(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 12)
+#define IE1_SET_TX_DESC_NOACM_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 12)
+#define IE1_GET_TX_DESC_BCNPKT_TSF_CTRL(txdesc_ie)                             \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 11)
+#define IE1_SET_TX_DESC_BCNPKT_TSF_CTRL(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
+#define IE1_SET_TX_DESC_BCNPKT_TSF_CTRL_NO_CLR(txdesc_ie, value)               \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
+#define IE1_GET_TX_DESC_NAVUSEHDR(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 10)
+#define IE1_SET_TX_DESC_NAVUSEHDR(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
+#define IE1_SET_TX_DESC_NAVUSEHDR_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
+#define IE1_GET_TX_DESC_HTC(txdesc_ie)                                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 9)
+#define IE1_SET_TX_DESC_HTC(txdesc_ie, value)                                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
+#define IE1_SET_TX_DESC_HTC_NO_CLR(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 9)
+#define IE1_GET_TX_DESC_BMC(txdesc_ie)                                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 8)
+#define IE1_SET_TX_DESC_BMC(txdesc_ie, value)                                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
+#define IE1_SET_TX_DESC_BMC_NO_CLR(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 8)
+#define IE1_GET_TX_DESC_TX_PKT_AFTER_PIFS(txdesc_ie)                           \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 7)
+#define IE1_SET_TX_DESC_TX_PKT_AFTER_PIFS(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE1_SET_TX_DESC_TX_PKT_AFTER_PIFS_NO_CLR(txdesc_ie, value)             \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE1_GET_TX_DESC_USE_MAX_TIME_EN(txdesc_ie)                             \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 6)
+#define IE1_SET_TX_DESC_USE_MAX_TIME_EN(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE1_SET_TX_DESC_USE_MAX_TIME_EN_NO_CLR(txdesc_ie, value)               \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE1_GET_TX_DESC_HW_SSN_SEL(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x3, 4)
+#define IE1_SET_TX_DESC_HW_SSN_SEL(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 4)
+#define IE1_SET_TX_DESC_HW_SSN_SEL_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 4)
+#define IE1_GET_TX_DESC_DISQSELSEQ(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 3)
+#define IE1_SET_TX_DESC_DISQSELSEQ(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE1_SET_TX_DESC_DISQSELSEQ_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE1_GET_TX_DESC_EN_HWSEQ(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 2)
+#define IE1_SET_TX_DESC_EN_HWSEQ(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE1_SET_TX_DESC_EN_HWSEQ_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE1_GET_TX_DESC_EN_HWEXSEQ(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 1)
+#define IE1_SET_TX_DESC_EN_HWEXSEQ(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE1_SET_TX_DESC_EN_HWEXSEQ_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE1_GET_TX_DESC_EN_DESC_ID(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 0)
+#define IE1_SET_TX_DESC_EN_DESC_ID(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE1_SET_TX_DESC_EN_DESC_ID_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE1_GET_TX_DESC_AMPDU_MAX_TIME(txdesc_ie)                              \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xff, 24)
+#define IE1_SET_TX_DESC_AMPDU_MAX_TIME(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 24)
+#define IE1_SET_TX_DESC_AMPDU_MAX_TIME_NO_CLR(txdesc_ie, value)                \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 24)
+#define IE1_GET_TX_DESC_P_AID(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1ff, 15)
+#define IE1_SET_TX_DESC_P_AID(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1ff,    \
+               15)
+#define IE1_SET_TX_DESC_P_AID_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1ff,    \
+               15)
+#define IE1_GET_TX_DESC_MOREDATA(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1, 14)
+#define IE1_SET_TX_DESC_MOREDATA(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 14)
+#define IE1_SET_TX_DESC_MOREDATA_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 14)
+#define IE1_GET_TX_DESC_SW_SEQ(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xfff, 0)
+#define IE1_SET_TX_DESC_SW_SEQ(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
+#define IE1_SET_TX_DESC_SW_SEQ_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
+#define IE2_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE2_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE2_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE2_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE2_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE2_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE2_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE2_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE2_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE2_GET_TX_DESC_ADDR_CAM(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xff, 16)
+#define IE2_SET_TX_DESC_ADDR_CAM(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xff, 16)
+#define IE2_SET_TX_DESC_ADDR_CAM_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xff, 16)
+#define IE2_GET_TX_DESC_MULTIPLE_PORT(txdesc_ie)                               \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x7, 12)
+#define IE2_SET_TX_DESC_MULTIPLE_PORT(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 12)
+#define IE2_SET_TX_DESC_MULTIPLE_PORT_NO_CLR(txdesc_ie, value)                 \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7, 12)
+#define IE2_GET_TX_DESC_RAW(txdesc_ie)                                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 11)
+#define IE2_SET_TX_DESC_RAW(txdesc_ie, value)                                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
+#define IE2_SET_TX_DESC_RAW_NO_CLR(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 11)
+#define IE2_GET_TX_DESC_RDG_EN(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 10)
+#define IE2_SET_TX_DESC_RDG_EN(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
+#define IE2_SET_TX_DESC_RDG_EN_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 10)
+#define IE2_GET_TX_DESC_SPECIAL_CW(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 7)
+#define IE2_SET_TX_DESC_SPECIAL_CW(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE2_SET_TX_DESC_SPECIAL_CW_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 7)
+#define IE2_GET_TX_DESC_POLLUTED(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 6)
+#define IE2_SET_TX_DESC_POLLUTED(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE2_SET_TX_DESC_POLLUTED_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 6)
+#define IE2_GET_TX_DESC_BT_NULL(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 5)
+#define IE2_SET_TX_DESC_BT_NULL(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
+#define IE2_SET_TX_DESC_BT_NULL_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 5)
+#define IE2_GET_TX_DESC_NULL_1(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 4)
+#define IE2_SET_TX_DESC_NULL_1(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
+#define IE2_SET_TX_DESC_NULL_1_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 4)
+#define IE2_GET_TX_DESC_NULL_0(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 3)
+#define IE2_SET_TX_DESC_NULL_0(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE2_SET_TX_DESC_NULL_0_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 3)
+#define IE2_GET_TX_DESC_TRI_FRAME(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 2)
+#define IE2_SET_TX_DESC_TRI_FRAME(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE2_SET_TX_DESC_TRI_FRAME_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE2_GET_TX_DESC_SPE_RPT(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 1)
+#define IE2_SET_TX_DESC_SPE_RPT(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE2_SET_TX_DESC_SPE_RPT_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE2_GET_TX_DESC_FTM_EN(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 0)
+#define IE2_SET_TX_DESC_FTM_EN(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE2_SET_TX_DESC_FTM_EN_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE2_GET_TX_DESC_MBSSID(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 27)
+#define IE2_SET_TX_DESC_MBSSID(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
+#define IE2_SET_TX_DESC_MBSSID_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 27)
+#define IE2_GET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc_ie)                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x7ff, 16)
+#define IE2_SET_TX_DESC_GROUP_BIT_IE_OFFSET(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7ff,    \
+               16)
+#define IE2_SET_TX_DESC_GROUP_BIT_IE_OFFSET_NO_CLR(txdesc_ie, value)           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7ff,    \
+               16)
+#define IE2_GET_TX_DESC_RDG_NAV_EXT(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1, 15)
+#define IE2_SET_TX_DESC_RDG_NAV_EXT(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 15)
+#define IE2_SET_TX_DESC_RDG_NAV_EXT_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 15)
+#define IE2_GET_TX_DESC_DROP_ID(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 12)
+#define IE2_SET_TX_DESC_DROP_ID(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
+#define IE2_SET_TX_DESC_DROP_ID_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 12)
+#define IE2_GET_TX_DESC_SW_DEFINE(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xfff, 0)
+#define IE2_SET_TX_DESC_SW_DEFINE(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
+#define IE2_SET_TX_DESC_SW_DEFINE_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xfff, 0)
+#define IE3_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE3_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE3_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE3_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE3_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE3_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE3_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE3_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE3_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE3_GET_TX_DESC_DATA_SC(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 20)
+#define IE3_SET_TX_DESC_DATA_SC(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 20)
+#define IE3_SET_TX_DESC_DATA_SC_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 20)
+#define IE3_GET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc_ie)                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 16)
+#define IE3_SET_TX_DESC_SIGNALING_TA_PKT_SC(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 16)
+#define IE3_SET_TX_DESC_SIGNALING_TA_PKT_SC_NO_CLR(txdesc_ie, value)           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 16)
+#define IE3_GET_TX_DESC_CTRL_CNT(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 8)
+#define IE3_SET_TX_DESC_CTRL_CNT(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 8)
+#define IE3_SET_TX_DESC_CTRL_CNT_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 8)
+#define IE3_GET_TX_DESC_CTRL_CNT_VALID(txdesc_ie)                              \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 1)
+#define IE3_SET_TX_DESC_CTRL_CNT_VALID(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE3_SET_TX_DESC_CTRL_CNT_VALID_NO_CLR(txdesc_ie, value)                \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE3_GET_TX_DESC_SIGNALING_TA_PKT_EN(txdesc_ie)                         \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 0)
+#define IE3_SET_TX_DESC_SIGNALING_TA_PKT_EN(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE3_SET_TX_DESC_SIGNALING_TA_PKT_EN_NO_CLR(txdesc_ie, value)           \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE3_GET_TX_DESC_G_ID(txdesc_ie)                                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3f, 24)
+#define IE3_SET_TX_DESC_G_ID(txdesc_ie, value)                                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 24)
+#define IE3_SET_TX_DESC_G_ID_NO_CLR(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 24)
+#define IE3_GET_TX_DESC_SND_TARGET(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xff, 16)
+#define IE3_SET_TX_DESC_SND_TARGET(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 16)
+#define IE3_SET_TX_DESC_SND_TARGET_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xff, 16)
+#define IE3_GET_TX_DESC_CCA_RTS(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 11)
+#define IE3_SET_TX_DESC_CCA_RTS(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 11)
+#define IE3_SET_TX_DESC_CCA_RTS_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 11)
+#define IE3_GET_TX_DESC_SND_PKT_SEL(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 9)
+#define IE3_SET_TX_DESC_SND_PKT_SEL(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 9)
+#define IE3_SET_TX_DESC_SND_PKT_SEL_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 9)
+#define IE3_GET_TX_DESC_NDPA(txdesc_ie)                                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 7)
+#define IE3_SET_TX_DESC_NDPA(txdesc_ie, value)                                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 7)
+#define IE3_SET_TX_DESC_NDPA_NO_CLR(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 7)
+#define IE3_GET_TX_DESC_MU_DATARATE(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x7f, 0)
+#define IE3_SET_TX_DESC_MU_DATARATE(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
+#define IE3_SET_TX_DESC_MU_DATARATE_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x7f, 0)
+#define IE4_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE4_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE4_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE4_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE4_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE4_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE4_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE4_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE4_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE4_GET_TX_DESC_VCS_STBC(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x3, 10)
+#define IE4_SET_TX_DESC_VCS_STBC(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 10)
+#define IE4_SET_TX_DESC_VCS_STBC_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 10)
+#define IE4_GET_TX_DESC_DATA_STBC(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x3, 8)
+#define IE4_SET_TX_DESC_DATA_STBC(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 8)
+#define IE4_SET_TX_DESC_DATA_STBC_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x3, 8)
+#define IE4_GET_TX_DESC_DATA_LDPC(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 2)
+#define IE4_SET_TX_DESC_DATA_LDPC(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE4_SET_TX_DESC_DATA_LDPC_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 2)
+#define IE4_GET_TX_DESC_GF(txdesc_ie)                                          \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 1)
+#define IE4_SET_TX_DESC_GF(txdesc_ie, value)                                   \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE4_SET_TX_DESC_GF_NO_CLR(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 1)
+#define IE4_GET_TX_DESC_LSIG_TXOP_EN(txdesc_ie)                                \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 0)
+#define IE4_SET_TX_DESC_LSIG_TXOP_EN(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE4_SET_TX_DESC_LSIG_TXOP_EN_NO_CLR(txdesc_ie, value)                  \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 0)
+#define IE4_GET_TX_DESC_PATH_MAPA(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 30)
+#define IE4_SET_TX_DESC_PATH_MAPA(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 30)
+#define IE4_SET_TX_DESC_PATH_MAPA_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 30)
+#define IE4_GET_TX_DESC_PATH_MAPB(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 28)
+#define IE4_SET_TX_DESC_PATH_MAPB(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 28)
+#define IE4_SET_TX_DESC_PATH_MAPB_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 28)
+#define IE4_GET_TX_DESC_PATH_MAPC(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 26)
+#define IE4_SET_TX_DESC_PATH_MAPC(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 26)
+#define IE4_SET_TX_DESC_PATH_MAPC_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 26)
+#define IE4_GET_TX_DESC_PATH_MAPD(txdesc_ie)                                   \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 24)
+#define IE4_SET_TX_DESC_PATH_MAPD(txdesc_ie, value)                            \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 24)
+#define IE4_SET_TX_DESC_PATH_MAPD_NO_CLR(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 24)
+#define IE4_GET_TX_DESC_ANTSEL_A(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 20)
+#define IE4_SET_TX_DESC_ANTSEL_A(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 20)
+#define IE4_SET_TX_DESC_ANTSEL_A_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 20)
+#define IE4_GET_TX_DESC_ANTSEL_B(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 16)
+#define IE4_SET_TX_DESC_ANTSEL_B(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 16)
+#define IE4_SET_TX_DESC_ANTSEL_B_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 16)
+#define IE4_GET_TX_DESC_ANTSEL_C(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 12)
+#define IE4_SET_TX_DESC_ANTSEL_C(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 12)
+#define IE4_SET_TX_DESC_ANTSEL_C_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 12)
+#define IE4_GET_TX_DESC_ANTSEL_D(txdesc_ie)                                    \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 8)
+#define IE4_SET_TX_DESC_ANTSEL_D(txdesc_ie, value)                             \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 8)
+#define IE4_SET_TX_DESC_ANTSEL_D_NO_CLR(txdesc_ie, value)                      \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 8)
+#define IE4_GET_TX_DESC_NTX_PATH_EN(txdesc_ie)                                 \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0xf, 4)
+#define IE4_SET_TX_DESC_NTX_PATH_EN(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 4)
+#define IE4_SET_TX_DESC_NTX_PATH_EN_NO_CLR(txdesc_ie, value)                   \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0xf, 4)
+#define IE4_GET_TX_DESC_ANTLSEL_EN(txdesc_ie)                                  \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1, 3)
+#define IE4_SET_TX_DESC_ANTLSEL_EN(txdesc_ie, value)                           \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 3)
+#define IE4_SET_TX_DESC_ANTLSEL_EN_NO_CLR(txdesc_ie, value)                    \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1, 3)
+#define IE4_GET_TX_DESC_TXPWR_OFSET_TYPE(txdesc_ie)                            \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3, 0)
+#define IE4_SET_TX_DESC_TXPWR_OFSET_TYPE(txdesc_ie, value)                     \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 0)
+#define IE4_SET_TX_DESC_TXPWR_OFSET_TYPE_NO_CLR(txdesc_ie, value)              \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3, 0)
+#define IE5_GET_TX_DESC_IE_END(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 31)
+#define IE5_SET_TX_DESC_IE_END(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE5_SET_TX_DESC_IE_END_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 31)
+#define IE5_GET_TX_DESC_IE_UP(txdesc_ie)                                       \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1, 30)
+#define IE5_SET_TX_DESC_IE_UP(txdesc_ie, value)                                \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE5_SET_TX_DESC_IE_UP_NO_CLR(txdesc_ie, value)                         \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1, 30)
+#define IE5_GET_TX_DESC_IE_NUM(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 24)
+#define IE5_SET_TX_DESC_IE_NUM(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE5_SET_TX_DESC_IE_NUM_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 24)
+#define IE5_GET_TX_DESC_LEN1_L(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x7f, 17)
+#define IE5_SET_TX_DESC_LEN1_L(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7f, 17)
+#define IE5_SET_TX_DESC_LEN1_L_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x7f, 17)
+#define IE5_GET_TX_DESC_LEN0(txdesc_ie)                                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0x1fff, 4)
+#define IE5_SET_TX_DESC_LEN0(txdesc_ie, value)                                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1fff,   \
+               4)
+#define IE5_SET_TX_DESC_LEN0_NO_CLR(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0x1fff,   \
+               4)
+#define IE5_GET_TX_DESC_PKT_NUM(txdesc_ie)                                     \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword0,    \
+                             0xf, 0)
+#define IE5_SET_TX_DESC_PKT_NUM(txdesc_ie, value)                              \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 0)
+#define IE5_SET_TX_DESC_PKT_NUM_NO_CLR(txdesc_ie, value)                       \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword0, value, 0xf, 0)
+#define IE5_GET_TX_DESC_LEN3(txdesc_ie)                                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1fff, 19)
+#define IE5_SET_TX_DESC_LEN3(txdesc_ie, value)                                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
+               19)
+#define IE5_SET_TX_DESC_LEN3_NO_CLR(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
+               19)
+#define IE5_GET_TX_DESC_LEN2(txdesc_ie)                                        \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x1fff, 6)
+#define IE5_SET_TX_DESC_LEN2(txdesc_ie, value)                                 \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
+               6)
+#define IE5_SET_TX_DESC_LEN2_NO_CLR(txdesc_ie, value)                          \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x1fff,   \
+               6)
+#define IE5_GET_TX_DESC_LEN1_H(txdesc_ie)                                      \
+       HALMAC_GET_DESC_FIELD(((struct halmac_tx_desc *)txdesc_ie)->dword1,    \
+                             0x3f, 0)
+#define IE5_SET_TX_DESC_LEN1_H(txdesc_ie, value)                               \
+       HALMAC_SET_DESC_FIELD_CLR(                                             \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 0)
+#define IE5_SET_TX_DESC_LEN1_H_NO_CLR(txdesc_ie, value)                        \
+       HALMAC_SET_DESC_FIELD_NO_CLR(                                          \
+               ((struct halmac_tx_desc *)txdesc_ie)->dword1, value, 0x3f, 0)
+
+#endif
+
+#endif