xref: /linux/drivers/net/ethernet/broadcom/bnge/bnge_hw_def.h (revision 37a93dd5c49b5fda807fd204edf2547c3493319c)
14d6a6005SBhargava Marreddy /* SPDX-License-Identifier: GPL-2.0 */
24d6a6005SBhargava Marreddy /* Copyright (c) 2025 Broadcom */
34d6a6005SBhargava Marreddy 
44d6a6005SBhargava Marreddy #ifndef _BNGE_HW_DEF_H_
54d6a6005SBhargava Marreddy #define _BNGE_HW_DEF_H_
64d6a6005SBhargava Marreddy 
74d6a6005SBhargava Marreddy #define TX_BD_FLAGS_TCP_UDP_CHKSUM	BIT(0)
84d6a6005SBhargava Marreddy #define TX_BD_FLAGS_IP_CKSUM		BIT(1)
94d6a6005SBhargava Marreddy #define TX_BD_FLAGS_NO_CRC		BIT(2)
104d6a6005SBhargava Marreddy #define TX_BD_FLAGS_STAMP		BIT(3)
114d6a6005SBhargava Marreddy #define TX_BD_FLAGS_T_IP_CHKSUM		BIT(4)
124d6a6005SBhargava Marreddy #define TX_BD_FLAGS_LSO			BIT(5)
134d6a6005SBhargava Marreddy #define TX_BD_FLAGS_IPID_FMT		BIT(6)
144d6a6005SBhargava Marreddy #define TX_BD_FLAGS_T_IPID		BIT(7)
154d6a6005SBhargava Marreddy #define TX_BD_HSIZE			GENMASK(23, 16)
164d6a6005SBhargava Marreddy #define TX_BD_HSIZE_SHIFT		16
174d6a6005SBhargava Marreddy 
184d6a6005SBhargava Marreddy #define TX_BD_CFA_ACTION		GENMASK(31, 16)
194d6a6005SBhargava Marreddy #define TX_BD_CFA_ACTION_SHIFT		16
204d6a6005SBhargava Marreddy 
214d6a6005SBhargava Marreddy #define TX_BD_CFA_META_MASK		0xfffffff
224d6a6005SBhargava Marreddy #define TX_BD_CFA_META_VID_MASK		0xfff
234d6a6005SBhargava Marreddy #define TX_BD_CFA_META_PRI_MASK		GENMASK(15, 12)
244d6a6005SBhargava Marreddy #define TX_BD_CFA_META_PRI_SHIFT	12
254d6a6005SBhargava Marreddy #define TX_BD_CFA_META_TPID_MASK	GENMASK(17, 16)
264d6a6005SBhargava Marreddy #define TX_BD_CFA_META_TPID_SHIFT	16
274d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY		GENMASK(31, 28)
284d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY_SHIFT	28
294d6a6005SBhargava Marreddy #define TX_BD_CFA_META_KEY_VLAN		BIT(28)
304d6a6005SBhargava Marreddy 
314d6a6005SBhargava Marreddy struct tx_bd_ext {
324d6a6005SBhargava Marreddy 	__le32 tx_bd_hsize_lflags;
334d6a6005SBhargava Marreddy 	__le32 tx_bd_mss;
344d6a6005SBhargava Marreddy 	__le32 tx_bd_cfa_action;
354d6a6005SBhargava Marreddy 	__le32 tx_bd_cfa_meta;
364d6a6005SBhargava Marreddy };
374d6a6005SBhargava Marreddy 
384d6a6005SBhargava Marreddy #define TX_CMP_SQ_CONS_IDX(txcmp)					\
394d6a6005SBhargava Marreddy 	(le32_to_cpu((txcmp)->sq_cons_idx) & TX_CMP_SQ_CONS_IDX_MASK)
404d6a6005SBhargava Marreddy 
414d6a6005SBhargava Marreddy #define RX_CMP_CMP_TYPE				GENMASK(5, 0)
424d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ERROR			BIT(6)
434d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_PLACEMENT			GENMASK(9, 7)
444d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_RSS_VALID			BIT(10)
454d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_PKT_METADATA_PRESENT	BIT(11)
464d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPES_SHIFT		12
474d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPES_MASK		0xf000
484d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_UNKNOWN		(0 << 12)
494d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_IP			(1 << 12)
504d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_TCP			(2 << 12)
514d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_UDP			(3 << 12)
524d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_FCOE			(4 << 12)
534d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_ROCE			(5 << 12)
544d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_PTP_WO_TS		(8 << 12)
554d6a6005SBhargava Marreddy #define RX_CMP_FLAGS_ITYPE_PTP_W_TS		(9 << 12)
564d6a6005SBhargava Marreddy #define RX_CMP_LEN				GENMASK(31, 16)
574d6a6005SBhargava Marreddy #define RX_CMP_LEN_SHIFT			16
584d6a6005SBhargava Marreddy 
594d6a6005SBhargava Marreddy #define RX_CMP_V1				BIT(0)
604d6a6005SBhargava Marreddy #define RX_CMP_AGG_BUFS				GENMASK(5, 1)
614d6a6005SBhargava Marreddy #define RX_CMP_AGG_BUFS_SHIFT			1
624d6a6005SBhargava Marreddy #define RX_CMP_RSS_HASH_TYPE			GENMASK(15, 9)
634d6a6005SBhargava Marreddy #define RX_CMP_RSS_HASH_TYPE_SHIFT		9
644d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_LEGACY		GENMASK(15, 12)
654d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT	12
664d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_NEW		GENMASK(11, 8)
674d6a6005SBhargava Marreddy #define RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT		8
684d6a6005SBhargava Marreddy #define RX_CMP_PAYLOAD_OFFSET			GENMASK(23, 16)
694d6a6005SBhargava Marreddy #define RX_CMP_PAYLOAD_OFFSET_SHIFT		16
704d6a6005SBhargava Marreddy #define RX_CMP_SUB_NS_TS			GENMASK(19, 16)
714d6a6005SBhargava Marreddy #define RX_CMP_SUB_NS_TS_SHIFT			16
724d6a6005SBhargava Marreddy #define RX_CMP_METADATA1			GENMASK(31, 28)
734d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_SHIFT			28
744d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_SEL		GENMASK(30, 28)
754d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_8021Q		BIT(28)
764d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_TPID_8021AD		(0x0 << 28)
774d6a6005SBhargava Marreddy #define RX_CMP_METADATA1_VALID			BIT(31)
784d6a6005SBhargava Marreddy 
794d6a6005SBhargava Marreddy struct rx_cmp {
804d6a6005SBhargava Marreddy 	__le32 rx_cmp_len_flags_type;
814d6a6005SBhargava Marreddy 	u32 rx_cmp_opaque;
824d6a6005SBhargava Marreddy 	__le32 rx_cmp_misc_v1;
834d6a6005SBhargava Marreddy 	__le32 rx_cmp_rss_hash;
844d6a6005SBhargava Marreddy };
854d6a6005SBhargava Marreddy 
864d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_IP_CS_CALC			BIT(0)
874d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_L4_CS_CALC			BIT(1)
884d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_T_IP_CS_CALC			BIT(2)
894d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_T_L4_CS_CALC			BIT(3)
904d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_META_FORMAT_VLAN			BIT(4)
914d6a6005SBhargava Marreddy 
924d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TCI_MASK			GENMASK(15, 0)
934d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_VID_MASK			GENMASK(11, 0)
944d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TPID_MASK		GENMASK(31, 16)
954d6a6005SBhargava Marreddy #define RX_CMP_FLAGS2_METADATA_TPID_SFT			16
964d6a6005SBhargava Marreddy 
974d6a6005SBhargava Marreddy #define RX_CMP_V					BIT(0)
984d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_MASK				GENMASK(15, 1)
994d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_SFT				1
1004d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_MASK		GENMASK(3, 1)
1014d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_NO_BUFFER		(0x0 << 1)
1024d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_DID_NOT_FIT		(0x1 << 1)
1034d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_NOT_ON_CHIP		(0x2 << 1)
1044d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_BUFFER_ERROR_BAD_FORMAT		(0x3 << 1)
1054d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_IP_CS_ERROR			BIT(4)
1064d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_L4_CS_ERROR			BIT(5)
1074d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_IP_CS_ERROR			BIT(6)
1084d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_L4_CS_ERROR			BIT(7)
1094d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_CRC_ERROR			BIT(8)
1104d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_MASK			GENMASK(11, 9)
1114d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_NO_ERROR		(0x0 << 9)
1124d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION	(0x1 << 9)
1134d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN	(0x2 << 9)
1144d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR	(0x3 << 9)
1154d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR	(0x4 << 9)
1164d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR	(0x5 << 9)
1174d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL		(0x6 << 9)
1184d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_MASK			GENMASK(15, 12)
1194d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_NO_ERROR		(0x0 << 12)
1204d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_VERSION		(0x1 << 12)
1214d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN		(0x2 << 12)
1224d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L3_BAD_TTL		(0x3 << 12)
1234d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_IP_TOTAL_ERROR		(0x4 << 12)
1244d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR	(0x5 << 12)
1254d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN		(0x6 << 12)
1264d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7 << 12)
1274d6a6005SBhargava Marreddy #define RX_CMPL_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN		(0x8 << 12)
1284d6a6005SBhargava Marreddy 
1294d6a6005SBhargava Marreddy #define RX_CMPL_CFA_CODE_MASK				GENMASK(31, 16)
1304d6a6005SBhargava Marreddy #define RX_CMPL_CFA_CODE_SFT				16
1314d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_TCI_MASK			GENMASK(31, 16)
1324d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_VID_MASK			GENMASK(27, 16)
1334d6a6005SBhargava Marreddy #define RX_CMPL_METADATA0_SFT				16
1344d6a6005SBhargava Marreddy 
1354d6a6005SBhargava Marreddy struct rx_cmp_ext {
1364d6a6005SBhargava Marreddy 	__le32 rx_cmp_flags2;
1374d6a6005SBhargava Marreddy 	__le32 rx_cmp_meta_data;
1384d6a6005SBhargava Marreddy 	__le32 rx_cmp_cfa_code_errors_v2;
1394d6a6005SBhargava Marreddy 	__le32 rx_cmp_timestamp;
1404d6a6005SBhargava Marreddy };
1414d6a6005SBhargava Marreddy 
142c858ac87SBhargava Marreddy #define RX_AGG_CMP_TYPE			GENMASK(5, 0)
143c858ac87SBhargava Marreddy #define RX_AGG_CMP_LEN			GENMASK(31, 16)
144c858ac87SBhargava Marreddy #define RX_AGG_CMP_LEN_SHIFT		16
145c858ac87SBhargava Marreddy #define RX_AGG_CMP_V			BIT(0)
146c858ac87SBhargava Marreddy #define RX_AGG_CMP_AGG_ID		GENMASK(25, 16)
147c858ac87SBhargava Marreddy #define RX_AGG_CMP_AGG_ID_SHIFT		16
148c858ac87SBhargava Marreddy 
149c858ac87SBhargava Marreddy struct rx_agg_cmp {
150c858ac87SBhargava Marreddy 	__le32 rx_agg_cmp_len_flags_type;
151c858ac87SBhargava Marreddy 	u32 rx_agg_cmp_opaque;
152c858ac87SBhargava Marreddy 	__le32 rx_agg_cmp_v;
153c858ac87SBhargava Marreddy 	__le32 rx_agg_cmp_unused;
154c858ac87SBhargava Marreddy };
155c858ac87SBhargava Marreddy 
1564d6a6005SBhargava Marreddy #define RX_CMP_L2_ERRORS						\
1574d6a6005SBhargava Marreddy 	cpu_to_le32(RX_CMPL_ERRORS_BUFFER_ERROR_MASK | RX_CMPL_ERRORS_CRC_ERROR)
1584d6a6005SBhargava Marreddy 
1594d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_BITS						\
1604d6a6005SBhargava Marreddy 	(cpu_to_le32(RX_CMP_FLAGS2_L4_CS_CALC | RX_CMP_FLAGS2_T_L4_CS_CALC))
1614d6a6005SBhargava Marreddy 
1624d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_ERR_BITS						\
1634d6a6005SBhargava Marreddy 	(cpu_to_le32(RX_CMPL_ERRORS_L4_CS_ERROR | RX_CMPL_ERRORS_T_L4_CS_ERROR))
1644d6a6005SBhargava Marreddy 
1654d6a6005SBhargava Marreddy #define RX_CMP_L4_CS_OK(rxcmp1)						\
1664d6a6005SBhargava Marreddy 	    (((rxcmp1)->rx_cmp_flags2 &	RX_CMP_L4_CS_BITS) &&		\
1674d6a6005SBhargava Marreddy 	     !((rxcmp1)->rx_cmp_cfa_code_errors_v2 & RX_CMP_L4_CS_ERR_BITS))
1684d6a6005SBhargava Marreddy 
1694d6a6005SBhargava Marreddy #define RX_CMP_METADATA0_TCI(rxcmp1)					\
1704d6a6005SBhargava Marreddy 	((le32_to_cpu((rxcmp1)->rx_cmp_cfa_code_errors_v2) &		\
1714d6a6005SBhargava Marreddy 	  RX_CMPL_METADATA0_TCI_MASK) >> RX_CMPL_METADATA0_SFT)
1724d6a6005SBhargava Marreddy 
1734d6a6005SBhargava Marreddy #define RX_CMP_ENCAP(rxcmp1)						\
1744d6a6005SBhargava Marreddy 	    ((le32_to_cpu((rxcmp1)->rx_cmp_flags2) &			\
1754d6a6005SBhargava Marreddy 	     RX_CMP_FLAGS2_T_L4_CS_CALC) >> 3)
1764d6a6005SBhargava Marreddy 
1774d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp)				\
1784d6a6005SBhargava Marreddy 	((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) &			\
1794d6a6005SBhargava Marreddy 	  RX_CMP_V3_RSS_EXT_OP_LEGACY) >> RX_CMP_V3_RSS_EXT_OP_LEGACY_SHIFT)
1804d6a6005SBhargava Marreddy 
1814d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE_NEW(rxcmp)				\
1824d6a6005SBhargava Marreddy 	((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_V3_RSS_EXT_OP_NEW) >>\
1834d6a6005SBhargava Marreddy 	 RX_CMP_V3_RSS_EXT_OP_NEW_SHIFT)
1844d6a6005SBhargava Marreddy 
1854d6a6005SBhargava Marreddy #define RX_CMP_V3_HASH_TYPE(bd, rxcmp)				\
1864d6a6005SBhargava Marreddy 	(((bd)->rss_cap & BNGE_RSS_CAP_RSS_TCAM) ?		\
1874d6a6005SBhargava Marreddy 	  RX_CMP_V3_HASH_TYPE_NEW(rxcmp) :			\
1884d6a6005SBhargava Marreddy 	  RX_CMP_V3_HASH_TYPE_LEGACY(rxcmp))
1894d6a6005SBhargava Marreddy 
1904d6a6005SBhargava Marreddy #define EXT_OP_INNER_4		0x0
1914d6a6005SBhargava Marreddy #define EXT_OP_OUTER_4		0x2
1924d6a6005SBhargava Marreddy #define EXT_OP_INNFL_3		0x8
1934d6a6005SBhargava Marreddy #define EXT_OP_OUTFL_3		0xa
1944d6a6005SBhargava Marreddy 
1954d6a6005SBhargava Marreddy #define RX_CMP_VLAN_VALID(rxcmp)				\
1964d6a6005SBhargava Marreddy 	((rxcmp)->rx_cmp_misc_v1 & cpu_to_le32(RX_CMP_METADATA1_VALID))
1974d6a6005SBhargava Marreddy 
1984d6a6005SBhargava Marreddy #define RX_CMP_VLAN_TPID_SEL(rxcmp)				\
1994d6a6005SBhargava Marreddy 	(le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_METADATA1_TPID_SEL)
2004d6a6005SBhargava Marreddy 
2014d6a6005SBhargava Marreddy #define RSS_PROFILE_ID_MASK	GENMASK(4, 0)
2024d6a6005SBhargava Marreddy 
2034d6a6005SBhargava Marreddy #define RX_CMP_HASH_TYPE(rxcmp)					\
2044d6a6005SBhargava Marreddy 	(((le32_to_cpu((rxcmp)->rx_cmp_misc_v1) & RX_CMP_RSS_HASH_TYPE) >>\
2054d6a6005SBhargava Marreddy 	  RX_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK)
2064d6a6005SBhargava Marreddy 
2074d6a6005SBhargava Marreddy #define RX_CMP_HASH_VALID(rxcmp)				\
2084d6a6005SBhargava Marreddy 	((rxcmp)->rx_cmp_len_flags_type & cpu_to_le32(RX_CMP_FLAGS_RSS_VALID))
209*58165c99SBhargava Marreddy 
210*58165c99SBhargava Marreddy #define TPA_AGG_AGG_ID(rx_agg)				\
211*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_agg)->rx_agg_cmp_v) &		\
212*58165c99SBhargava Marreddy 	 RX_AGG_CMP_AGG_ID) >> RX_AGG_CMP_AGG_ID_SHIFT)
213*58165c99SBhargava Marreddy 
214*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_TYPE				GENMASK(5, 0)
215*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS				GENMASK(15, 6)
216*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_SHIFT			6
217*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ERROR			BIT(6)
218*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT		GENMASK(9, 7)
219*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_SHIFT		7
220*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_JUMBO		BIT(7)
221*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_HDS		(0x2 << 7)
222*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_JUMBO	(0x5 << 7)
223*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_PLACEMENT_GRO_HDS	(0x6 << 7)
224*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_RSS_VALID		BIT(10)
225*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_TIMESTAMP		BIT(11)
226*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPES			GENMASK(15, 12)
227*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPES_SHIFT		12
228*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS_ITYPE_TCP		(0x2 << 12)
229*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_LEN				GENMASK(31, 16)
230*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_LEN_SHIFT			16
231*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V1				BIT(0)
232*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_RSS_HASH_TYPE			GENMASK(15, 9)
233*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT		9
234*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE		GENMASK(15, 7)
235*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT		7
236*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_AGG_ID				GENMASK(25, 16)
237*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_AGG_ID_SHIFT			16
238*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA1			GENMASK(31, 28)
239*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA1_SHIFT		28
240*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_SEL			GENMASK(30, 28)
241*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_8021Q		BIT(28)
242*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_TPID_8021AD		(0x0 << 28)
243*58165c99SBhargava Marreddy #define RX_TPA_START_METADATA1_VALID			BIT(31)
244*58165c99SBhargava Marreddy 
245*58165c99SBhargava Marreddy struct rx_tpa_start_cmp {
246*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_len_flags_type;
247*58165c99SBhargava Marreddy 	u32 rx_tpa_start_cmp_opaque;
248*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_misc_v1;
249*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_rss_hash;
250*58165c99SBhargava Marreddy };
251*58165c99SBhargava Marreddy 
252*58165c99SBhargava Marreddy #define TPA_START_HASH_VALID(rx_tpa_start)				\
253*58165c99SBhargava Marreddy 	((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type &		\
254*58165c99SBhargava Marreddy 	 cpu_to_le32(RX_TPA_START_CMP_FLAGS_RSS_VALID))
255*58165c99SBhargava Marreddy 
256*58165c99SBhargava Marreddy #define TPA_START_HASH_TYPE(rx_tpa_start)				\
257*58165c99SBhargava Marreddy 	(((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) &	\
258*58165c99SBhargava Marreddy 	   RX_TPA_START_CMP_RSS_HASH_TYPE) >>				\
259*58165c99SBhargava Marreddy 	  RX_TPA_START_CMP_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK)
260*58165c99SBhargava Marreddy 
261*58165c99SBhargava Marreddy #define TPA_START_V3_HASH_TYPE(rx_tpa_start)				\
262*58165c99SBhargava Marreddy 	(((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) &	\
263*58165c99SBhargava Marreddy 	   RX_TPA_START_CMP_V3_RSS_HASH_TYPE) >>			\
264*58165c99SBhargava Marreddy 	  RX_TPA_START_CMP_V3_RSS_HASH_TYPE_SHIFT) & RSS_PROFILE_ID_MASK)
265*58165c99SBhargava Marreddy 
266*58165c99SBhargava Marreddy #define TPA_START_AGG_ID(rx_tpa_start)				\
267*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) &	\
268*58165c99SBhargava Marreddy 	 RX_TPA_START_CMP_AGG_ID) >> RX_TPA_START_CMP_AGG_ID_SHIFT)
269*58165c99SBhargava Marreddy 
270*58165c99SBhargava Marreddy #define TPA_START_ERROR(rx_tpa_start)					\
271*58165c99SBhargava Marreddy 	((rx_tpa_start)->rx_tpa_start_cmp_len_flags_type &		\
272*58165c99SBhargava Marreddy 	 cpu_to_le32(RX_TPA_START_CMP_FLAGS_ERROR))
273*58165c99SBhargava Marreddy 
274*58165c99SBhargava Marreddy #define TPA_START_VLAN_VALID(rx_tpa_start)				\
275*58165c99SBhargava Marreddy 	((rx_tpa_start)->rx_tpa_start_cmp_misc_v1 &			\
276*58165c99SBhargava Marreddy 	 cpu_to_le32(RX_TPA_START_METADATA1_VALID))
277*58165c99SBhargava Marreddy 
278*58165c99SBhargava Marreddy #define TPA_START_VLAN_TPID_SEL(rx_tpa_start)				\
279*58165c99SBhargava Marreddy 	(le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_misc_v1) &	\
280*58165c99SBhargava Marreddy 	 RX_TPA_START_METADATA1_TPID_SEL)
281*58165c99SBhargava Marreddy 
282*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_IP_CS_CALC		BIT(0)
283*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_L4_CS_CALC		BIT(1)
284*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_T_IP_CS_CALC		BIT(2)
285*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_T_L4_CS_CALC		BIT(3)
286*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_IP_TYPE			BIT(8)
287*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_VALID		BIT(9)
288*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT		GENMASK(11, 10)
289*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_EXT_META_FORMAT_SHIFT	10
290*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_FLAGS2_T_IP_TYPE		BIT(10)
291*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V3_FLAGS2_AGG_GRO		BIT(11)
292*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL		GENMASK(31, 16)
293*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_FLAGS2_CSUM_CMPL_SHIFT		16
294*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_V2				BIT(0)
295*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK	GENMASK(3, 1)
296*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT	1
297*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER	(0x0 << 1)
298*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT	(0x3 << 1)
299*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_FLUSH	(0x5 << 1)
300*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_CFA_CODE			GENMASK(31, 16)
301*58165c99SBhargava Marreddy #define RX_TPA_START_CMPL_CFA_CODE_SHIFT		16
302*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_TCI_MASK		GENMASK(31, 16)
303*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_VID_MASK		GENMASK(27, 16)
304*58165c99SBhargava Marreddy #define RX_TPA_START_CMP_METADATA0_SFT			16
305*58165c99SBhargava Marreddy 
306*58165c99SBhargava Marreddy struct rx_tpa_start_cmp_ext {
307*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_flags2;
308*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_metadata;
309*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_cfa_code_v2;
310*58165c99SBhargava Marreddy 	__le32 rx_tpa_start_cmp_hdr_info;
311*58165c99SBhargava Marreddy };
312*58165c99SBhargava Marreddy 
313*58165c99SBhargava Marreddy #define TPA_START_CFA_CODE(rx_tpa_start)				\
314*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) &	\
315*58165c99SBhargava Marreddy 	 RX_TPA_START_CMP_CFA_CODE) >> RX_TPA_START_CMPL_CFA_CODE_SHIFT)
316*58165c99SBhargava Marreddy 
317*58165c99SBhargava Marreddy #define TPA_START_IS_IPV6(rx_tpa_start)				\
318*58165c99SBhargava Marreddy 	(!!((rx_tpa_start)->rx_tpa_start_cmp_flags2 &		\
319*58165c99SBhargava Marreddy 	    cpu_to_le32(RX_TPA_START_CMP_FLAGS2_IP_TYPE)))
320*58165c99SBhargava Marreddy 
321*58165c99SBhargava Marreddy #define TPA_START_ERROR_CODE(rx_tpa_start)				\
322*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) &	\
323*58165c99SBhargava Marreddy 	  RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_MASK) >>			\
324*58165c99SBhargava Marreddy 	 RX_TPA_START_CMP_ERRORS_BUFFER_ERROR_SHIFT)
325*58165c99SBhargava Marreddy 
326*58165c99SBhargava Marreddy #define TPA_START_METADATA0_TCI(rx_tpa_start)				\
327*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_start)->rx_tpa_start_cmp_cfa_code_v2) &	\
328*58165c99SBhargava Marreddy 	  RX_TPA_START_CMP_METADATA0_TCI_MASK) >>			\
329*58165c99SBhargava Marreddy 	 RX_TPA_START_CMP_METADATA0_SFT)
330*58165c99SBhargava Marreddy 
331*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TYPE				GENMASK(5, 0)
332*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS				GENMASK(15, 6)
333*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_SHIFT			6
334*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT			GENMASK(9, 7)
335*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_SHIFT		7
336*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_JUMBO		BIT(7)
337*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_HDS		(0x2 << 7)
338*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO	(0x5 << 7)
339*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS		(0x6 << 7)
340*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_RSS_VALID			BIT(10)
341*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPES			GENMASK(15, 12)
342*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPES_SHIFT		12
343*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_ITYPE_TCP			(0x2 << 12)
344*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_LEN				GENMASK(31, 16)
345*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_LEN_SHIFT			16
346*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_V1				BIT(0)
347*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEGS				GENMASK(15, 8)
348*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEGS_SHIFT			8
349*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_ID				GENMASK(25, 16)
350*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_ID_SHIFT			16
351*58165c99SBhargava Marreddy #define RX_TPA_END_GRO_TS				BIT(31)
352*58165c99SBhargava Marreddy 
353*58165c99SBhargava Marreddy struct rx_tpa_end_cmp {
354*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_len_flags_type;
355*58165c99SBhargava Marreddy 	u32 rx_tpa_end_cmp_opaque;
356*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_misc_v1;
357*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_tsdelta;
358*58165c99SBhargava Marreddy };
359*58165c99SBhargava Marreddy 
360*58165c99SBhargava Marreddy #define TPA_END_AGG_ID(rx_tpa_end)					\
361*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) &		\
362*58165c99SBhargava Marreddy 	 RX_TPA_END_CMP_AGG_ID) >> RX_TPA_END_CMP_AGG_ID_SHIFT)
363*58165c99SBhargava Marreddy 
364*58165c99SBhargava Marreddy #define TPA_END_TPA_SEGS(rx_tpa_end)					\
365*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_end)->rx_tpa_end_cmp_misc_v1) &		\
366*58165c99SBhargava Marreddy 	 RX_TPA_END_CMP_TPA_SEGS) >> RX_TPA_END_CMP_TPA_SEGS_SHIFT)
367*58165c99SBhargava Marreddy 
368*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO				\
369*58165c99SBhargava Marreddy 	cpu_to_le32(RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_JUMBO &		\
370*58165c99SBhargava Marreddy 		    RX_TPA_END_CMP_FLAGS_PLACEMENT_GRO_HDS)
371*58165c99SBhargava Marreddy 
372*58165c99SBhargava Marreddy #define TPA_END_GRO(rx_tpa_end)						\
373*58165c99SBhargava Marreddy 	((rx_tpa_end)->rx_tpa_end_cmp_len_flags_type &			\
374*58165c99SBhargava Marreddy 	 RX_TPA_END_CMP_FLAGS_PLACEMENT_ANY_GRO)
375*58165c99SBhargava Marreddy 
376*58165c99SBhargava Marreddy #define TPA_END_GRO_TS(rx_tpa_end)					\
377*58165c99SBhargava Marreddy 	(!!((rx_tpa_end)->rx_tpa_end_cmp_tsdelta &			\
378*58165c99SBhargava Marreddy 	    cpu_to_le32(RX_TPA_END_GRO_TS)))
379*58165c99SBhargava Marreddy 
380*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_DUP_ACKS			GENMASK(3, 0)
381*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_PAYLOAD_OFFSET			GENMASK(23, 16)
382*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT		16
383*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_BUFS				GENMASK(31, 24)
384*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_AGG_BUFS_SHIFT			24
385*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_TPA_SEG_LEN			GENMASK(15, 0)
386*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_V2				BIT(0)
387*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS				GENMASK(2, 1)
388*58165c99SBhargava Marreddy #define RX_TPA_END_CMPL_ERRORS_SHIFT			1
389*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NO_BUFFER	(0x0 << 1)
390*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_NOT_ON_CHIP	(0x2 << 1)
391*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_BAD_FORMAT	(0x3 << 1)
392*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_RSV_ERROR	(0x4 << 1)
393*58165c99SBhargava Marreddy #define RX_TPA_END_CMP_ERRORS_BUFFER_ERROR_FLUSH	(0x5 << 1)
394*58165c99SBhargava Marreddy 
395*58165c99SBhargava Marreddy struct rx_tpa_end_cmp_ext {
396*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_dup_acks;
397*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_seg_len;
398*58165c99SBhargava Marreddy 	__le32 rx_tpa_end_cmp_errors_v2;
399*58165c99SBhargava Marreddy 	u32 rx_tpa_end_cmp_start_opaque;
400*58165c99SBhargava Marreddy };
401*58165c99SBhargava Marreddy 
402*58165c99SBhargava Marreddy #define TPA_END_ERRORS(rx_tpa_end_ext)					\
403*58165c99SBhargava Marreddy 	((rx_tpa_end_ext)->rx_tpa_end_cmp_errors_v2 &			\
404*58165c99SBhargava Marreddy 	 cpu_to_le32(RX_TPA_END_CMP_ERRORS))
405*58165c99SBhargava Marreddy 
406*58165c99SBhargava Marreddy #define TPA_END_PAYLOAD_OFF(rx_tpa_end_ext)				\
407*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) &	\
408*58165c99SBhargava Marreddy 	 RX_TPA_END_CMP_PAYLOAD_OFFSET) >>				\
409*58165c99SBhargava Marreddy 	RX_TPA_END_CMP_PAYLOAD_OFFSET_SHIFT)
410*58165c99SBhargava Marreddy 
411*58165c99SBhargava Marreddy #define TPA_END_AGG_BUFS(rx_tpa_end_ext)				\
412*58165c99SBhargava Marreddy 	((le32_to_cpu((rx_tpa_end_ext)->rx_tpa_end_cmp_dup_acks) &	\
413*58165c99SBhargava Marreddy 	 RX_TPA_END_CMP_AGG_BUFS) >> RX_TPA_END_CMP_AGG_BUFS_SHIFT)
414*58165c99SBhargava Marreddy 
415*58165c99SBhargava Marreddy #define EVENT_DATA1_RESET_NOTIFY_FATAL(data1)				\
416*58165c99SBhargava Marreddy 	(((data1) &							\
417*58165c99SBhargava Marreddy 	  ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\
418*58165c99SBhargava Marreddy 	 ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_EXCEPTION_FATAL)
419*58165c99SBhargava Marreddy 
420*58165c99SBhargava Marreddy #define EVENT_DATA1_RESET_NOTIFY_FW_ACTIVATION(data1)			\
421*58165c99SBhargava Marreddy 	(((data1) &							\
422*58165c99SBhargava Marreddy 	  ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_MASK) ==\
423*58165c99SBhargava Marreddy 	ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA1_REASON_CODE_FW_ACTIVATION)
424*58165c99SBhargava Marreddy 
425*58165c99SBhargava Marreddy #define EVENT_DATA2_RESET_NOTIFY_FW_STATUS_CODE(data2)			\
426*58165c99SBhargava Marreddy 	((data2) &							\
427*58165c99SBhargava Marreddy 	ASYNC_EVENT_CMPL_RESET_NOTIFY_EVENT_DATA2_FW_STATUS_CODE_MASK)
428*58165c99SBhargava Marreddy 
429*58165c99SBhargava Marreddy #define EVENT_DATA1_RECOVERY_MASTER_FUNC(data1)				\
430*58165c99SBhargava Marreddy 	(!!((data1) &							\
431*58165c99SBhargava Marreddy 	   ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_MASTER_FUNC))
432*58165c99SBhargava Marreddy 
433*58165c99SBhargava Marreddy #define EVENT_DATA1_RECOVERY_ENABLED(data1)				\
434*58165c99SBhargava Marreddy 	(!!((data1) &							\
435*58165c99SBhargava Marreddy 	   ASYNC_EVENT_CMPL_ERROR_RECOVERY_EVENT_DATA1_FLAGS_RECOVERY_ENABLED))
436*58165c99SBhargava Marreddy 
437*58165c99SBhargava Marreddy #define BNGE_EVENT_ERROR_REPORT_TYPE(data1)				\
438*58165c99SBhargava Marreddy 	(((data1) &							\
439*58165c99SBhargava Marreddy 	  ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_MASK) >>\
440*58165c99SBhargava Marreddy 	 ASYNC_EVENT_CMPL_ERROR_REPORT_BASE_EVENT_DATA1_ERROR_TYPE_SFT)
441*58165c99SBhargava Marreddy 
442*58165c99SBhargava Marreddy #define BNGE_EVENT_INVALID_SIGNAL_DATA(data2)				\
443*58165c99SBhargava Marreddy 	(((data2) &							\
444*58165c99SBhargava Marreddy 	  ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_MASK) >>\
445*58165c99SBhargava Marreddy 	 ASYNC_EVENT_CMPL_ERROR_REPORT_INVALID_SIGNAL_EVENT_DATA2_PIN_ID_SFT)
4464d6a6005SBhargava Marreddy #endif /* _BNGE_HW_DEF_H_ */
447