162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#ifndef __LAN966X_IFH_H__
462306a36Sopenharmony_ci#define __LAN966X_IFH_H__
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/* Fields with description (*) should just be cleared upon injection
762306a36Sopenharmony_ci * IFH is transmitted MSByte first (Highest bit pos sent as MSB of first byte)
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define IFH_LEN                      7
1162306a36Sopenharmony_ci#define IFH_LEN_BYTES                (IFH_LEN * sizeof(u32))
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/* Timestamp for frame */
1462306a36Sopenharmony_ci#define IFH_POS_TIMESTAMP            192
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci/* Bypass analyzer with a prefilled IFH */
1762306a36Sopenharmony_ci#define IFH_POS_BYPASS               191
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci/* Masqueraded injection with masq_port defining logical source port */
2062306a36Sopenharmony_ci#define IFH_POS_MASQ                 190
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* Masqueraded port number for injection */
2362306a36Sopenharmony_ci#define IFH_POS_MASQ_PORT            186
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci/* Frame length (*) */
2662306a36Sopenharmony_ci#define IFH_POS_LEN                  178
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci/* Cell filling mode. Full(0),Etype(1), LlctOpt(2), Llct(3) */
2962306a36Sopenharmony_ci#define IFH_POS_WRDMODE              176
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/* Frame has 16 bits rtag removed compared to line data */
3262306a36Sopenharmony_ci#define IFH_POS_RTAG48               175
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci/* Frame has a redundancy tag */
3562306a36Sopenharmony_ci#define IFH_POS_HAS_RED_TAG          174
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci/* Frame has been cut through forwarded (*) */
3862306a36Sopenharmony_ci#define IFH_POS_CUTTHRU              173
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/* Rewriter command */
4162306a36Sopenharmony_ci#define IFH_POS_REW_CMD              163
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci/* Enable OAM-related rewriting. PDU_TYPE encodes OAM type. */
4462306a36Sopenharmony_ci#define IFH_POS_REW_OAM              162
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci/* PDU type. Encoding: (0-NONE, 1-Y1731_CCM, 2-MRP_TST, 3-MRP_ITST, 4-DLR_BCN,
4762306a36Sopenharmony_ci * 5-DLR_ADV, 6-RTE_NULL_INJ, 7-IPV4, 8-IPV6, 9-Y1731_NON_CCM).
4862306a36Sopenharmony_ci */
4962306a36Sopenharmony_ci#define IFH_POS_PDU_TYPE             158
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci/* Update FCS before transmission */
5262306a36Sopenharmony_ci#define IFH_POS_FCS_UPD              157
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci/* Classified DSCP value of frame */
5562306a36Sopenharmony_ci#define IFH_POS_DSCP                 151
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci/* Yellow indication */
5862306a36Sopenharmony_ci#define IFH_POS_DP                   150
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci/* Process in RTE/inbound */
6162306a36Sopenharmony_ci#define IFH_POS_RTE_INB_UPDATE       149
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/* Number of tags to pop from frame */
6462306a36Sopenharmony_ci#define IFH_POS_POP_CNT              147
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci/* Number of tags in front of the ethertype */
6762306a36Sopenharmony_ci#define IFH_POS_ETYPE_OFS            145
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci/* Logical source port of frame (*) */
7062306a36Sopenharmony_ci#define IFH_POS_SRCPORT              141
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci/* Sequence number in redundancy tag */
7362306a36Sopenharmony_ci#define IFH_POS_SEQ_NUM              120
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci/* Stagd flag and classified TCI of frame (PCP/DEI/VID) */
7662306a36Sopenharmony_ci#define IFH_POS_TCI                  103
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci/* Classified internal priority for queuing */
7962306a36Sopenharmony_ci#define IFH_POS_QOS_CLASS            100
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci/* Bit mask with eight cpu copy classses */
8262306a36Sopenharmony_ci#define IFH_POS_CPUQ                 92
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci/* Relearn + learn flags (*) */
8562306a36Sopenharmony_ci#define IFH_POS_LEARN_FLAGS          90
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci/* SFLOW identifier for frame (0-8: Tx port, 9: Rx sampling, 15: No sampling) */
8862306a36Sopenharmony_ci#define IFH_POS_SFLOW_ID             86
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci/* Set if an ACL/S2 rule was hit (*).
9162306a36Sopenharmony_ci * Super priority: acl_hit=0 and acl_hit(4)=1.
9262306a36Sopenharmony_ci */
9362306a36Sopenharmony_ci#define IFH_POS_ACL_HIT              85
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci/* S2 rule index hit (*) */
9662306a36Sopenharmony_ci#define IFH_POS_ACL_IDX              79
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci/* ISDX as classified by S1 */
9962306a36Sopenharmony_ci#define IFH_POS_ISDX                 71
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci/* Destination ports for frame */
10262306a36Sopenharmony_ci#define IFH_POS_DSTS                 62
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci/* Storm policer to be applied: None/Uni/Multi/Broad (*) */
10562306a36Sopenharmony_ci#define IFH_POS_FLOOD                60
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci/* Redundancy tag operation */
10862306a36Sopenharmony_ci#define IFH_POS_SEQ_OP               58
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci/* Classified internal priority for resourcemgt, tagging etc */
11162306a36Sopenharmony_ci#define IFH_POS_IPV                  55
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci/* Frame is for AFI use */
11462306a36Sopenharmony_ci#define IFH_POS_AFI                  54
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci/* Internal aging value (*) */
11762306a36Sopenharmony_ci#define IFH_POS_AGED                 52
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci/* RTP Identifier */
12062306a36Sopenharmony_ci#define IFH_POS_RTP_ID               42
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci/* RTP MRPD flow */
12362306a36Sopenharmony_ci#define IFH_POS_RTP_SUBID            41
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci/* Profinet DataStatus or opcua GroupVersion MSB */
12662306a36Sopenharmony_ci#define IFH_POS_PN_DATA_STATUS       33
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci/* Profinet transfer status (1 iff the status is 0) */
12962306a36Sopenharmony_ci#define IFH_POS_PN_TRANSF_STATUS_ZERO 32
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci/* Profinet cycle counter or opcua NetworkMessageNumber */
13262306a36Sopenharmony_ci#define IFH_POS_PN_CC                16
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci#define IFH_WID_TIMESTAMP            32
13562306a36Sopenharmony_ci#define IFH_WID_BYPASS               1
13662306a36Sopenharmony_ci#define IFH_WID_MASQ                 1
13762306a36Sopenharmony_ci#define IFH_WID_MASQ_PORT            4
13862306a36Sopenharmony_ci#define IFH_WID_LEN                  14
13962306a36Sopenharmony_ci#define IFH_WID_WRDMODE              2
14062306a36Sopenharmony_ci#define IFH_WID_RTAG48               1
14162306a36Sopenharmony_ci#define IFH_WID_HAS_RED_TAG          1
14262306a36Sopenharmony_ci#define IFH_WID_CUTTHRU              1
14362306a36Sopenharmony_ci#define IFH_WID_REW_CMD              10
14462306a36Sopenharmony_ci#define IFH_WID_REW_OAM              1
14562306a36Sopenharmony_ci#define IFH_WID_PDU_TYPE             4
14662306a36Sopenharmony_ci#define IFH_WID_FCS_UPD              1
14762306a36Sopenharmony_ci#define IFH_WID_DSCP                 6
14862306a36Sopenharmony_ci#define IFH_WID_DP                   1
14962306a36Sopenharmony_ci#define IFH_WID_RTE_INB_UPDATE       1
15062306a36Sopenharmony_ci#define IFH_WID_POP_CNT              2
15162306a36Sopenharmony_ci#define IFH_WID_ETYPE_OFS            2
15262306a36Sopenharmony_ci#define IFH_WID_SRCPORT              4
15362306a36Sopenharmony_ci#define IFH_WID_SEQ_NUM              16
15462306a36Sopenharmony_ci#define IFH_WID_TCI                  17
15562306a36Sopenharmony_ci#define IFH_WID_QOS_CLASS            3
15662306a36Sopenharmony_ci#define IFH_WID_CPUQ                 8
15762306a36Sopenharmony_ci#define IFH_WID_LEARN_FLAGS          2
15862306a36Sopenharmony_ci#define IFH_WID_SFLOW_ID             4
15962306a36Sopenharmony_ci#define IFH_WID_ACL_HIT              1
16062306a36Sopenharmony_ci#define IFH_WID_ACL_IDX              6
16162306a36Sopenharmony_ci#define IFH_WID_ISDX                 8
16262306a36Sopenharmony_ci#define IFH_WID_DSTS                 9
16362306a36Sopenharmony_ci#define IFH_WID_FLOOD                2
16462306a36Sopenharmony_ci#define IFH_WID_SEQ_OP               2
16562306a36Sopenharmony_ci#define IFH_WID_IPV                  3
16662306a36Sopenharmony_ci#define IFH_WID_AFI                  1
16762306a36Sopenharmony_ci#define IFH_WID_AGED                 2
16862306a36Sopenharmony_ci#define IFH_WID_RTP_ID               10
16962306a36Sopenharmony_ci#define IFH_WID_RTP_SUBID            1
17062306a36Sopenharmony_ci#define IFH_WID_PN_DATA_STATUS       8
17162306a36Sopenharmony_ci#define IFH_WID_PN_TRANSF_STATUS_ZERO 1
17262306a36Sopenharmony_ci#define IFH_WID_PN_CC                16
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci#endif /* __LAN966X_IFH_H__ */
175