xref: /freebsd/sys/dev/cxgbe/common/t4_regs_values.h (revision 95ee2897)
154e4ee71SNavdeep Parhar /*-
24d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3718cf2ccSPedro F. Giffuni  *
440bf7442SNavdeep Parhar  * Copyright (c) 2011, 2016 Chelsio Communications, Inc.
554e4ee71SNavdeep Parhar  * All rights reserved.
654e4ee71SNavdeep Parhar  *
754e4ee71SNavdeep Parhar  * Redistribution and use in source and binary forms, with or without
854e4ee71SNavdeep Parhar  * modification, are permitted provided that the following conditions
954e4ee71SNavdeep Parhar  * are met:
1054e4ee71SNavdeep Parhar  * 1. Redistributions of source code must retain the above copyright
1154e4ee71SNavdeep Parhar  *    notice, this list of conditions and the following disclaimer.
1254e4ee71SNavdeep Parhar  * 2. Redistributions in binary form must reproduce the above copyright
1354e4ee71SNavdeep Parhar  *    notice, this list of conditions and the following disclaimer in the
1454e4ee71SNavdeep Parhar  *    documentation and/or other materials provided with the distribution.
1554e4ee71SNavdeep Parhar  *
1654e4ee71SNavdeep Parhar  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1754e4ee71SNavdeep Parhar  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1854e4ee71SNavdeep Parhar  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1954e4ee71SNavdeep Parhar  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2054e4ee71SNavdeep Parhar  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2154e4ee71SNavdeep Parhar  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2254e4ee71SNavdeep Parhar  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2354e4ee71SNavdeep Parhar  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2454e4ee71SNavdeep Parhar  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2554e4ee71SNavdeep Parhar  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2654e4ee71SNavdeep Parhar  * SUCH DAMAGE.
2754e4ee71SNavdeep Parhar  *
2854e4ee71SNavdeep Parhar  */
2954e4ee71SNavdeep Parhar 
3054e4ee71SNavdeep Parhar #ifndef __T4_REGS_VALUES_H__
3154e4ee71SNavdeep Parhar #define __T4_REGS_VALUES_H__
3254e4ee71SNavdeep Parhar 
3354e4ee71SNavdeep Parhar /*
3454e4ee71SNavdeep Parhar  * This file contains definitions for various T4 register value hardware
3554e4ee71SNavdeep Parhar  * constants.  The types of values encoded here are predominantly those for
3654e4ee71SNavdeep Parhar  * register fields which control "modal" behavior.  For the most part, we do
3754e4ee71SNavdeep Parhar  * not include definitions for register fields which are simple numeric
3854e4ee71SNavdeep Parhar  * metrics, etc.
3954e4ee71SNavdeep Parhar  *
4054e4ee71SNavdeep Parhar  * These new "modal values" use a naming convention which matches the
4154e4ee71SNavdeep Parhar  * currently existing macros in t4_reg.h.  For register field FOO which would
4254e4ee71SNavdeep Parhar  * have S_FOO, M_FOO, V_FOO() and G_FOO() macros, we introduce X_FOO_{MODE}
4354e4ee71SNavdeep Parhar  * definitions.  These can be used as V_FOO(X_FOO_MODE) or as (G_FOO(x) ==
4454e4ee71SNavdeep Parhar  * X_FOO_MODE).
4554e4ee71SNavdeep Parhar  *
4654e4ee71SNavdeep Parhar  * Note that this should all be part of t4_regs.h but the toolset used to
4754e4ee71SNavdeep Parhar  * generate that file doesn't [yet] have the capability of collecting these
4854e4ee71SNavdeep Parhar  * constants.
4954e4ee71SNavdeep Parhar  */
5054e4ee71SNavdeep Parhar 
5154e4ee71SNavdeep Parhar /*
5254e4ee71SNavdeep Parhar  * SGE definitions.
5354e4ee71SNavdeep Parhar  * ================
5454e4ee71SNavdeep Parhar  */
5554e4ee71SNavdeep Parhar 
5654e4ee71SNavdeep Parhar /*
5754e4ee71SNavdeep Parhar  * SGE register field values.
5854e4ee71SNavdeep Parhar  */
5954e4ee71SNavdeep Parhar 
6054e4ee71SNavdeep Parhar /* CONTROL register */
6154e4ee71SNavdeep Parhar #define X_FLSPLITMODE_FLSPLITMIN	0
6254e4ee71SNavdeep Parhar #define X_FLSPLITMODE_ETHHDR		1
6354e4ee71SNavdeep Parhar #define X_FLSPLITMODE_IPHDR		2
6454e4ee71SNavdeep Parhar #define X_FLSPLITMODE_TCPHDR		3
6554e4ee71SNavdeep Parhar 
6654e4ee71SNavdeep Parhar #define X_DCASYSTYPE_FSB		0
6754e4ee71SNavdeep Parhar #define X_DCASYSTYPE_CSI		1
6854e4ee71SNavdeep Parhar 
6954e4ee71SNavdeep Parhar #define X_EGSTATPAGESIZE_64B		0
7054e4ee71SNavdeep Parhar #define X_EGSTATPAGESIZE_128B		1
7154e4ee71SNavdeep Parhar 
7254e4ee71SNavdeep Parhar #define X_RXPKTCPLMODE_DATA		0
7354e4ee71SNavdeep Parhar #define X_RXPKTCPLMODE_SPLIT		1
7454e4ee71SNavdeep Parhar 
7554e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_SHIFT		5
7654e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_32B		0
7754e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_64B		1
7854e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_128B		2
7954e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_256B		3
8054e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_512B		4
8154e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_1024B		5
8254e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_2048B		6
8354e4ee71SNavdeep Parhar #define X_INGPCIEBOUNDARY_4096B		7
8454e4ee71SNavdeep Parhar 
8540bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_SHIFT	3
8640bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_8B		0
8740bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_16B		1
8840bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_32B		2
8940bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_64B		3
9040bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_128B	4
9140bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_256B	5
9240bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_512B	6
9340bf7442SNavdeep Parhar #define X_T6_INGPADBOUNDARY_1024B	7
9440bf7442SNavdeep Parhar 
9554e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_SHIFT		5
9654e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_32B		0
9754e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_64B		1
9854e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_128B		2
9954e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_256B		3
10054e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_512B		4
10154e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_1024B		5
10254e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_2048B		6
10354e4ee71SNavdeep Parhar #define X_INGPADBOUNDARY_4096B		7
10454e4ee71SNavdeep Parhar 
10554e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_SHIFT		5
10654e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_32B		0
10754e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_64B		1
10854e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_128B		2
10954e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_256B		3
11054e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_512B		4
11154e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_1024B		5
11254e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_2048B		6
11354e4ee71SNavdeep Parhar #define X_EGRPCIEBOUNDARY_4096B		7
11454e4ee71SNavdeep Parhar 
11540bf7442SNavdeep Parhar /* CONTROL2 register */
11640bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_SHIFT		5	// *most* of the values ...
11740bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_16B		0	// Note weird value!
11840bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_64B		1
11940bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_128B		2
12040bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_256B		3
12140bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_512B		4
12240bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_1024B		5
12340bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_2048B		6
12440bf7442SNavdeep Parhar #define X_INGPACKBOUNDARY_4096B		7
12540bf7442SNavdeep Parhar 
12654e4ee71SNavdeep Parhar /* GTS register */
12754e4ee71SNavdeep Parhar #define SGE_TIMERREGS			6
12854e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER0		0
12954e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER1		1
13054e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER2		2
13154e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER3		3
13254e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER4		4
13354e4ee71SNavdeep Parhar #define X_TIMERREG_COUNTER5		5
13454e4ee71SNavdeep Parhar #define X_TIMERREG_RESTART_COUNTER	6
13554e4ee71SNavdeep Parhar #define X_TIMERREG_UPDATE_CIDX		7
13654e4ee71SNavdeep Parhar 
13754e4ee71SNavdeep Parhar /*
13854e4ee71SNavdeep Parhar  * Egress Context field values
13954e4ee71SNavdeep Parhar  */
14054e4ee71SNavdeep Parhar #define EC_WR_UNITS			16
14154e4ee71SNavdeep Parhar 
14254e4ee71SNavdeep Parhar #define X_FETCHBURSTMIN_SHIFT		4
14354e4ee71SNavdeep Parhar #define X_FETCHBURSTMIN_16B		0
14454e4ee71SNavdeep Parhar #define X_FETCHBURSTMIN_32B		1
14554e4ee71SNavdeep Parhar #define X_FETCHBURSTMIN_64B		2
14654e4ee71SNavdeep Parhar #define X_FETCHBURSTMIN_128B		3
14754e4ee71SNavdeep Parhar 
148adb0cd84SNavdeep Parhar /* T6 and later use a single-bit encoding for FetchBurstMin */
149adb0cd84SNavdeep Parhar #define X_FETCHBURSTMIN_SHIFT_T6	6
150adb0cd84SNavdeep Parhar #define X_FETCHBURSTMIN_64B_T6		0
151adb0cd84SNavdeep Parhar #define X_FETCHBURSTMIN_128B_T6		1
152adb0cd84SNavdeep Parhar 
15354e4ee71SNavdeep Parhar #define X_FETCHBURSTMAX_SHIFT		6
15454e4ee71SNavdeep Parhar #define X_FETCHBURSTMAX_64B		0
15554e4ee71SNavdeep Parhar #define X_FETCHBURSTMAX_128B		1
15654e4ee71SNavdeep Parhar #define X_FETCHBURSTMAX_256B		2
15754e4ee71SNavdeep Parhar #define X_FETCHBURSTMAX_512B		3
15854e4ee71SNavdeep Parhar 
15954e4ee71SNavdeep Parhar #define X_HOSTFCMODE_NONE		0
16054e4ee71SNavdeep Parhar #define X_HOSTFCMODE_INGRESS_QUEUE	1
16154e4ee71SNavdeep Parhar #define X_HOSTFCMODE_STATUS_PAGE	2
16254e4ee71SNavdeep Parhar #define X_HOSTFCMODE_BOTH		3
16354e4ee71SNavdeep Parhar 
16454e4ee71SNavdeep Parhar #define X_HOSTFCOWNER_UP		0
16554e4ee71SNavdeep Parhar #define X_HOSTFCOWNER_SGE		1
16654e4ee71SNavdeep Parhar 
16754e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_1		0
16854e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_2		1
16954e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_4		2
17054e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_8		3
17154e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_16		4
17254e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_32		5
17354e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_64		6
17454e4ee71SNavdeep Parhar #define X_CIDXFLUSHTHRESH_128		7
17554e4ee71SNavdeep Parhar 
17654e4ee71SNavdeep Parhar #define X_IDXSIZE_UNIT			64
17754e4ee71SNavdeep Parhar 
17854e4ee71SNavdeep Parhar #define X_BASEADDRESS_ALIGN		512
17954e4ee71SNavdeep Parhar 
18054e4ee71SNavdeep Parhar /*
18154e4ee71SNavdeep Parhar  * Ingress Context field values
18254e4ee71SNavdeep Parhar  */
18354e4ee71SNavdeep Parhar #define X_UPDATESCHEDULING_TIMER	0
18454e4ee71SNavdeep Parhar #define X_UPDATESCHEDULING_COUNTER_OPTTIMER	1
18554e4ee71SNavdeep Parhar 
18654e4ee71SNavdeep Parhar #define X_UPDATEDELIVERY_NONE		0
18754e4ee71SNavdeep Parhar #define X_UPDATEDELIVERY_INTERRUPT	1
18854e4ee71SNavdeep Parhar #define X_UPDATEDELIVERY_STATUS_PAGE	2
18954e4ee71SNavdeep Parhar #define X_UPDATEDELIVERY_BOTH		3
19054e4ee71SNavdeep Parhar 
19154e4ee71SNavdeep Parhar #define X_INTERRUPTDESTINATION_PCIE	0
19254e4ee71SNavdeep Parhar #define X_INTERRUPTDESTINATION_IQ	1
19354e4ee71SNavdeep Parhar 
19454e4ee71SNavdeep Parhar #define X_QUEUEENTRYSIZE_16B		0
19554e4ee71SNavdeep Parhar #define X_QUEUEENTRYSIZE_32B		1
19654e4ee71SNavdeep Parhar #define X_QUEUEENTRYSIZE_64B		2
19754e4ee71SNavdeep Parhar #define X_QUEUEENTRYSIZE_128B		3
19854e4ee71SNavdeep Parhar 
19954e4ee71SNavdeep Parhar #define IC_SIZE_UNIT			16
20054e4ee71SNavdeep Parhar #define IC_BASEADDRESS_ALIGN		512
20154e4ee71SNavdeep Parhar 
20254e4ee71SNavdeep Parhar #define X_RSPD_TYPE_FLBUF		0
20354e4ee71SNavdeep Parhar #define X_RSPD_TYPE_CPL			1
20454e4ee71SNavdeep Parhar #define X_RSPD_TYPE_INTR		2
20554e4ee71SNavdeep Parhar 
20654e4ee71SNavdeep Parhar /*
20740bf7442SNavdeep Parhar  * Context field definitions.  This is by no means a complete list of SGE
20840bf7442SNavdeep Parhar  * Context fields.  In the vast majority of cases the firmware initializes
20940bf7442SNavdeep Parhar  * things the way they need to be set up.  But in a few small cases, we need
21040bf7442SNavdeep Parhar  * to compute new values and ship them off to the firmware to be applied to
21140bf7442SNavdeep Parhar  * the SGE Conexts ...
21240bf7442SNavdeep Parhar  */
21340bf7442SNavdeep Parhar 
21440bf7442SNavdeep Parhar /*
21540bf7442SNavdeep Parhar  * Congestion Manager Definitions.
21640bf7442SNavdeep Parhar  */
21740bf7442SNavdeep Parhar #define S_CONMCTXT_CNGTPMODE		19
21840bf7442SNavdeep Parhar #define M_CONMCTXT_CNGTPMODE		0x3
21940bf7442SNavdeep Parhar #define V_CONMCTXT_CNGTPMODE(x)		((x) << S_CONMCTXT_CNGTPMODE)
22040bf7442SNavdeep Parhar #define G_CONMCTXT_CNGTPMODE(x)  \
22140bf7442SNavdeep Parhar 	(((x) >> S_CONMCTXT_CNGTPMODE) & M_CONMCTXT_CNGTPMODE)
22240bf7442SNavdeep Parhar #define S_CONMCTXT_CNGCHMAP		0
22340bf7442SNavdeep Parhar #define M_CONMCTXT_CNGCHMAP		0xffff
22440bf7442SNavdeep Parhar #define V_CONMCTXT_CNGCHMAP(x)		((x) << S_CONMCTXT_CNGCHMAP)
22540bf7442SNavdeep Parhar #define G_CONMCTXT_CNGCHMAP(x)   \
22640bf7442SNavdeep Parhar 	(((x) >> S_CONMCTXT_CNGCHMAP) & M_CONMCTXT_CNGCHMAP)
22740bf7442SNavdeep Parhar 
22840bf7442SNavdeep Parhar #define X_CONMCTXT_CNGTPMODE_DISABLE	0
22940bf7442SNavdeep Parhar #define X_CONMCTXT_CNGTPMODE_QUEUE	1
23040bf7442SNavdeep Parhar #define X_CONMCTXT_CNGTPMODE_CHANNEL	2
23140bf7442SNavdeep Parhar #define X_CONMCTXT_CNGTPMODE_BOTH	3
23240bf7442SNavdeep Parhar 
23340bf7442SNavdeep Parhar /*
23440bf7442SNavdeep Parhar  * T5 and later support a new BAR2-based doorbell mechanism for Egress Queues.
23540bf7442SNavdeep Parhar  * The User Doorbells are each 128 bytes in length with a Simple Doorbell at
23640bf7442SNavdeep Parhar  * offsets 8x and a Write Combining single 64-byte Egress Queue Unit
23740bf7442SNavdeep Parhar  * (X_IDXSIZE_UNIT) Gather Buffer interface at offset 64.  For Ingress Queues,
23840bf7442SNavdeep Parhar  * we have a Going To Sleep register at offsets 8x+4.
23940bf7442SNavdeep Parhar  *
24040bf7442SNavdeep Parhar  * As noted above, we have many instances of the Simple Doorbell and Going To
24140bf7442SNavdeep Parhar  * Sleep registers at offsets 8x and 8x+4, respectively.  We want to use a
24240bf7442SNavdeep Parhar  * non-64-byte aligned offset for the Simple Doorbell in order to attempt to
24340bf7442SNavdeep Parhar  * avoid buffering of the writes to the Simple Doorbell and we want to use a
24440bf7442SNavdeep Parhar  * non-contiguous offset for the Going To Sleep writes in order to avoid
24540bf7442SNavdeep Parhar  * possible combining between them.
24640bf7442SNavdeep Parhar  */
24740bf7442SNavdeep Parhar #define SGE_UDB_SIZE		128
24840bf7442SNavdeep Parhar #define SGE_UDB_KDOORBELL	8
24940bf7442SNavdeep Parhar #define SGE_UDB_GTS		20
25040bf7442SNavdeep Parhar #define SGE_UDB_WCDOORBELL	64
25140bf7442SNavdeep Parhar 
25240bf7442SNavdeep Parhar /*
25354e4ee71SNavdeep Parhar  * CIM definitions.
25454e4ee71SNavdeep Parhar  * ================
25554e4ee71SNavdeep Parhar  */
25654e4ee71SNavdeep Parhar 
25754e4ee71SNavdeep Parhar /*
25854e4ee71SNavdeep Parhar  * CIM register field values.
25954e4ee71SNavdeep Parhar  */
26054e4ee71SNavdeep Parhar #define X_MBOWNER_NONE			0
26154e4ee71SNavdeep Parhar #define X_MBOWNER_FW			1
26254e4ee71SNavdeep Parhar #define X_MBOWNER_PL			2
26340bf7442SNavdeep Parhar #define X_MBOWNER_FW_DEFERRED		3
26454e4ee71SNavdeep Parhar 
265c337fa30SNavdeep Parhar /*
266c337fa30SNavdeep Parhar  * PCI-E definitions.
267c337fa30SNavdeep Parhar  * ==================
268c337fa30SNavdeep Parhar  */
269c337fa30SNavdeep Parhar 
270c337fa30SNavdeep Parhar #define X_WINDOW_SHIFT			10
271c337fa30SNavdeep Parhar #define X_PCIEOFST_SHIFT		10
272c337fa30SNavdeep Parhar 
273c337fa30SNavdeep Parhar /*
274c337fa30SNavdeep Parhar  * TP definitions.
275c337fa30SNavdeep Parhar  * ===============
276c337fa30SNavdeep Parhar  */
277c337fa30SNavdeep Parhar 
278c337fa30SNavdeep Parhar /*
279c337fa30SNavdeep Parhar  * TP_VLAN_PRI_MAP controls which subset of fields will be present in the
280c337fa30SNavdeep Parhar  * Compressed Filter Tuple for LE filters.  Each bit set in TP_VLAN_PRI_MAP
281c337fa30SNavdeep Parhar  * selects for a particular field being present.  These fields, when present
282c337fa30SNavdeep Parhar  * in the Compressed Filter Tuple, have the following widths in bits.
283c337fa30SNavdeep Parhar  */
28440bf7442SNavdeep Parhar #define S_FT_FIRST			S_FCOE
28540bf7442SNavdeep Parhar #define S_FT_LAST			S_FRAGMENTATION
28640bf7442SNavdeep Parhar 
287c337fa30SNavdeep Parhar #define W_FT_FCOE			1
288c337fa30SNavdeep Parhar #define W_FT_PORT			3
289c337fa30SNavdeep Parhar #define W_FT_VNIC_ID			17
290c337fa30SNavdeep Parhar #define W_FT_VLAN			17
291c337fa30SNavdeep Parhar #define W_FT_TOS			8
292c337fa30SNavdeep Parhar #define W_FT_PROTOCOL			8
293c337fa30SNavdeep Parhar #define W_FT_ETHERTYPE			16
294c337fa30SNavdeep Parhar #define W_FT_MACMATCH			9
295c337fa30SNavdeep Parhar #define W_FT_MPSHITTYPE			3
296c337fa30SNavdeep Parhar #define W_FT_FRAGMENTATION		1
297c337fa30SNavdeep Parhar 
298b3daa684SNavdeep Parhar #define M_FT_FCOE			((1ULL << W_FT_FCOE) - 1)
299b3daa684SNavdeep Parhar #define M_FT_PORT			((1ULL << W_FT_PORT) - 1)
300b3daa684SNavdeep Parhar #define M_FT_VNIC_ID			((1ULL << W_FT_VNIC_ID) - 1)
301b3daa684SNavdeep Parhar #define M_FT_VLAN			((1ULL << W_FT_VLAN) - 1)
302b3daa684SNavdeep Parhar #define M_FT_TOS			((1ULL << W_FT_TOS) - 1)
303b3daa684SNavdeep Parhar #define M_FT_PROTOCOL			((1ULL << W_FT_PROTOCOL) - 1)
304b3daa684SNavdeep Parhar #define M_FT_ETHERTYPE			((1ULL << W_FT_ETHERTYPE) - 1)
305b3daa684SNavdeep Parhar #define M_FT_MACMATCH			((1ULL << W_FT_MACMATCH) - 1)
306b3daa684SNavdeep Parhar #define M_FT_MPSHITTYPE			((1ULL << W_FT_MPSHITTYPE) - 1)
307b3daa684SNavdeep Parhar #define M_FT_FRAGMENTATION		((1ULL << W_FT_FRAGMENTATION) - 1)
308b3daa684SNavdeep Parhar 
309c337fa30SNavdeep Parhar /*
310c337fa30SNavdeep Parhar  * Some of the Compressed Filter Tuple fields have internal structure.  These
311c337fa30SNavdeep Parhar  * bit shifts/masks describe those structures.  All shifts are relative to the
312c337fa30SNavdeep Parhar  * base position of the fields within the Compressed Filter Tuple
313c337fa30SNavdeep Parhar  */
314c337fa30SNavdeep Parhar #define S_FT_VLAN_VLD			16
315c337fa30SNavdeep Parhar #define V_FT_VLAN_VLD(x)		((x) << S_FT_VLAN_VLD)
316c337fa30SNavdeep Parhar #define F_FT_VLAN_VLD			V_FT_VLAN_VLD(1U)
317c337fa30SNavdeep Parhar 
318c337fa30SNavdeep Parhar #define S_FT_VNID_ID_VF			0
319c337fa30SNavdeep Parhar #define M_FT_VNID_ID_VF			0x7fU
320c337fa30SNavdeep Parhar #define V_FT_VNID_ID_VF(x)		((x) << S_FT_VNID_ID_VF)
321c337fa30SNavdeep Parhar #define G_FT_VNID_ID_VF(x)		(((x) >> S_FT_VNID_ID_VF) & M_FT_VNID_ID_VF)
322c337fa30SNavdeep Parhar 
323c337fa30SNavdeep Parhar #define S_FT_VNID_ID_PF			7
324c337fa30SNavdeep Parhar #define M_FT_VNID_ID_PF			0x7U
325c337fa30SNavdeep Parhar #define V_FT_VNID_ID_PF(x)		((x) << S_FT_VNID_ID_PF)
326c337fa30SNavdeep Parhar #define G_FT_VNID_ID_PF(x)		(((x) >> S_FT_VNID_ID_PF) & M_FT_VNID_ID_PF)
327c337fa30SNavdeep Parhar 
328c337fa30SNavdeep Parhar #define S_FT_VNID_ID_VLD		16
329c337fa30SNavdeep Parhar #define V_FT_VNID_ID_VLD(x)		((x) << S_FT_VNID_ID_VLD)
330c337fa30SNavdeep Parhar #define F_FT_VNID_ID_VLD(x)		V_FT_VNID_ID_VLD(1U)
331c337fa30SNavdeep Parhar 
33254e4ee71SNavdeep Parhar #endif /* __T4_REGS_VALUES_H__ */
333