0001
0002
0003
0004 #ifndef __MT7615_MAC_H
0005 #define __MT7615_MAC_H
0006
0007 #define MT_CT_PARSE_LEN 72
0008 #define MT_CT_DMA_BUF_NUM 2
0009
0010 #define MT_RXD0_LENGTH GENMASK(15, 0)
0011 #define MT_RXD0_PKT_FLAG GENMASK(19, 16)
0012 #define MT_RXD0_PKT_TYPE GENMASK(31, 29)
0013
0014 #define MT_RXD0_NORMAL_ETH_TYPE_OFS GENMASK(22, 16)
0015 #define MT_RXD0_NORMAL_IP_SUM BIT(23)
0016 #define MT_RXD0_NORMAL_UDP_TCP_SUM BIT(24)
0017 #define MT_RXD0_NORMAL_GROUP_1 BIT(25)
0018 #define MT_RXD0_NORMAL_GROUP_2 BIT(26)
0019 #define MT_RXD0_NORMAL_GROUP_3 BIT(27)
0020 #define MT_RXD0_NORMAL_GROUP_4 BIT(28)
0021
0022 enum rx_pkt_type {
0023 PKT_TYPE_TXS,
0024 PKT_TYPE_TXRXV,
0025 PKT_TYPE_NORMAL,
0026 PKT_TYPE_RX_DUP_RFB,
0027 PKT_TYPE_RX_TMR,
0028 PKT_TYPE_RETRIEVE,
0029 PKT_TYPE_TXRX_NOTIFY,
0030 PKT_TYPE_RX_EVENT,
0031 PKT_TYPE_NORMAL_MCU,
0032 };
0033
0034 #define MT_RXD1_NORMAL_BSSID GENMASK(31, 26)
0035 #define MT_RXD1_NORMAL_PAYLOAD_FORMAT GENMASK(25, 24)
0036 #define MT_RXD1_FIRST_AMSDU_FRAME GENMASK(1, 0)
0037 #define MT_RXD1_MID_AMSDU_FRAME BIT(1)
0038 #define MT_RXD1_LAST_AMSDU_FRAME BIT(0)
0039 #define MT_RXD1_NORMAL_HDR_TRANS BIT(23)
0040 #define MT_RXD1_NORMAL_HDR_OFFSET BIT(22)
0041 #define MT_RXD1_NORMAL_MAC_HDR_LEN GENMASK(21, 16)
0042 #define MT_RXD1_NORMAL_CH_FREQ GENMASK(15, 8)
0043 #define MT_RXD1_NORMAL_KEY_ID GENMASK(7, 6)
0044 #define MT_RXD1_NORMAL_BEACON_UC BIT(5)
0045 #define MT_RXD1_NORMAL_BEACON_MC BIT(4)
0046 #define MT_RXD1_NORMAL_BF_REPORT BIT(3)
0047 #define MT_RXD1_NORMAL_ADDR_TYPE GENMASK(2, 1)
0048 #define MT_RXD1_NORMAL_BCAST GENMASK(2, 1)
0049 #define MT_RXD1_NORMAL_MCAST BIT(2)
0050 #define MT_RXD1_NORMAL_U2M BIT(1)
0051 #define MT_RXD1_NORMAL_HTC_VLD BIT(0)
0052
0053 #define MT_RXD2_NORMAL_NON_AMPDU BIT(31)
0054 #define MT_RXD2_NORMAL_NON_AMPDU_SUB BIT(30)
0055 #define MT_RXD2_NORMAL_NDATA BIT(29)
0056 #define MT_RXD2_NORMAL_NULL_FRAME BIT(28)
0057 #define MT_RXD2_NORMAL_FRAG BIT(27)
0058 #define MT_RXD2_NORMAL_INT_FRAME BIT(26)
0059 #define MT_RXD2_NORMAL_HDR_TRANS_ERROR BIT(25)
0060 #define MT_RXD2_NORMAL_MAX_LEN_ERROR BIT(24)
0061 #define MT_RXD2_NORMAL_AMSDU_ERR BIT(23)
0062 #define MT_RXD2_NORMAL_LEN_MISMATCH BIT(22)
0063 #define MT_RXD2_NORMAL_TKIP_MIC_ERR BIT(21)
0064 #define MT_RXD2_NORMAL_ICV_ERR BIT(20)
0065 #define MT_RXD2_NORMAL_CLM BIT(19)
0066 #define MT_RXD2_NORMAL_CM BIT(18)
0067 #define MT_RXD2_NORMAL_FCS_ERR BIT(17)
0068 #define MT_RXD2_NORMAL_SW_BIT BIT(16)
0069 #define MT_RXD2_NORMAL_SEC_MODE GENMASK(15, 12)
0070 #define MT_RXD2_NORMAL_TID GENMASK(11, 8)
0071 #define MT_RXD2_NORMAL_WLAN_IDX GENMASK(7, 0)
0072
0073 #define MT_RXD3_NORMAL_PF_STS GENMASK(31, 30)
0074 #define MT_RXD3_NORMAL_PF_MODE BIT(29)
0075 #define MT_RXD3_NORMAL_CLS_BITMAP GENMASK(28, 19)
0076 #define MT_RXD3_NORMAL_WOL GENMASK(18, 14)
0077 #define MT_RXD3_NORMAL_MAGIC_PKT BIT(13)
0078 #define MT_RXD3_NORMAL_OFLD GENMASK(12, 11)
0079 #define MT_RXD3_NORMAL_CLS BIT(10)
0080 #define MT_RXD3_NORMAL_PATTERN_DROP BIT(9)
0081 #define MT_RXD3_NORMAL_TSF_COMPARE_LOSS BIT(8)
0082 #define MT_RXD3_NORMAL_RXV_SEQ GENMASK(7, 0)
0083
0084 #define MT_RXD4_FRAME_CONTROL GENMASK(15, 0)
0085
0086 #define MT_RXD6_SEQ_CTRL GENMASK(15, 0)
0087 #define MT_RXD6_QOS_CTL GENMASK(31, 16)
0088
0089 #define MT_RXD7_HT_CONTROL GENMASK(31, 0)
0090
0091 #define MT_RXV1_ACID_DET_H BIT(31)
0092 #define MT_RXV1_ACID_DET_L BIT(30)
0093 #define MT_RXV1_VHTA2_B8_B3 GENMASK(29, 24)
0094 #define MT_RXV1_NUM_RX GENMASK(23, 22)
0095 #define MT_RXV1_HT_NO_SOUND BIT(21)
0096 #define MT_RXV1_HT_SMOOTH BIT(20)
0097 #define MT_RXV1_HT_SHORT_GI BIT(19)
0098 #define MT_RXV1_HT_AGGR BIT(18)
0099 #define MT_RXV1_VHTA1_B22 BIT(17)
0100 #define MT_RXV1_FRAME_MODE GENMASK(16, 15)
0101 #define MT_RXV1_TX_MODE GENMASK(14, 12)
0102 #define MT_RXV1_HT_EXT_LTF GENMASK(11, 10)
0103 #define MT_RXV1_HT_AD_CODE BIT(9)
0104 #define MT_RXV1_HT_STBC GENMASK(8, 7)
0105 #define MT_RXV1_TX_RATE GENMASK(6, 0)
0106
0107 #define MT_RXV2_SEL_ANT BIT(31)
0108 #define MT_RXV2_VALID_BIT BIT(30)
0109 #define MT_RXV2_NSTS GENMASK(29, 27)
0110 #define MT_RXV2_GROUP_ID GENMASK(26, 21)
0111 #define MT_RXV2_LENGTH GENMASK(20, 0)
0112
0113 #define MT_RXV3_WB_RSSI GENMASK(31, 24)
0114 #define MT_RXV3_IB_RSSI GENMASK(23, 16)
0115
0116 #define MT_RXV4_RCPI3 GENMASK(31, 24)
0117 #define MT_RXV4_RCPI2 GENMASK(23, 16)
0118 #define MT_RXV4_RCPI1 GENMASK(15, 8)
0119 #define MT_RXV4_RCPI0 GENMASK(7, 0)
0120
0121 #define MT_RXV5_FOE GENMASK(11, 0)
0122
0123 #define MT_RXV6_NF3 GENMASK(31, 24)
0124 #define MT_RXV6_NF2 GENMASK(23, 16)
0125 #define MT_RXV6_NF1 GENMASK(15, 8)
0126 #define MT_RXV6_NF0 GENMASK(7, 0)
0127
0128 enum tx_header_format {
0129 MT_HDR_FORMAT_802_3,
0130 MT_HDR_FORMAT_CMD,
0131 MT_HDR_FORMAT_802_11,
0132 MT_HDR_FORMAT_802_11_EXT,
0133 };
0134
0135 enum tx_pkt_type {
0136 MT_TX_TYPE_CT,
0137 MT_TX_TYPE_SF,
0138 MT_TX_TYPE_CMD,
0139 MT_TX_TYPE_FW,
0140 };
0141
0142 enum tx_port_idx {
0143 MT_TX_PORT_IDX_LMAC,
0144 MT_TX_PORT_IDX_MCU
0145 };
0146
0147 enum tx_mcu_port_q_idx {
0148 MT_TX_MCU_PORT_RX_Q0 = 0,
0149 MT_TX_MCU_PORT_RX_Q1,
0150 MT_TX_MCU_PORT_RX_Q2,
0151 MT_TX_MCU_PORT_RX_Q3,
0152 MT_TX_MCU_PORT_RX_FWDL = 0x1e
0153 };
0154
0155 enum tx_phy_bandwidth {
0156 MT_PHY_BW_20,
0157 MT_PHY_BW_40,
0158 MT_PHY_BW_80,
0159 MT_PHY_BW_160,
0160 };
0161
0162 #define MT_CT_INFO_APPLY_TXD BIT(0)
0163 #define MT_CT_INFO_COPY_HOST_TXD_ALL BIT(1)
0164 #define MT_CT_INFO_MGMT_FRAME BIT(2)
0165 #define MT_CT_INFO_NONE_CIPHER_FRAME BIT(3)
0166 #define MT_CT_INFO_HSR2_TX BIT(4)
0167
0168 #define MT_TXD0_P_IDX BIT(31)
0169 #define MT_TXD0_Q_IDX GENMASK(30, 26)
0170 #define MT_TXD0_UDP_TCP_SUM BIT(24)
0171 #define MT_TXD0_IP_SUM BIT(23)
0172 #define MT_TXD0_ETH_TYPE_OFFSET GENMASK(22, 16)
0173 #define MT_TXD0_TX_BYTES GENMASK(15, 0)
0174
0175 #define MT_TXD1_OWN_MAC GENMASK(31, 26)
0176 #define MT_TXD1_PKT_FMT GENMASK(25, 24)
0177 #define MT_TXD1_TID GENMASK(23, 21)
0178 #define MT_TXD1_AMSDU BIT(20)
0179 #define MT_TXD1_UNXV BIT(19)
0180 #define MT_TXD1_HDR_PAD GENMASK(18, 17)
0181 #define MT_TXD1_TXD_LEN BIT(16)
0182 #define MT_TXD1_LONG_FORMAT BIT(15)
0183 #define MT_TXD1_HDR_FORMAT GENMASK(14, 13)
0184 #define MT_TXD1_HDR_INFO GENMASK(12, 8)
0185 #define MT_TXD1_WLAN_IDX GENMASK(7, 0)
0186
0187 #define MT_TXD2_FIX_RATE BIT(31)
0188 #define MT_TXD2_TIMING_MEASURE BIT(30)
0189 #define MT_TXD2_BA_DISABLE BIT(29)
0190 #define MT_TXD2_POWER_OFFSET GENMASK(28, 24)
0191 #define MT_TXD2_MAX_TX_TIME GENMASK(23, 16)
0192 #define MT_TXD2_FRAG GENMASK(15, 14)
0193 #define MT_TXD2_HTC_VLD BIT(13)
0194 #define MT_TXD2_DURATION BIT(12)
0195 #define MT_TXD2_BIP BIT(11)
0196 #define MT_TXD2_MULTICAST BIT(10)
0197 #define MT_TXD2_RTS BIT(9)
0198 #define MT_TXD2_SOUNDING BIT(8)
0199 #define MT_TXD2_NDPA BIT(7)
0200 #define MT_TXD2_NDP BIT(6)
0201 #define MT_TXD2_FRAME_TYPE GENMASK(5, 4)
0202 #define MT_TXD2_SUB_TYPE GENMASK(3, 0)
0203
0204 #define MT_TXD3_SN_VALID BIT(31)
0205 #define MT_TXD3_PN_VALID BIT(30)
0206 #define MT_TXD3_SEQ GENMASK(27, 16)
0207 #define MT_TXD3_REM_TX_COUNT GENMASK(15, 11)
0208 #define MT_TXD3_TX_COUNT GENMASK(10, 6)
0209 #define MT_TXD3_PROTECT_FRAME BIT(1)
0210 #define MT_TXD3_NO_ACK BIT(0)
0211
0212 #define MT_TXD4_PN_LOW GENMASK(31, 0)
0213
0214 #define MT_TXD5_PN_HIGH GENMASK(31, 16)
0215 #define MT_TXD5_SW_POWER_MGMT BIT(13)
0216 #define MT_TXD5_DA_SELECT BIT(11)
0217 #define MT_TXD5_TX_STATUS_HOST BIT(10)
0218 #define MT_TXD5_TX_STATUS_MCU BIT(9)
0219 #define MT_TXD5_TX_STATUS_FMT BIT(8)
0220 #define MT_TXD5_PID GENMASK(7, 0)
0221
0222 #define MT_TXD6_FIXED_RATE BIT(31)
0223 #define MT_TXD6_SGI BIT(30)
0224 #define MT_TXD6_LDPC BIT(29)
0225 #define MT_TXD6_TX_BF BIT(28)
0226 #define MT_TXD6_TX_RATE GENMASK(27, 16)
0227 #define MT_TXD6_ANT_ID GENMASK(15, 4)
0228 #define MT_TXD6_DYN_BW BIT(3)
0229 #define MT_TXD6_FIXED_BW BIT(2)
0230 #define MT_TXD6_BW GENMASK(1, 0)
0231
0232
0233 #define MT_TXD7_HW_AMSDU_CAP BIT(30)
0234 #define MT_TXD7_TYPE GENMASK(21, 20)
0235 #define MT_TXD7_SUB_TYPE GENMASK(19, 16)
0236 #define MT_TXD7_SPE_IDX GENMASK(15, 11)
0237 #define MT_TXD7_SPE_IDX_SLE BIT(10)
0238
0239 #define MT_TXD8_L_TYPE GENMASK(5, 4)
0240 #define MT_TXD8_L_SUB_TYPE GENMASK(3, 0)
0241
0242 #define MT_TX_RATE_STBC BIT(11)
0243 #define MT_TX_RATE_NSS GENMASK(10, 9)
0244 #define MT_TX_RATE_MODE GENMASK(8, 6)
0245 #define MT_TX_RATE_IDX GENMASK(5, 0)
0246
0247 #define MT_TX_FREE_MSDU_ID_CNT GENMASK(6, 0)
0248
0249 #define MT_TXS0_PID GENMASK(31, 24)
0250 #define MT_TXS0_BA_ERROR BIT(22)
0251 #define MT_TXS0_PS_FLAG BIT(21)
0252 #define MT_TXS0_TXOP_TIMEOUT BIT(20)
0253 #define MT_TXS0_BIP_ERROR BIT(19)
0254
0255 #define MT_TXS0_QUEUE_TIMEOUT BIT(18)
0256 #define MT_TXS0_RTS_TIMEOUT BIT(17)
0257 #define MT_TXS0_ACK_TIMEOUT BIT(16)
0258 #define MT_TXS0_ACK_ERROR_MASK GENMASK(18, 16)
0259
0260 #define MT_TXS0_TX_STATUS_HOST BIT(15)
0261 #define MT_TXS0_TX_STATUS_MCU BIT(14)
0262 #define MT_TXS0_TXS_FORMAT BIT(13)
0263 #define MT_TXS0_FIXED_RATE BIT(12)
0264 #define MT_TXS0_TX_RATE GENMASK(11, 0)
0265
0266 #define MT_TXS1_ANT_ID GENMASK(31, 20)
0267 #define MT_TXS1_RESP_RATE GENMASK(19, 16)
0268 #define MT_TXS1_BW GENMASK(15, 14)
0269 #define MT_TXS1_I_TXBF BIT(13)
0270 #define MT_TXS1_E_TXBF BIT(12)
0271 #define MT_TXS1_TID GENMASK(11, 9)
0272 #define MT_TXS1_AMPDU BIT(8)
0273 #define MT_TXS1_ACKED_MPDU BIT(7)
0274 #define MT_TXS1_TX_POWER_DBM GENMASK(6, 0)
0275
0276 #define MT_TXS2_WCID GENMASK(31, 24)
0277 #define MT_TXS2_RXV_SEQNO GENMASK(23, 16)
0278 #define MT_TXS2_TX_DELAY GENMASK(15, 0)
0279
0280 #define MT_TXS3_LAST_TX_RATE GENMASK(31, 29)
0281 #define MT_TXS3_TX_COUNT GENMASK(28, 24)
0282 #define MT_TXS3_F1_TSSI1 GENMASK(23, 12)
0283 #define MT_TXS3_F1_TSSI0 GENMASK(11, 0)
0284 #define MT_TXS3_F0_SEQNO GENMASK(11, 0)
0285
0286 #define MT_TXS4_F0_TIMESTAMP GENMASK(31, 0)
0287 #define MT_TXS4_F1_TSSI3 GENMASK(23, 12)
0288 #define MT_TXS4_F1_TSSI2 GENMASK(11, 0)
0289
0290 #define MT_TXS5_F0_FRONT_TIME GENMASK(24, 0)
0291 #define MT_TXS5_F1_NOISE_2 GENMASK(23, 16)
0292 #define MT_TXS5_F1_NOISE_1 GENMASK(15, 8)
0293 #define MT_TXS5_F1_NOISE_0 GENMASK(7, 0)
0294
0295 #define MT_TXS6_F1_RCPI_3 GENMASK(31, 24)
0296 #define MT_TXS6_F1_RCPI_2 GENMASK(23, 16)
0297 #define MT_TXS6_F1_RCPI_1 GENMASK(15, 8)
0298 #define MT_TXS6_F1_RCPI_0 GENMASK(7, 0)
0299
0300 struct mt7615_dfs_pulse {
0301 u32 max_width;
0302 int max_pwr;
0303 int min_pwr;
0304 u32 min_stgr_pri;
0305 u32 max_stgr_pri;
0306 u32 min_cr_pri;
0307 u32 max_cr_pri;
0308 };
0309
0310 struct mt7615_dfs_pattern {
0311 u8 enb;
0312 u8 stgr;
0313 u8 min_crpn;
0314 u8 max_crpn;
0315 u8 min_crpr;
0316 u8 min_pw;
0317 u8 max_pw;
0318 u32 min_pri;
0319 u32 max_pri;
0320 u8 min_crbn;
0321 u8 max_crbn;
0322 u8 min_stgpn;
0323 u8 max_stgpn;
0324 u8 min_stgpr;
0325 };
0326
0327 struct mt7615_dfs_radar_spec {
0328 struct mt7615_dfs_pulse pulse_th;
0329 struct mt7615_dfs_pattern radar_pattern[16];
0330 };
0331
0332 static inline u32 mt7615_mac_wtbl_addr(struct mt7615_dev *dev, int wcid)
0333 {
0334 return MT_WTBL_BASE(dev) + wcid * MT_WTBL_ENTRY_SIZE;
0335 }
0336
0337 #endif