xref: /dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0_internal.h (revision 7906661edac647005dedb7a44872ff038318bb57)
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