File Index
Files and directories
Sign in
FILE

hbg_reg.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/hisilicon/hibmcge/hbg_reg.h C
  1/* SPDX-License-Identifier: GPL-2.0+ */
  2/* Copyright (c) 2024 Hisilicon Limited. */
  3
  4#ifndef __HBG_REG_H
  5#define __HBG_REG_H
  6
  7/* DEV SPEC */
  8#define HBG_REG_SPEC_VALID_ADDR			0x0000
  9#define HBG_REG_EVENT_REQ_ADDR			0x0004
 10#define HBG_REG_MAC_ID_ADDR			0x0008
 11#define HBG_REG_PHY_ID_ADDR			0x000C
 12#define HBG_REG_MAC_ADDR_ADDR			0x0010
 13#define HBG_REG_MAC_ADDR_HIGH_ADDR		0x0014
 14#define HBG_REG_UC_MAC_NUM_ADDR			0x0018
 15#define HBG_REG_MDIO_FREQ_ADDR			0x0024
 16#define HBG_REG_MAX_MTU_ADDR			0x0028
 17#define HBG_REG_MIN_MTU_ADDR			0x002C
 18#define HBG_REG_TX_FIFO_NUM_ADDR		0x0030
 19#define HBG_REG_RX_FIFO_NUM_ADDR		0x0034
 20#define HBG_REG_VLAN_LAYERS_ADDR		0x0038
 21#define HBG_REG_PUSH_REQ_ADDR			0x00F0
 22#define HBG_REG_MSG_HEADER_ADDR			0x00F4
 23#define HBG_REG_MSG_HEADER_OPCODE_M		GENMASK(7, 0)
 24#define HBG_REG_MSG_HEADER_STATUS_M		GENMASK(11, 8)
 25#define HBG_REG_MSG_HEADER_DATA_NUM_M		GENMASK(19, 12)
 26#define HBG_REG_MSG_HEADER_RESP_CODE_M		GENMASK(27, 20)
 27#define HBG_REG_MSG_DATA_BASE_ADDR		0x0100
 28
 29/* MDIO */
 30#define HBG_REG_MDIO_BASE			0x8000
 31#define HBG_REG_MDIO_COMMAND_ADDR		(HBG_REG_MDIO_BASE + 0x0000)
 32#define HBG_REG_MDIO_COMMAND_CLK_SEL_EXP_B	BIT(17)
 33#define HBG_REG_MDIO_COMMAND_AUTO_SCAN_B	BIT(16)
 34#define HBG_REG_MDIO_COMMAND_CLK_SEL_B		BIT(15)
 35#define HBG_REG_MDIO_COMMAND_START_B		BIT(14)
 36#define HBG_REG_MDIO_COMMAND_ST_M		GENMASK(13, 12)
 37#define HBG_REG_MDIO_COMMAND_OP_M		GENMASK(11, 10)
 38#define HBG_REG_MDIO_COMMAND_PRTAD_M		GENMASK(9, 5)
 39#define HBG_REG_MDIO_COMMAND_DEVAD_M		GENMASK(4, 0)
 40#define HBG_REG_MDIO_ADDR_ADDR			(HBG_REG_MDIO_BASE + 0x0004)
 41#define HBG_REG_MDIO_WDATA_ADDR			(HBG_REG_MDIO_BASE + 0x0008)
 42#define HBG_REG_MDIO_WDATA_M			GENMASK(15, 0)
 43#define HBG_REG_MDIO_RDATA_ADDR			(HBG_REG_MDIO_BASE + 0x000C)
 44#define HBG_REG_MDIO_STA_ADDR			(HBG_REG_MDIO_BASE + 0x0010)
 45
 46/* GMAC */
 47#define HBG_REG_SGMII_BASE			0x10000
 48#define HBG_REG_DUPLEX_TYPE_ADDR		(HBG_REG_SGMII_BASE + 0x0008)
 49#define HBG_REG_FD_FC_TYPE_ADDR			(HBG_REG_SGMII_BASE + 0x000C)
 50#define HBG_REG_FC_TX_TIMER_ADDR		(HBG_REG_SGMII_BASE + 0x001C)
 51#define HBG_REG_FD_FC_ADDR_LOW_ADDR		(HBG_REG_SGMII_BASE + 0x0020)
 52#define HBG_REG_FD_FC_ADDR_HIGH_ADDR		(HBG_REG_SGMII_BASE + 0x0024)
 53#define HBG_REG_DUPLEX_B			BIT(0)
 54#define HBG_REG_MAX_FRAME_SIZE_ADDR		(HBG_REG_SGMII_BASE + 0x003C)
 55#define HBG_REG_PORT_MODE_ADDR			(HBG_REG_SGMII_BASE + 0x0040)
 56#define HBG_REG_PORT_MODE_M			GENMASK(3, 0)
 57#define HBG_REG_PORT_ENABLE_ADDR		(HBG_REG_SGMII_BASE + 0x0044)
 58#define HBG_REG_PORT_ENABLE_RX_B		BIT(1)
 59#define HBG_REG_PORT_ENABLE_TX_B		BIT(2)
 60#define HBG_REG_PAUSE_ENABLE_ADDR		(HBG_REG_SGMII_BASE + 0x0048)
 61#define HBG_REG_PAUSE_ENABLE_RX_B		BIT(0)
 62#define HBG_REG_PAUSE_ENABLE_TX_B		BIT(1)
 63#define HBG_REG_AN_NEG_STATE_ADDR		(HBG_REG_SGMII_BASE + 0x0058)
 64#define HBG_REG_AN_NEG_STATE_NP_LINK_OK_B	BIT(15)
 65#define HBG_REG_TRANSMIT_CTRL_ADDR		(HBG_REG_SGMII_BASE + 0x0060)
 66#define HBG_REG_TRANSMIT_CTRL_PAD_EN_B		BIT(7)
 67#define HBG_REG_TRANSMIT_CTRL_CRC_ADD_B		BIT(6)
 68#define HBG_REG_TRANSMIT_CTRL_AN_EN_B		BIT(5)
 69#define HBG_REG_REC_FILT_CTRL_ADDR		(HBG_REG_SGMII_BASE + 0x0064)
 70#define HBG_REG_REC_FILT_CTRL_UC_MATCH_EN_B	BIT(0)
 71#define HBG_REG_REC_FILT_CTRL_PAUSE_FRM_PASS_B	BIT(4)
 72#define HBG_REG_RX_OCTETS_TOTAL_OK_ADDR		(HBG_REG_SGMII_BASE + 0x0080)
 73#define HBG_REG_RX_OCTETS_BAD_ADDR		(HBG_REG_SGMII_BASE + 0x0084)
 74#define HBG_REG_RX_UC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x0088)
 75#define HBG_REG_RX_MC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x008C)
 76#define HBG_REG_RX_BC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x0090)
 77#define HBG_REG_RX_PKTS_64OCTETS_ADDR		(HBG_REG_SGMII_BASE + 0x0094)
 78#define HBG_REG_RX_PKTS_65TO127OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x0098)
 79#define HBG_REG_RX_PKTS_128TO255OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x009C)
 80#define HBG_REG_RX_PKTS_256TO511OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x00A0)
 81#define HBG_REG_RX_PKTS_512TO1023OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x00A4)
 82#define HBG_REG_RX_PKTS_1024TO1518OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x00A8)
 83#define HBG_REG_RX_PKTS_1519TOMAXOCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x00AC)
 84#define HBG_REG_RX_FCS_ERRORS_ADDR		(HBG_REG_SGMII_BASE + 0x00B0)
 85#define HBG_REG_RX_TAGGED_ADDR			(HBG_REG_SGMII_BASE + 0x00B4)
 86#define HBG_REG_RX_DATA_ERR_ADDR		(HBG_REG_SGMII_BASE + 0x00B8)
 87#define HBG_REG_RX_ALIGN_ERRORS_ADDR		(HBG_REG_SGMII_BASE + 0x00BC)
 88#define HBG_REG_RX_LONG_ERRORS_ADDR		(HBG_REG_SGMII_BASE + 0x00C0)
 89#define HBG_REG_RX_JABBER_ERRORS_ADDR		(HBG_REG_SGMII_BASE + 0x00C4)
 90#define HBG_REG_RX_PAUSE_MACCTL_FRAMCOUNTER_ADDR   (HBG_REG_SGMII_BASE + 0x00C8)
 91#define HBG_REG_RX_UNKNOWN_MACCTL_FRAMCOUNTER_ADDR (HBG_REG_SGMII_BASE + 0x00CC)
 92#define HBG_REG_RX_VERY_LONG_ERR_CNT_ADDR	(HBG_REG_SGMII_BASE + 0x00D0)
 93#define HBG_REG_RX_RUNT_ERR_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x00D4)
 94#define HBG_REG_RX_SHORT_ERR_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x00D8)
 95#define HBG_REG_RX_FILT_PKT_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x00E8)
 96#define HBG_REG_RX_OCTETS_TOTAL_FILT_ADDR	(HBG_REG_SGMII_BASE + 0x00EC)
 97#define HBG_REG_OCTETS_TRANSMITTED_OK_ADDR	(HBG_REG_SGMII_BASE + 0x0100)
 98#define HBG_REG_OCTETS_TRANSMITTED_BAD_ADDR	(HBG_REG_SGMII_BASE + 0x0104)
 99#define HBG_REG_TX_UC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x0108)
100#define HBG_REG_TX_MC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x010C)
101#define HBG_REG_TX_BC_PKTS_ADDR			(HBG_REG_SGMII_BASE + 0x0110)
102#define HBG_REG_TX_PKTS_64OCTETS_ADDR		(HBG_REG_SGMII_BASE + 0x0114)
103#define HBG_REG_TX_PKTS_65TO127OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x0118)
104#define HBG_REG_TX_PKTS_128TO255OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x011C)
105#define HBG_REG_TX_PKTS_256TO511OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x0120)
106#define HBG_REG_TX_PKTS_512TO1023OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x0124)
107#define HBG_REG_TX_PKTS_1024TO1518OCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x0128)
108#define HBG_REG_TX_PKTS_1519TOMAXOCTETS_ADDR	(HBG_REG_SGMII_BASE + 0x012C)
109#define HBG_REG_TX_EXCESSIVE_LENGTH_DROP_ADDR	(HBG_REG_SGMII_BASE + 0x014C)
110#define HBG_REG_TX_UNDERRUN_ADDR		(HBG_REG_SGMII_BASE + 0x0150)
111#define HBG_REG_TX_TAGGED_ADDR			(HBG_REG_SGMII_BASE + 0x0154)
112#define HBG_REG_TX_CRC_ERROR_ADDR		(HBG_REG_SGMII_BASE + 0x0158)
113#define HBG_REG_TX_PAUSE_FRAMES_ADDR		(HBG_REG_SGMII_BASE + 0x015C)
114#define HBG_REG_LINE_LOOP_BACK_ADDR		(HBG_REG_SGMII_BASE + 0x01A8)
115#define HBG_REG_CF_CRC_STRIP_ADDR		(HBG_REG_SGMII_BASE + 0x01B0)
116#define HBG_REG_CF_CRC_STRIP_B			BIT(0)
117#define HBG_REG_MODE_CHANGE_EN_ADDR		(HBG_REG_SGMII_BASE + 0x01B4)
118#define HBG_REG_MODE_CHANGE_EN_B		BIT(0)
119#define HBG_REG_LOOP_REG_ADDR			(HBG_REG_SGMII_BASE + 0x01DC)
120#define HBG_REG_RECV_CTRL_ADDR			(HBG_REG_SGMII_BASE + 0x01E0)
121#define HBG_REG_RECV_CTRL_STRIP_PAD_EN_B	BIT(3)
122#define HBG_REG_VLAN_CODE_ADDR			(HBG_REG_SGMII_BASE + 0x01E8)
123#define HBG_REG_RX_OVERRUN_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x01EC)
124#define HBG_REG_RX_LENGTHFIELD_ERR_CNT_ADDR	(HBG_REG_SGMII_BASE + 0x01F4)
125#define HBG_REG_RX_FAIL_COMMA_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x01F8)
126#define HBG_REG_STATION_ADDR_LOW_0_ADDR		(HBG_REG_SGMII_BASE + 0x0200)
127#define HBG_REG_STATION_ADDR_HIGH_0_ADDR	(HBG_REG_SGMII_BASE + 0x0204)
128#define HBG_REG_STATION_ADDR_LOW_1_ADDR		(HBG_REG_SGMII_BASE + 0x0208)
129#define HBG_REG_STATION_ADDR_HIGH_1_ADDR	(HBG_REG_SGMII_BASE + 0x020C)
130#define HBG_REG_STATION_ADDR_LOW_2_ADDR		(HBG_REG_SGMII_BASE + 0x0210)
131#define HBG_REG_STATION_ADDR_HIGH_2_ADDR	(HBG_REG_SGMII_BASE + 0x0214)
132#define HBG_REG_STATION_ADDR_LOW_3_ADDR		(HBG_REG_SGMII_BASE + 0x0218)
133#define HBG_REG_STATION_ADDR_HIGH_3_ADDR	(HBG_REG_SGMII_BASE + 0x021C)
134#define HBG_REG_STATION_ADDR_LOW_4_ADDR		(HBG_REG_SGMII_BASE + 0x0220)
135#define HBG_REG_STATION_ADDR_HIGH_4_ADDR	(HBG_REG_SGMII_BASE + 0x0224)
136#define HBG_REG_STATION_ADDR_LOW_5_ADDR		(HBG_REG_SGMII_BASE + 0x0228)
137#define HBG_REG_STATION_ADDR_HIGH_5_ADDR	(HBG_REG_SGMII_BASE + 0x022C)
138#define HBG_REG_STATION_ADDR_LOW_MSK_0		(HBG_REG_SGMII_BASE + 0x0230)
139#define HBG_REG_STATION_ADDR_LOW_MSK_1		(HBG_REG_SGMII_BASE + 0x0238)
140
141/* PCU */
142#define HBG_REG_TX_FIFO_THRSLD_ADDR		(HBG_REG_SGMII_BASE + 0x0420)
143#define HBG_REG_RX_FIFO_THRSLD_ADDR		(HBG_REG_SGMII_BASE + 0x0424)
144#define HBG_REG_FIFO_THRSLD_FULL_M		GENMASK(25, 16)
145#define HBG_REG_FIFO_THRSLD_EMPTY_M		GENMASK(9, 0)
146#define HBG_REG_CFG_FIFO_THRSLD_ADDR		(HBG_REG_SGMII_BASE + 0x0428)
147#define HBG_REG_CFG_FIFO_THRSLD_TX_FULL_M	GENMASK(31, 24)
148#define HBG_REG_CFG_FIFO_THRSLD_TX_EMPTY_M	GENMASK(23, 16)
149#define HBG_REG_CFG_FIFO_THRSLD_RX_FULL_M	GENMASK(15, 8)
150#define HBG_REG_CFG_FIFO_THRSLD_RX_EMPTY_M	GENMASK(7, 0)
151#define HBG_REG_CF_INTRPT_MSK_ADDR		(HBG_REG_SGMII_BASE + 0x042C)
152#define HBG_INT_MSK_WE_ERR_B			BIT(31)
153#define HBG_INT_MSK_RBREQ_ERR_B			BIT(30)
154#define HBG_INT_MSK_MAC_FIFO_ERR_B		BIT(29)
155#define HBG_INT_MSK_RX_AHB_ERR_B		BIT(28)
156#define HBG_INT_MSK_RX_DROP_B			BIT(26)
157#define HBG_INT_MSK_TX_DROP_B			BIT(25)
158#define HBG_INT_MSK_TXCFG_AVL_B			BIT(24)
159#define HBG_INT_MSK_REL_BUF_ERR_B		BIT(23)
160#define HBG_INT_MSK_RX_BUF_AVL_B		BIT(22)
161#define HBG_INT_MSK_TX_AHB_ERR_B		BIT(21)
162#define HBG_INT_MSK_SRAM_PARITY_ERR_B		BIT(20)
163#define HBG_INT_MSK_MAC_APP_TX_FIFO_ERR_B	BIT(19)
164#define HBG_INT_MSK_MAC_APP_RX_FIFO_ERR_B	BIT(18)
165#define HBG_INT_MSK_MAC_PCS_TX_FIFO_ERR_B	BIT(17)
166#define HBG_INT_MSK_MAC_PCS_RX_FIFO_ERR_B	BIT(16)
167#define HBG_INT_MSK_MAC_MII_FIFO_ERR_B		BIT(15)
168#define HBG_INT_MSK_TX_PKT_CPL_B		BIT(14)
169#define HBG_INT_MSK_TX_B			BIT(1) /* just used in driver */
170#define HBG_INT_MSK_RX_B			BIT(0) /* just used in driver */
171#define HBG_REG_CF_INTRPT_STAT_ADDR		(HBG_REG_SGMII_BASE + 0x0434)
172#define HBG_REG_CF_INTRPT_CLR_ADDR		(HBG_REG_SGMII_BASE + 0x0438)
173#define HBG_REG_TX_BUS_ERR_ADDR_ADDR		(HBG_REG_SGMII_BASE + 0x043C)
174#define HBG_REG_RX_BUS_ERR_ADDR_ADDR		(HBG_REG_SGMII_BASE + 0x0440)
175#define HBG_REG_MAX_FRAME_LEN_ADDR		(HBG_REG_SGMII_BASE + 0x0444)
176#define HBG_REG_MAX_FRAME_LEN_M			GENMASK(15, 0)
177#define HBG_REG_TX_DROP_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0448)
178#define HBG_REG_RX_OVER_FLOW_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x044C)
179#define HBG_REG_DEBUG_ST_MCH_ADDR		(HBG_REG_SGMII_BASE + 0x0450)
180#define HBG_REG_FIFO_CURR_STATUS_ADDR		(HBG_REG_SGMII_BASE + 0x0454)
181#define HBG_REG_FIFO_HIST_STATUS_ADDR		(HBG_REG_SGMII_BASE + 0x0458)
182#define HBG_REG_CF_CFF_DATA_NUM_ADDR		(HBG_REG_SGMII_BASE + 0x045C)
183#define HBG_REG_CF_CFF_DATA_NUM_ADDR_TX_M	GENMASK(8, 0)
184#define HBG_REG_CF_CFF_DATA_NUM_ADDR_RX_M	GENMASK(24, 16)
185#define HBG_REG_TX_CS_FAIL_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0460)
186#define HBG_REG_RX_TRANS_PKG_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0464)
187#define HBG_REG_TX_TRANS_PKG_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0468)
188#define HBG_REG_CF_TX_PAUSE_ADDR		(HBG_REG_SGMII_BASE + 0x0470)
189#define HBG_REG_TX_CFF_ADDR_0_ADDR		(HBG_REG_SGMII_BASE + 0x0488)
190#define HBG_REG_TX_CFF_ADDR_1_ADDR		(HBG_REG_SGMII_BASE + 0x048C)
191#define HBG_REG_TX_CFF_ADDR_2_ADDR		(HBG_REG_SGMII_BASE + 0x0490)
192#define HBG_REG_TX_CFF_ADDR_3_ADDR		(HBG_REG_SGMII_BASE + 0x0494)
193#define HBG_REG_RX_CFF_ADDR_ADDR		(HBG_REG_SGMII_BASE + 0x04A0)
194#define HBG_REG_BRUST_LENGTH_ADDR		(HBG_REG_SGMII_BASE + 0x04C4)
195#define HBG_REG_BRUST_LENGTH_B			BIT(29)
196#define HBG_REG_RX_BUF_SIZE_ADDR		(HBG_REG_SGMII_BASE + 0x04E4)
197#define HBG_REG_RX_BUF_SIZE_M			GENMASK(15, 0)
198#define HBG_REG_BUS_CTRL_ADDR			(HBG_REG_SGMII_BASE + 0x04E8)
199#define HBG_REG_BUS_CTRL_ENDIAN_M		GENMASK(2, 1)
200#define HBG_REG_RX_CTRL_ADDR			(HBG_REG_SGMII_BASE + 0x04F0)
201#define HBG_REG_RX_CTRL_RXBUF_1ST_SKIP_SIZE_M	GENMASK(31, 28)
202#define HBG_REG_RX_CTRL_TIME_INF_EN_B		BIT(23)
203#define HBG_REG_RX_CTRL_RX_ALIGN_NUM_M		GENMASK(18, 17)
204#define HBG_REG_RX_CTRL_PORT_NUM		GENMASK(16, 13)
205#define HBG_REG_RX_CTRL_RX_GET_ADDR_MODE_B	BIT(12)
206#define HBG_REG_RX_CTRL_RXBUF_1ST_SKIP_SIZE2_M	GENMASK(3, 0)
207#define HBG_REG_RX_PKT_MODE_ADDR		(HBG_REG_SGMII_BASE + 0x04F4)
208#define HBG_REG_RX_PKT_MODE_PARSE_MODE_M	GENMASK(22, 21)
209#define HBG_REG_RX_BUFRQ_ERR_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x058C)
210#define HBG_REG_TX_BUFRL_ERR_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0590)
211#define HBG_REG_RX_WE_ERR_CNT_ADDR		(HBG_REG_SGMII_BASE + 0x0594)
212#define HBG_REG_DBG_ST0_ADDR			(HBG_REG_SGMII_BASE + 0x05E4)
213#define HBG_REG_DBG_ST1_ADDR			(HBG_REG_SGMII_BASE + 0x05E8)
214#define HBG_REG_DBG_ST2_ADDR			(HBG_REG_SGMII_BASE + 0x05EC)
215#define HBG_REG_BUS_RST_EN_ADDR			(HBG_REG_SGMII_BASE + 0x0688)
216#define HBG_REG_CF_IND_TXINT_MSK_ADDR		(HBG_REG_SGMII_BASE + 0x0694)
217#define HBG_REG_IND_INTR_MASK_B			BIT(0)
218#define HBG_REG_CF_IND_TXINT_STAT_ADDR		(HBG_REG_SGMII_BASE + 0x0698)
219#define HBG_REG_CF_IND_TXINT_CLR_ADDR		(HBG_REG_SGMII_BASE + 0x069C)
220#define HBG_REG_CF_IND_RXINT_MSK_ADDR		(HBG_REG_SGMII_BASE + 0x06a0)
221#define HBG_REG_CF_IND_RXINT_STAT_ADDR		(HBG_REG_SGMII_BASE + 0x06a4)
222#define HBG_REG_CF_IND_RXINT_CLR_ADDR		(HBG_REG_SGMII_BASE + 0x06a8)
223
224enum hbg_port_mode {
225	/* 0x0 ~ 0x5 are reserved */
226	HBG_PORT_MODE_SGMII_10M = 0x6,
227	HBG_PORT_MODE_SGMII_100M = 0x7,
228	HBG_PORT_MODE_SGMII_1000M = 0x8,
229};
230
231struct hbg_tx_desc {
232	u32 word0;
233	u32 word1;
234	u32 word2; /* pkt_addr */
235	u32 word3; /* clear_addr */
236};
237
238#define HBG_TX_DESC_W0_IP_OFF_M		GENMASK(30, 26)
239#define HBG_TX_DESC_W0_l3_CS_B		BIT(2)
240#define HBG_TX_DESC_W0_WB_B		BIT(1)
241#define HBG_TX_DESC_W0_l4_CS_B		BIT(0)
242#define HBG_TX_DESC_W1_SEND_LEN_M	GENMASK(19, 4)
243
244struct hbg_rx_desc {
245	u32 word0;
246	u32 word1; /* tag */
247	u32 word2;
248	u32 word3;
249	u32 word4;
250	u32 word5;
251};
252
253#define HBG_RX_DESC_W2_PKT_LEN_M	GENMASK(31, 16)
254#define HBG_RX_DESC_W2_PORT_NUM_M	GENMASK(15, 12)
255#define HBG_RX_DESC_W3_IP_OFFSET_M	GENMASK(23, 16)
256#define HBG_RX_DESC_W3_VLAN_M		GENMASK(15, 0)
257#define HBG_RX_DESC_W4_IP_TCP_UDP_M	GENMASK(31, 30)
258#define HBG_RX_DESC_W4_IPSEC_B		BIT(29)
259#define HBG_RX_DESC_W4_IP_VERSION_B	BIT(28)
260#define HBG_RX_DESC_W4_L4_ERR_CODE_M	GENMASK(26, 23)
261#define HBG_RX_DESC_W4_FRAG_B		BIT(22)
262#define HBG_RX_DESC_W4_OPT_B		BIT(21)
263#define HBG_RX_DESC_W4_IP_VERSION_ERR_B	BIT(20)
264#define HBG_RX_DESC_W4_BRD_CST_B	BIT(19)
265#define HBG_RX_DESC_W4_MUL_CST_B	BIT(18)
266#define HBG_RX_DESC_W4_ARP_B		BIT(17)
267#define HBG_RX_DESC_W4_RARP_B		BIT(16)
268#define HBG_RX_DESC_W4_ICMP_B		BIT(15)
269#define HBG_RX_DESC_W4_VLAN_FLAG_B	BIT(14)
270#define HBG_RX_DESC_W4_DROP_B		BIT(13)
271#define HBG_RX_DESC_W4_L3_ERR_CODE_M	GENMASK(12, 9)
272#define HBG_RX_DESC_W4_L2_ERR_B		BIT(8)
273#define HBG_RX_DESC_W4_IDX_MATCH_B	BIT(7)
274#define HBG_RX_DESC_W4_PARSE_MODE_M	GENMASK(6, 5)
275#define HBG_RX_DESC_W5_VALID_SIZE_M	GENMASK(15, 0)
276
277enum hbg_l3_err_code {
278	HBG_L3_OK = 0,
279	HBG_L3_WRONG_HEAD,
280	HBG_L3_CSUM_ERR,
281	HBG_L3_LEN_ERR,
282	HBG_L3_ZERO_TTL,
283	HBG_L3_RSVD,
284};
285
286enum hbg_l4_err_code {
287	HBG_L4_OK = 0,
288	HBG_L4_WRONG_HEAD,
289	HBG_L4_LEN_ERR,
290	HBG_L4_CSUM_ERR,
291	HBG_L4_ZERO_PORT_NUM,
292	HBG_L4_RSVD,
293};
294
295enum hbg_pkt_type_code {
296	HBG_NO_IP_PKT = 0,
297	HBG_IP_PKT,
298	HBG_TCP_PKT,
299	HBG_UDP_PKT,
300};
301
302#endif
~/ Read-only file preview.