1/* SPDX-License-Identifier: GPL-2.0+ */
2
3#ifndef __LAN966X_IFH_H__
4#define __LAN966X_IFH_H__
5
6/* Fields with description (*) should just be cleared upon injection
7 * IFH is transmitted MSByte first (Highest bit pos sent as MSB of first byte)
8 */
9
10#define IFH_LEN 7
11#define IFH_LEN_BYTES (IFH_LEN * sizeof(u32))
12
13/* Timestamp for frame */
14#define IFH_POS_TIMESTAMP 192
15
16/* Bypass analyzer with a prefilled IFH */
17#define IFH_POS_BYPASS 191
18
19/* Masqueraded injection with masq_port defining logical source port */
20#define IFH_POS_MASQ 190
21
22/* Masqueraded port number for injection */
23#define IFH_POS_MASQ_PORT 186
24
25/* Frame length (*) */
26#define IFH_POS_LEN 178
27
28/* Cell filling mode. Full(0),Etype(1), LlctOpt(2), Llct(3) */
29#define IFH_POS_WRDMODE 176
30
31/* Frame has 16 bits rtag removed compared to line data */
32#define IFH_POS_RTAG48 175
33
34/* Frame has a redundancy tag */
35#define IFH_POS_HAS_RED_TAG 174
36
37/* Frame has been cut through forwarded (*) */
38#define IFH_POS_CUTTHRU 173
39
40/* Rewriter command */
41#define IFH_POS_REW_CMD 163
42
43/* Enable OAM-related rewriting. PDU_TYPE encodes OAM type. */
44#define IFH_POS_REW_OAM 162
45
46/* PDU type. Encoding: (0-NONE, 1-Y1731_CCM, 2-MRP_TST, 3-MRP_ITST, 4-DLR_BCN,
47 * 5-DLR_ADV, 6-RTE_NULL_INJ, 7-IPV4, 8-IPV6, 9-Y1731_NON_CCM).
48 */
49#define IFH_POS_PDU_TYPE 158
50
51/* Update FCS before transmission */
52#define IFH_POS_FCS_UPD 157
53
54/* Classified DSCP value of frame */
55#define IFH_POS_DSCP 151
56
57/* Yellow indication */
58#define IFH_POS_DP 150
59
60/* Process in RTE/inbound */
61#define IFH_POS_RTE_INB_UPDATE 149
62
63/* Number of tags to pop from frame */
64#define IFH_POS_POP_CNT 147
65
66/* Number of tags in front of the ethertype */
67#define IFH_POS_ETYPE_OFS 145
68
69/* Logical source port of frame (*) */
70#define IFH_POS_SRCPORT 141
71
72/* Sequence number in redundancy tag */
73#define IFH_POS_SEQ_NUM 120
74
75/* Stagd flag and classified TCI of frame (PCP/DEI/VID) */
76#define IFH_POS_TCI 103
77
78/* Classified internal priority for queuing */
79#define IFH_POS_QOS_CLASS 100
80
81/* Bit mask with eight cpu copy classses */
82#define IFH_POS_CPUQ 92
83
84/* Relearn + learn flags (*) */
85#define IFH_POS_LEARN_FLAGS 90
86
87/* SFLOW identifier for frame (0-8: Tx port, 9: Rx sampling, 15: No sampling) */
88#define IFH_POS_SFLOW_ID 86
89
90/* Set if an ACL/S2 rule was hit (*).
91 * Super priority: acl_hit=0 and acl_hit(4)=1.
92 */
93#define IFH_POS_ACL_HIT 85
94
95/* S2 rule index hit (*) */
96#define IFH_POS_ACL_IDX 79
97
98/* ISDX as classified by S1 */
99#define IFH_POS_ISDX 71
100
101/* Destination ports for frame */
102#define IFH_POS_DSTS 62
103
104/* Storm policer to be applied: None/Uni/Multi/Broad (*) */
105#define IFH_POS_FLOOD 60
106
107/* Redundancy tag operation */
108#define IFH_POS_SEQ_OP 58
109
110/* Classified internal priority for resourcemgt, tagging etc */
111#define IFH_POS_IPV 55
112
113/* Frame is for AFI use */
114#define IFH_POS_AFI 54
115
116/* Internal aging value (*) */
117#define IFH_POS_AGED 52
118
119/* RTP Identifier */
120#define IFH_POS_RTP_ID 42
121
122/* RTP MRPD flow */
123#define IFH_POS_RTP_SUBID 41
124
125/* Profinet DataStatus or opcua GroupVersion MSB */
126#define IFH_POS_PN_DATA_STATUS 33
127
128/* Profinet transfer status (1 iff the status is 0) */
129#define IFH_POS_PN_TRANSF_STATUS_ZERO 32
130
131/* Profinet cycle counter or opcua NetworkMessageNumber */
132#define IFH_POS_PN_CC 16
133
134#define IFH_WID_TIMESTAMP 32
135#define IFH_WID_BYPASS 1
136#define IFH_WID_MASQ 1
137#define IFH_WID_MASQ_PORT 4
138#define IFH_WID_LEN 14
139#define IFH_WID_WRDMODE 2
140#define IFH_WID_RTAG48 1
141#define IFH_WID_HAS_RED_TAG 1
142#define IFH_WID_CUTTHRU 1
143#define IFH_WID_REW_CMD 10
144#define IFH_WID_REW_OAM 1
145#define IFH_WID_PDU_TYPE 4
146#define IFH_WID_FCS_UPD 1
147#define IFH_WID_DSCP 6
148#define IFH_WID_DP 1
149#define IFH_WID_RTE_INB_UPDATE 1
150#define IFH_WID_POP_CNT 2
151#define IFH_WID_ETYPE_OFS 2
152#define IFH_WID_SRCPORT 4
153#define IFH_WID_SEQ_NUM 16
154#define IFH_WID_TCI 17
155#define IFH_WID_QOS_CLASS 3
156#define IFH_WID_CPUQ 8
157#define IFH_WID_LEARN_FLAGS 2
158#define IFH_WID_SFLOW_ID 4
159#define IFH_WID_ACL_HIT 1
160#define IFH_WID_ACL_IDX 6
161#define IFH_WID_ISDX 8
162#define IFH_WID_DSTS 9
163#define IFH_WID_FLOOD 2
164#define IFH_WID_SEQ_OP 2
165#define IFH_WID_IPV 3
166#define IFH_WID_AFI 1
167#define IFH_WID_AGED 2
168#define IFH_WID_RTP_ID 10
169#define IFH_WID_RTP_SUBID 1
170#define IFH_WID_PN_DATA_STATUS 8
171#define IFH_WID_PN_TRANSF_STATUS_ZERO 1
172#define IFH_WID_PN_CC 16
173
174#endif /* __LAN966X_IFH_H__ */
175

source code of linux/drivers/net/ethernet/microchip/lan966x/lan966x_ifh.h