Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: ISC */
0002 /* Copyright (C) 2019 MediaTek Inc. */
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 /* MT7663 DW7 HW-AMSDU */
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;      /* us */
0302     int max_pwr;        /* dbm */
0303     int min_pwr;        /* dbm */
0304     u32 min_stgr_pri;   /* us */
0305     u32 max_stgr_pri;   /* us */
0306     u32 min_cr_pri;     /* us */
0307     u32 max_cr_pri;     /* us */
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