1*7906661eSIgor Russkikh /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) */ 2*7906661eSIgor Russkikh /* Copyright (C) 2014-2017 aQuantia Corporation. */ 3*7906661eSIgor Russkikh 4*7906661eSIgor Russkikh /* File hw_atl_b0_internal.h: Definition of Atlantic B0 chip specific 5*7906661eSIgor Russkikh * constants. 6*7906661eSIgor Russkikh */ 7*7906661eSIgor Russkikh 8*7906661eSIgor Russkikh #ifndef HW_ATL_B0_INTERNAL_H 9*7906661eSIgor Russkikh #define HW_ATL_B0_INTERNAL_H 10*7906661eSIgor Russkikh 11*7906661eSIgor Russkikh 12*7906661eSIgor Russkikh #define HW_ATL_B0_MTU_JUMBO 16352U 13*7906661eSIgor Russkikh #define HW_ATL_B0_MTU 1514U 14*7906661eSIgor Russkikh 15*7906661eSIgor Russkikh #define HW_ATL_B0_TX_RINGS 4U 16*7906661eSIgor Russkikh #define HW_ATL_B0_RX_RINGS 4U 17*7906661eSIgor Russkikh 18*7906661eSIgor Russkikh #define HW_ATL_B0_RINGS_MAX 32U 19*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_SIZE (16U) 20*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_SIZE (16U) 21*7906661eSIgor Russkikh 22*7906661eSIgor Russkikh #define HW_ATL_B0_MAC 0U 23*7906661eSIgor Russkikh #define HW_ATL_B0_MAC_MIN 1U 24*7906661eSIgor Russkikh #define HW_ATL_B0_MAC_MAX 33U 25*7906661eSIgor Russkikh 26*7906661eSIgor Russkikh /* Maximum supported VLAN filters */ 27*7906661eSIgor Russkikh #define HW_ATL_B0_MAX_VLAN_IDS 16 28*7906661eSIgor Russkikh 29*7906661eSIgor Russkikh /* UCAST/MCAST filters */ 30*7906661eSIgor Russkikh #define HW_ATL_B0_UCAST_FILTERS_MAX 38 31*7906661eSIgor Russkikh #define HW_ATL_B0_MCAST_FILTERS_MAX 8 32*7906661eSIgor Russkikh 33*7906661eSIgor Russkikh /* interrupts */ 34*7906661eSIgor Russkikh #define HW_ATL_B0_ERR_INT 8U 35*7906661eSIgor Russkikh #define HW_ATL_B0_INT_MASK (0xFFFFFFFFU) 36*7906661eSIgor Russkikh 37*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL2_LEN (0xFFFFC000) 38*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL2_CTX_EN (0x00002000) 39*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL2_CTX_IDX (0x00001000) 40*7906661eSIgor Russkikh 41*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_DESC_TYPE_TXD (0x00000001) 42*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_DESC_TYPE_TXC (0x00000002) 43*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_BLEN (0x000FFFF0) 44*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_DD (0x00100000) 45*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_EOP (0x00200000) 46*7906661eSIgor Russkikh 47*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_X (0x3FC00000) 48*7906661eSIgor Russkikh 49*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_VLAN BIT(22) 50*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_FCS BIT(23) 51*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_IPCSO BIT(24) 52*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_TUCSO BIT(25) 53*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_LSO BIT(26) 54*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_WB BIT(27) 55*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_VXLAN BIT(28) 56*7906661eSIgor Russkikh 57*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_IPV6 BIT(21) 58*7906661eSIgor Russkikh #define HW_ATL_B0_TXD_CTL_CMD_TCP BIT(22) 59*7906661eSIgor Russkikh 60*7906661eSIgor Russkikh #define HW_ATL_B0_MPI_CONTROL_ADR 0x0368U 61*7906661eSIgor Russkikh #define HW_ATL_B0_MPI_STATE_ADR 0x036CU 62*7906661eSIgor Russkikh 63*7906661eSIgor Russkikh #define HW_ATL_B0_MPI_SPEED_MSK 0xFFFFU 64*7906661eSIgor Russkikh #define HW_ATL_B0_MPI_SPEED_SHIFT 16U 65*7906661eSIgor Russkikh 66*7906661eSIgor Russkikh #define HW_ATL_B0_TXBUF_MAX 160U 67*7906661eSIgor Russkikh #define HW_ATL_B0_RXBUF_MAX 320U 68*7906661eSIgor Russkikh 69*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_BUF_SIZE_MAX (16 * 1024) 70*7906661eSIgor Russkikh 71*7906661eSIgor Russkikh #define HW_ATL_B0_RSS_REDIRECTION_MAX 64U 72*7906661eSIgor Russkikh #define HW_ATL_B0_RSS_REDIRECTION_BITS 3U 73*7906661eSIgor Russkikh #define HW_ATL_B0_RSS_HASHKEY_BITS 320U 74*7906661eSIgor Russkikh 75*7906661eSIgor Russkikh #define HW_ATL_B0_TCRSS_4_8 1 76*7906661eSIgor Russkikh #define HW_ATL_B0_TC_MAX 1U 77*7906661eSIgor Russkikh #define HW_ATL_B0_RSS_MAX 8U 78*7906661eSIgor Russkikh 79*7906661eSIgor Russkikh #define HW_ATL_B0_LRO_RXD_MAX 2U 80*7906661eSIgor Russkikh #define HW_ATL_B0_RS_SLIP_ENABLED 0U 81*7906661eSIgor Russkikh 82*7906661eSIgor Russkikh /* (256k -1(max pay_len) - 54(header)) */ 83*7906661eSIgor Russkikh #define HAL_ATL_B0_LSO_MAX_SEGMENT_SIZE 262089U 84*7906661eSIgor Russkikh 85*7906661eSIgor Russkikh /* (256k -1(max pay_len) - 74(header)) */ 86*7906661eSIgor Russkikh #define HAL_ATL_B0_LSO_IPV6_MAX_SEGMENT_SIZE 262069U 87*7906661eSIgor Russkikh 88*7906661eSIgor Russkikh #define HW_ATL_B0_CHIP_REVISION_B0 0xA0U 89*7906661eSIgor Russkikh #define HW_ATL_B0_CHIP_REVISION_UNKNOWN 0xFFU 90*7906661eSIgor Russkikh 91*7906661eSIgor Russkikh #define HW_ATL_B0_FW_SEMA_RAM 0x2U 92*7906661eSIgor Russkikh 93*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_LEN_TUNLEN (0x0000FF00) 94*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_LEN_OUTLEN (0xFFFF0000) 95*7906661eSIgor Russkikh 96*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_DESC_TYPE (0x00000007) 97*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_CTX_ID (0x00000008) 98*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_VLAN (0x000FFFF0) 99*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_CMD (0x00F00000) 100*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_L2LEN (0x7F000000) 101*7906661eSIgor Russkikh 102*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_CTL_L3LEN (0x80000000) /* L3LEN lsb */ 103*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_LEN2_L3LEN (0x000000FF) /* L3LE upper bits */ 104*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_LEN2_L4LEN (0x0000FF00) 105*7906661eSIgor Russkikh #define HW_ATL_B0_TXC_LEN2_MSSLEN (0xFFFF0000) 106*7906661eSIgor Russkikh 107*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_DD (0x1) 108*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_NCEA0 (0x1) 109*7906661eSIgor Russkikh 110*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT_RSSTYPE (0x0000000F) 111*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT_PKTTYPE (0x00000FF0) 112*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT_RXCTRL (0x00180000) 113*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT_SPLHDR (0x00200000) 114*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT_HDRLEN (0xFFC00000) 115*7906661eSIgor Russkikh 116*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_DD (0x0001) 117*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_EOP (0x0002) 118*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_RXSTAT (0x003C) 119*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_MACERR (0x0004) 120*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_IP4ERR (0x0008) 121*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_TCPUPDERR (0x0010) 122*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_RXESTAT (0x0FC0) 123*7906661eSIgor Russkikh #define HW_ATL_B0_RXD_WB_STAT2_RSCCNT (0xF000) 124*7906661eSIgor Russkikh 125*7906661eSIgor Russkikh #define L2_FILTER_ACTION_DISCARD (0x0) 126*7906661eSIgor Russkikh #define L2_FILTER_ACTION_HOST (0x1) 127*7906661eSIgor Russkikh 128*7906661eSIgor Russkikh #define HW_ATL_B0_UCP_0X370_REG (0x370) 129*7906661eSIgor Russkikh 130*7906661eSIgor Russkikh #define HW_ATL_B0_FLUSH() AQ_HW_READ_REG(self, 0x10) 131*7906661eSIgor Russkikh 132*7906661eSIgor Russkikh #define HW_ATL_INTR_MODER_MAX 0x1FF 133*7906661eSIgor Russkikh #define HW_ATL_INTR_MODER_MIN 0xFF 134*7906661eSIgor Russkikh 135*7906661eSIgor Russkikh #define HW_ATL_B0_MIN_RXD \ 136*7906661eSIgor Russkikh (ALIGN(AQ_CFG_SKB_FRAGS_MAX + 1U, AQ_HW_RXD_MULTIPLE)) 137*7906661eSIgor Russkikh #define HW_ATL_B0_MIN_TXD \ 138*7906661eSIgor Russkikh (ALIGN(AQ_CFG_SKB_FRAGS_MAX + 1U, AQ_HW_TXD_MULTIPLE)) 139*7906661eSIgor Russkikh 140*7906661eSIgor Russkikh #define HW_ATL_B0_MAX_RXD 8184U 141*7906661eSIgor Russkikh #define HW_ATL_B0_MAX_TXD 8184U 142*7906661eSIgor Russkikh 143*7906661eSIgor Russkikh /* HW layer capabilities */ 144*7906661eSIgor Russkikh 145*7906661eSIgor Russkikh #endif /* HW_ATL_B0_INTERNAL_H */ 146