1 /* SPDX-License-Identifier: GPL-2.0+ */
3 #ifndef __LAN966X_IFH_H__
4 #define __LAN966X_IFH_H__
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)
11 #define IFH_LEN_BYTES (IFH_LEN * sizeof(u32))
13 /* Timestamp for frame */
14 #define IFH_POS_TIMESTAMP 192
16 /* Bypass analyzer with a prefilled IFH */
17 #define IFH_POS_BYPASS 191
19 /* Masqueraded injection with masq_port defining logical source port */
20 #define IFH_POS_MASQ 190
22 /* Masqueraded port number for injection */
23 #define IFH_POS_MASQ_PORT 186
25 /* Frame length (*) */
26 #define IFH_POS_LEN 178
28 /* Cell filling mode. Full(0),Etype(1), LlctOpt(2), Llct(3) */
29 #define IFH_POS_WRDMODE 176
31 /* Frame has 16 bits rtag removed compared to line data */
32 #define IFH_POS_RTAG48 175
34 /* Frame has a redundancy tag */
35 #define IFH_POS_HAS_RED_TAG 174
37 /* Frame has been cut through forwarded (*) */
38 #define IFH_POS_CUTTHRU 173
40 /* Rewriter command */
41 #define IFH_POS_REW_CMD 163
43 /* Enable OAM-related rewriting. PDU_TYPE encodes OAM type. */
44 #define IFH_POS_REW_OAM 162
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).
49 #define IFH_POS_PDU_TYPE 158
51 /* Update FCS before transmission */
52 #define IFH_POS_FCS_UPD 157
54 /* Classified DSCP value of frame */
55 #define IFH_POS_DSCP 151
57 /* Yellow indication */
58 #define IFH_POS_DP 150
60 /* Process in RTE/inbound */
61 #define IFH_POS_RTE_INB_UPDATE 149
63 /* Number of tags to pop from frame */
64 #define IFH_POS_POP_CNT 147
66 /* Number of tags in front of the ethertype */
67 #define IFH_POS_ETYPE_OFS 145
69 /* Logical source port of frame (*) */
70 #define IFH_POS_SRCPORT 141
72 /* Sequence number in redundancy tag */
73 #define IFH_POS_SEQ_NUM 120
75 /* Stagd flag and classified TCI of frame (PCP/DEI/VID) */
76 #define IFH_POS_TCI 103
78 /* Classified internal priority for queuing */
79 #define IFH_POS_QOS_CLASS 100
81 /* Bit mask with eight cpu copy classes */
82 #define IFH_POS_CPUQ 92
84 /* Relearn + learn flags (*) */
85 #define IFH_POS_LEARN_FLAGS 90
87 /* SFLOW identifier for frame (0-8: Tx port, 9: Rx sampling, 15: No sampling) */
88 #define IFH_POS_SFLOW_ID 86
90 /* Set if an ACL/S2 rule was hit (*).
91 * Super priority: acl_hit=0 and acl_hit(4)=1.
93 #define IFH_POS_ACL_HIT 85
95 /* S2 rule index hit (*) */
96 #define IFH_POS_ACL_IDX 79
98 /* ISDX as classified by S1 */
99 #define IFH_POS_ISDX 71
101 /* Destination ports for frame */
102 #define IFH_POS_DSTS 62
104 /* Storm policer to be applied: None/Uni/Multi/Broad (*) */
105 #define IFH_POS_FLOOD 60
107 /* Redundancy tag operation */
108 #define IFH_POS_SEQ_OP 58
110 /* Classified internal priority for resourcemgt, tagging etc */
111 #define IFH_POS_IPV 55
113 /* Frame is for AFI use */
114 #define IFH_POS_AFI 54
116 /* Internal aging value (*) */
117 #define IFH_POS_AGED 52
120 #define IFH_POS_RTP_ID 42
123 #define IFH_POS_RTP_SUBID 41
125 /* Profinet DataStatus or opcua GroupVersion MSB */
126 #define IFH_POS_PN_DATA_STATUS 33
128 /* Profinet transfer status (1 iff the status is 0) */
129 #define IFH_POS_PN_TRANSF_STATUS_ZERO 32
131 /* Profinet cycle counter or opcua NetworkMessageNumber */
132 #define IFH_POS_PN_CC 16
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
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
174 #endif /* __LAN966X_IFH_H__ */