xref: /onnv-gate/usr/src/uts/common/io/hxge/hxge_pfc.h (revision 6864:50c1b31ccb24)
16349Sqs148142 /*
26349Sqs148142  * CDDL HEADER START
36349Sqs148142  *
46349Sqs148142  * The contents of this file are subject to the terms of the
56349Sqs148142  * Common Development and Distribution License (the "License").
66349Sqs148142  * You may not use this file except in compliance with the License.
76349Sqs148142  *
86349Sqs148142  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
96349Sqs148142  * or http://www.opensolaris.org/os/licensing.
106349Sqs148142  * See the License for the specific language governing permissions
116349Sqs148142  * and limitations under the License.
126349Sqs148142  *
136349Sqs148142  * When distributing Covered Code, include this CDDL HEADER in each
146349Sqs148142  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
156349Sqs148142  * If applicable, add the following below this CDDL HEADER, with the
166349Sqs148142  * fields enclosed by brackets "[]" replaced with your own identifying
176349Sqs148142  * information: Portions Copyright [yyyy] [name of copyright owner]
186349Sqs148142  *
196349Sqs148142  * CDDL HEADER END
206349Sqs148142  */
216349Sqs148142 
226349Sqs148142 /*
236349Sqs148142  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
246349Sqs148142  * Use is subject to license terms.
256349Sqs148142  */
266349Sqs148142 
276349Sqs148142 #ifndef _HXGE_PFC_H
286349Sqs148142 #define	_HXGE_PFC_H
296349Sqs148142 
306349Sqs148142 #pragma ident	"%Z%%M%	%I%	%E% SMI"
316349Sqs148142 
326349Sqs148142 #ifdef __cplusplus
336349Sqs148142 extern "C" {
346349Sqs148142 #endif
356349Sqs148142 
366349Sqs148142 /* 0 and 4095 are reserved */
376349Sqs148142 #define	VLAN_ID_MIN			1
386349Sqs148142 #define	VLAN_ID_MAX			4094
396349Sqs148142 #define	VLAN_ID_IMPLICIT		0
406349Sqs148142 
416349Sqs148142 #define	HXGE_MAC_DEFAULT_ADDR_SLOT	0
426349Sqs148142 
436349Sqs148142 #define	HASH_BITS			8
446349Sqs148142 #define	NMCFILTER_BITS			(1 << HASH_BITS)
456349Sqs148142 #define	HASH_REG_WIDTH			16
466349Sqs148142 #define	NMCFILTER_REGS			(NMCFILTER_BITS / HASH_REG_WIDTH)
476349Sqs148142 					/* Number of multicast filter regs */
486349Sqs148142 #define	MAC_MAX_HASH_ENTRY		NMCFILTER_REGS
496349Sqs148142 
506349Sqs148142 #define	REG_PIO_WRITE64(handle, offset, value) \
516349Sqs148142 		HXGE_REG_WR64((handle), (offset), (value))
526349Sqs148142 #define	REG_PIO_READ64(handle, offset, val_p) \
536349Sqs148142 		HXGE_REG_RD64((handle), (offset), (val_p))
546349Sqs148142 
556349Sqs148142 #define	TCAM_CTL_RWC_TCAM_WR		0x0
566349Sqs148142 #define	TCAM_CTL_RWC_TCAM_CMP		0x2
576349Sqs148142 #define	TCAM_CTL_RWC_RAM_WR		0x4
586349Sqs148142 #define	TCAM_CTL_RWC_RAM_RD		0x5
596349Sqs148142 #define	TCAM_CTL_RWC_RWC_STAT		0x1
606349Sqs148142 #define	TCAM_CTL_RWC_RWC_MATCH		0x1
616349Sqs148142 
626349Sqs148142 #define	WRITE_TCAM_REG_CTL(handle, ctl) \
636349Sqs148142 		REG_PIO_WRITE64(handle, PFC_TCAM_CTRL, ctl)
646349Sqs148142 
656349Sqs148142 #define	READ_TCAM_REG_CTL(handle, val_p) \
666349Sqs148142 		REG_PIO_READ64(handle, PFC_TCAM_CTRL, val_p)
676349Sqs148142 
686349Sqs148142 #define	WRITE_TCAM_REG_KEY0(handle, key)	\
696349Sqs148142 		REG_PIO_WRITE64(handle,  PFC_TCAM_KEY0, key)
706349Sqs148142 #define	WRITE_TCAM_REG_KEY1(handle, key) \
716349Sqs148142 		REG_PIO_WRITE64(handle,  PFC_TCAM_KEY1, key)
726349Sqs148142 #define	WRITE_TCAM_REG_MASK0(handle, mask)   \
736349Sqs148142 		REG_PIO_WRITE64(handle,  PFC_TCAM_MASK0, mask)
746349Sqs148142 #define	WRITE_TCAM_REG_MASK1(handle, mask)   \
756349Sqs148142 		REG_PIO_WRITE64(handle,  PFC_TCAM_MASK1, mask)
766349Sqs148142 
776349Sqs148142 #define	READ_TCAM_REG_KEY0(handle, val_p)	\
786349Sqs148142 		REG_PIO_READ64(handle,  PFC_TCAM_KEY0, val_p)
796349Sqs148142 #define	READ_TCAM_REG_KEY1(handle, val_p)	\
806349Sqs148142 		REG_PIO_READ64(handle,  PFC_TCAM_KEY1, val_p)
816349Sqs148142 #define	READ_TCAM_REG_MASK0(handle, val_p)	\
826349Sqs148142 		REG_PIO_READ64(handle,  PFC_TCAM_MASK0, val_p)
836349Sqs148142 #define	READ_TCAM_REG_MASK1(handle, val_p)	\
846349Sqs148142 		REG_PIO_READ64(handle,  PFC_TCAM_MASK1, val_p)
856349Sqs148142 
866349Sqs148142 typedef union _hxge_tcam_res_t {
876349Sqs148142 	uint64_t value;
886349Sqs148142 	struct {
896349Sqs148142 #if defined(_BIG_ENDIAN)
90*6864Sqs148142 		uint32_t padding:32;
91*6864Sqs148142 		uint32_t padding_l:2;
92*6864Sqs148142 		uint32_t reserved:15;
93*6864Sqs148142 		uint32_t parity:1;
94*6864Sqs148142 		uint32_t hit_count:4;
95*6864Sqs148142 		uint32_t channel_d:2;
96*6864Sqs148142 		uint32_t channel_c:2;
97*6864Sqs148142 		uint32_t channel_b:2;
98*6864Sqs148142 		uint32_t channel_a:2;
99*6864Sqs148142 		uint32_t source_hash:1;
100*6864Sqs148142 		uint32_t discard:1;
1016349Sqs148142 #else
102*6864Sqs148142 		uint32_t discard:1;
103*6864Sqs148142 		uint32_t source_hash:1;
104*6864Sqs148142 		uint32_t channel_a:2;
105*6864Sqs148142 		uint32_t channel_b:2;
106*6864Sqs148142 		uint32_t channel_c:2;
107*6864Sqs148142 		uint32_t channel_d:2;
108*6864Sqs148142 		uint32_t hit_count:4;
109*6864Sqs148142 		uint32_t parity:1;
110*6864Sqs148142 		uint32_t reserved:15;
111*6864Sqs148142 		uint32_t padding_l:2;
112*6864Sqs148142 		uint32_t padding:32;
1136349Sqs148142 #endif
1146349Sqs148142 	} bits;
1156349Sqs148142 } hxge_tcam_res_t, *p_hxge_tcam_res_t;
1166349Sqs148142 
1176349Sqs148142 typedef struct tcam_reg {
1186349Sqs148142 #if defined(_BIG_ENDIAN)
1196349Sqs148142 	uint64_t	reg1;		/* 99:64 */
1206349Sqs148142 	uint64_t	reg0;		/* 63:0 */
1216349Sqs148142 #else
1226349Sqs148142 	uint64_t	reg0;		/* 63:0 */
1236349Sqs148142 	uint64_t	reg1;		/* 99:64 */
1246349Sqs148142 #endif
1256349Sqs148142 } hxge_tcam_reg_t;
1266349Sqs148142 
1276349Sqs148142 typedef struct hxge_tcam_ipv4_S {
1286349Sqs148142 #if defined(_BIG_ENDIAN)
129*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
130*6864Sqs148142 	uint32_t	class_code_l:1;   /* 95:95 */
1316349Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
1326349Sqs148142 	uint32_t	rsrvd2:2;	/* 90:89 */
1336349Sqs148142 	uint32_t	noport:1;	/* 88 */
1346349Sqs148142 	uint32_t	protocol:8;	/* 87:80 */
135*6864Sqs148142 	uint32_t	l4_hdr:16;	/* 79:64 */
136*6864Sqs148142 	uint32_t	l4_hdr_l:16;	/* 63:48 */
1376349Sqs148142 	uint32_t	rsrvd:16;	/* 47:32 */
1386349Sqs148142 	uint32_t	ip_daddr;	/* 31:0 */
1396349Sqs148142 #else
1406349Sqs148142 	uint32_t	ip_daddr;	/* 31:0 */
1416349Sqs148142 	uint32_t	rsrvd:16;	/* 47:32 */
142*6864Sqs148142 	uint32_t	l4_hdr_l:16;	/* 63:48 */
143*6864Sqs148142 	uint32_t	l4_hdr:16;	/* 79:64 */
1446349Sqs148142 	uint32_t	protocol:8;	/* 87:80 */
1456349Sqs148142 	uint32_t	noport:1;	/* 88 */
1466349Sqs148142 	uint32_t	rsrvd2:2;	/* 90:89 */
1476349Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
148*6864Sqs148142 	uint32_t	class_code_l:1;   /* 95:95 */
149*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
1506349Sqs148142 #endif
1516349Sqs148142 } hxge_tcam_ipv4_t;
1526349Sqs148142 
1536349Sqs148142 typedef struct hxge_tcam_ipv6_S {
1546349Sqs148142 #if defined(_BIG_ENDIAN)
155*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
156*6864Sqs148142 	uint32_t	class_code_l:1;   /* 95:95 */
1576349Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
158*6864Sqs148142 	uint32_t	rsrvd2:3;	/* 90:88 */
159*6864Sqs148142 	uint32_t	protocol:8;	/* 87:80 */
160*6864Sqs148142 	uint32_t	l4_hdr:16;	/* 79:64 */
161*6864Sqs148142 	uint32_t	l4_hdr_l:16;	/* 63:48 */
162*6864Sqs148142 	uint32_t	rsrvd:16;	/* 47:32 */
163*6864Sqs148142 	uint32_t	rsrvd_l:32;	/* 31:0 */
1646349Sqs148142 #else
165*6864Sqs148142 	uint32_t	rsrvd_l:32;	/* 31:0 */
166*6864Sqs148142 	uint32_t	rsrvd:16;	/* 47:32 */
167*6864Sqs148142 	uint32_t	l4_hdr_l:16;	/* 63:48 */
168*6864Sqs148142 	uint32_t	l4_hdr:16;	/* 79:64 */
169*6864Sqs148142 	uint32_t	protocol:8;	/* 87:80 */
170*6864Sqs148142 	uint32_t	rsrvd2:3;	/* 90:88 */
1716349Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
172*6864Sqs148142 	uint32_t	class_code_l:1;   /* 95:95 */
173*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
1746349Sqs148142 #endif
1756349Sqs148142 } hxge_tcam_ipv6_t;
1766349Sqs148142 
1776349Sqs148142 typedef struct hxge_tcam_enet_S {
1786349Sqs148142 #if defined(_BIG_ENDIAN)
179*6864Sqs148142 	uint8_t		class_code:4;   /* 99:96 */
180*6864Sqs148142 	uint8_t		class_code_l:1; /* 95:95 */
1816349Sqs148142 	uint8_t		blade_id:4;	/* 94:91 */
1826349Sqs148142 	uint8_t		rsrvd:3;	/* 90:88 */
1836349Sqs148142 	uint8_t		eframe[11];	/* 87:0 */
1846349Sqs148142 #else
1856349Sqs148142 	uint8_t		eframe[11];	/* 87:0 */
1866349Sqs148142 	uint8_t		rsrvd:3;	/* 90:88 */
1876349Sqs148142 	uint8_t		blade_id:4;	/* 94:91 */
188*6864Sqs148142 	uint8_t		class_code_l:1; /* 95:95 */
189*6864Sqs148142 	uint8_t		class_code:4;   /* 99:96 */
1906349Sqs148142 #endif
1916349Sqs148142 } hxge_tcam_ether_t;
1926349Sqs148142 
1936349Sqs148142 typedef struct hxge_tcam_spread_S {
1946349Sqs148142 #if defined(_BIG_ENDIAN)
195*6864Sqs148142 	uint32_t	unused:28;	/* 127:100 */
196*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
197*6864Sqs148142 	uint32_t	class_code_l:1; /* 95:95 */
198*6864Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
199*6864Sqs148142 	uint32_t	wild1:27;	/* 90:64 */
200*6864Sqs148142 	uint32_t	wild;		/* 63:32 */
201*6864Sqs148142 	uint32_t	wild_l;		/* 31:0 */
2026349Sqs148142 #else
203*6864Sqs148142 	uint32_t	wild_l;		/* 31:0 */
204*6864Sqs148142 	uint32_t	wild;		/* 63:32 */
205*6864Sqs148142 	uint32_t	wild1:27;	/* 90:64 */
206*6864Sqs148142 	uint32_t	blade_id:4;	/* 94:91 */
207*6864Sqs148142 	uint32_t	class_code_l:1; /* 95:95 */
208*6864Sqs148142 	uint32_t	class_code:4;   /* 99:96 */
209*6864Sqs148142 	uint32_t	unused:28;	/* 127:100 */
2106349Sqs148142 #endif
2116349Sqs148142 } hxge_tcam_spread_t;
2126349Sqs148142 
2136349Sqs148142 typedef struct hxge_tcam_entry_S {
2146349Sqs148142 	union _hxge_tcam_entry {
2156349Sqs148142 		hxge_tcam_ipv4_t	ipv4;
2166349Sqs148142 		hxge_tcam_ipv6_t	ipv6;
2176349Sqs148142 		hxge_tcam_ether_t	enet;
2186349Sqs148142 		hxge_tcam_reg_t		regs;
2196349Sqs148142 		hxge_tcam_spread_t	spread;
2206349Sqs148142 	} key, mask;
2216349Sqs148142 	hxge_tcam_res_t			match_action;
2226349Sqs148142 	uint16_t			ether_type;
2236349Sqs148142 } hxge_tcam_entry_t;
2246349Sqs148142 
2256349Sqs148142 #define	key_reg0		key.regs.reg0
2266349Sqs148142 #define	key_reg1		key.regs.reg1
2276349Sqs148142 #define	mask_reg0		mask.regs.reg0
2286349Sqs148142 #define	mask_reg1		mask.regs.reg1
2296349Sqs148142 
2306349Sqs148142 #define	key0			key.regs.reg0
2316349Sqs148142 #define	key1			key.regs.reg1
2326349Sqs148142 #define	mask0			mask.regs.reg0
2336349Sqs148142 #define	mask1			mask.regs.reg1
2346349Sqs148142 
2356349Sqs148142 #define	ip4_class_key		key.ipv4.class_code
236*6864Sqs148142 #define	ip4_class_key_l		key.ipv4.class_code_l
2376349Sqs148142 #define	ip4_blade_id_key	key.ipv4.blade_id
2386349Sqs148142 #define	ip4_noport_key		key.ipv4.noport
2396349Sqs148142 #define	ip4_proto_key		key.ipv4.protocol
2406349Sqs148142 #define	ip4_l4_hdr_key		key.ipv4.l4_hdr
241*6864Sqs148142 #define	ip4_l4_hdr_key_l	key.ipv4.l4_hdr_l
2426349Sqs148142 #define	ip4_dest_key		key.ipv4.ip_daddr
2436349Sqs148142 
2446349Sqs148142 #define	ip4_class_mask		mask.ipv4.class_code
245*6864Sqs148142 #define	ip4_class_mask_l	mask.ipv4.class_code_l
2466349Sqs148142 #define	ip4_blade_id_mask	mask.ipv4.blade_id
2476349Sqs148142 #define	ip4_noport_mask		mask.ipv4.noport
2486349Sqs148142 #define	ip4_proto_mask		mask.ipv4.protocol
2496349Sqs148142 #define	ip4_l4_hdr_mask		mask.ipv4.l4_hdr
250*6864Sqs148142 #define	ip4_l4_hdr_mask_l	mask.ipv4.l4_hdr_l
2516349Sqs148142 #define	ip4_dest_mask		mask.ipv4.ip_daddr
2526349Sqs148142 
2536349Sqs148142 #define	ip6_class_key		key.ipv6.class_code
254*6864Sqs148142 #define	ip6_class_key_l		key.ipv6.class_code_l
2556349Sqs148142 #define	ip6_blade_id_key	key.ipv6.blade_id
2566349Sqs148142 #define	ip6_proto_key		key.ipv6.protocol
2576349Sqs148142 #define	ip6_l4_hdr_key		key.ipv6.l4_hdr
258*6864Sqs148142 #define	ip6_l4_hdr_key_l	key.ipv6.l4_hdr_l
2596349Sqs148142 
2606349Sqs148142 #define	ip6_class_mask		mask.ipv6.class_code
261*6864Sqs148142 #define	ip6_class_mask_l	mask.ipv6.class_code_l
2626349Sqs148142 #define	ip6_blade_id_mask	mask.ipv6.blade_id
2636349Sqs148142 #define	ip6_proto_mask		mask.ipv6.protocol
2646349Sqs148142 #define	ip6_l4_hdr_mask		mask.ipv6.l4_hdr
265*6864Sqs148142 #define	ip6_l4_hdr_mask_l	mask.ipv6.l4_hdr_l
2666349Sqs148142 
2676349Sqs148142 #define	ether_class_key		key.enet.class_code
268*6864Sqs148142 #define	ether_class_key_l	key.enet.class_code_l
2696349Sqs148142 #define	ether_blade_id_key	key.enet.blade_id
2706349Sqs148142 #define	ether_ethframe_key	key.enet.eframe
2716349Sqs148142 
2726349Sqs148142 #define	ether_class_mask	mask.enet.class_code
273*6864Sqs148142 #define	ether_class_mask_l	mask.enet.class_code_l
2746349Sqs148142 #define	ether_blade_id_mask	mask.enet.blade_id
2756349Sqs148142 #define	ether_ethframe_mask	mask.enet.eframe
2766349Sqs148142 
2776349Sqs148142 typedef	struct _pfc_errlog {
2786349Sqs148142 	uint32_t		tcp_ctrl_drop;    /* pfc_drop_log */
2796349Sqs148142 	uint32_t		l2_addr_drop;
2806349Sqs148142 	uint32_t		class_code_drop;
2816349Sqs148142 	uint32_t		tcam_drop;
2826349Sqs148142 	uint32_t		vlan_drop;
2836349Sqs148142 
2846349Sqs148142 	uint32_t		vlan_par_err_log; /* pfc_vlan_par_err_log */
2856349Sqs148142 	uint32_t		tcam_par_err_log; /* pfc_tcam_par_err_log */
2866349Sqs148142 } pfc_errlog_t, *p_pfc_errlog_t;
2876349Sqs148142 
2886349Sqs148142 typedef struct _pfc_stats {
2896349Sqs148142 	uint32_t		pkt_drop;	/* pfc_int_status */
2906349Sqs148142 	uint32_t		tcam_parity_err;
2916349Sqs148142 	uint32_t		vlan_parity_err;
2926349Sqs148142 
2936349Sqs148142 	uint32_t		bad_cs_count;	/* pfc_bad_cs_counter */
2946349Sqs148142 	uint32_t		drop_count;	/* pfc_drop_counter */
2956349Sqs148142 	pfc_errlog_t		errlog;
2966349Sqs148142 } hxge_pfc_stats_t, *p_hxge_pfc_stats_t;
2976349Sqs148142 
2986349Sqs148142 typedef enum pfc_tcam_class {
2996349Sqs148142 	TCAM_CLASS_INVALID = 0,
3006349Sqs148142 	TCAM_CLASS_DUMMY = 1,
3016349Sqs148142 	TCAM_CLASS_ETYPE_1 = 2,
3026349Sqs148142 	TCAM_CLASS_ETYPE_2,
3036349Sqs148142 	TCAM_CLASS_RESERVED_4,
3046349Sqs148142 	TCAM_CLASS_RESERVED_5,
3056349Sqs148142 	TCAM_CLASS_RESERVED_6,
3066349Sqs148142 	TCAM_CLASS_RESERVED_7,
3076349Sqs148142 	TCAM_CLASS_TCP_IPV4,
3086349Sqs148142 	TCAM_CLASS_UDP_IPV4,
3096349Sqs148142 	TCAM_CLASS_AH_ESP_IPV4,
3106349Sqs148142 	TCAM_CLASS_SCTP_IPV4,
3116349Sqs148142 	TCAM_CLASS_TCP_IPV6,
3126349Sqs148142 	TCAM_CLASS_UDP_IPV6,
3136349Sqs148142 	TCAM_CLASS_AH_ESP_IPV6,
3146349Sqs148142 	TCAM_CLASS_SCTP_IPV6,
3156349Sqs148142 	TCAM_CLASS_ARP,
3166349Sqs148142 	TCAM_CLASS_RARP,
3176349Sqs148142 	TCAM_CLASS_DUMMY_12,
3186349Sqs148142 	TCAM_CLASS_DUMMY_13,
3196349Sqs148142 	TCAM_CLASS_DUMMY_14,
3206349Sqs148142 	TCAM_CLASS_DUMMY_15,
3216349Sqs148142 	TCAM_CLASS_MAX
3226349Sqs148142 } tcam_class_t;
3236349Sqs148142 
3246349Sqs148142 typedef struct _tcam_key_cfg_t {
3256349Sqs148142 	boolean_t	lookup_enable;
3266349Sqs148142 	boolean_t	discard;
3276349Sqs148142 } tcam_key_cfg_t;
3286349Sqs148142 
3296349Sqs148142 typedef struct _hash_filter_t {
3306349Sqs148142 	uint_t		hash_ref_cnt;
3316349Sqs148142 	uint16_t	hash_filter_regs[NMCFILTER_REGS];
3326349Sqs148142 	uint32_t	hash_bit_ref_cnt[NMCFILTER_BITS];
3336349Sqs148142 } hash_filter_t, *p_hash_filter_t;
3346349Sqs148142 
3356349Sqs148142 #define	HXGE_ETHER_FLOWS	(FLOW_ETHER_DHOST | FLOW_ETHER_SHOST | \
3366349Sqs148142 					FLOW_ETHER_TYPE)
3376349Sqs148142 #define	HXGE_VLAN_FLOWS		(FLOW_ETHER_TPID | FLOW_ETHER_TCI)
3386349Sqs148142 #define	HXGE_ETHERNET_FLOWS	(HXGE_ETHER_FLOWS | HXGE_VLAN_FLOWS)
3396349Sqs148142 #define	HXGE_PORT_FLOWS		(FLOW_ULP_PORT_REMOTE | FLOW_ULP_PORT_LOCAL)
3406349Sqs148142 #define	HXGE_ADDR_FLOWS		(FLOW_IP_REMOTE | FLOW_IP_LOCAL)
3416349Sqs148142 #define	HXGE_IP_FLOWS		(FLOW_IP_VERSION | FLOW_IP_PROTOCOL | \
3426349Sqs148142 					HXGE_PORT_FLOWS | HXGE_ADDR_FLOWS)
3436349Sqs148142 #define	HXGE_SUPPORTED_FLOWS	(HXGE_ETHERNET_FLOWS | HXGE_IP_FLOWS)
3446349Sqs148142 
3456349Sqs148142 #define	CLS_CODE_MASK		0x1f
3466349Sqs148142 #define	BLADE_ID_MASK		0xf
3476349Sqs148142 #define	PID_MASK		0xff
3486349Sqs148142 #define	IP_PORT_MASK		0xffff
3496349Sqs148142 
3506349Sqs148142 #define	IP_ADDR_SA_MASK		0xFFFFFFFF
3516349Sqs148142 #define	IP_ADDR_DA_MASK		IP_ADDR_SA_MASK
3526349Sqs148142 #define	L4PT_SPI_MASK		IP_ADDR_SA_MASK
3536349Sqs148142 
3546349Sqs148142 #define	BLADE_ID_OFFSET		127	/* Last entry in HCR_REG */
3556349Sqs148142 
3566349Sqs148142 #ifdef __cplusplus
3576349Sqs148142 }
3586349Sqs148142 #endif
3596349Sqs148142 
3606349Sqs148142 #endif /* !_HXGE_PFC_H */
361