commit 1188d650e4c3dc61a5b51f864e0253e37eef83fc
parent 42d27846d0f706effeec4ce6221c168da31ed2b7
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date: Thu, 4 Apr 2019 00:04:04 -0700
SDK-175777: Set the correct offset of qual bcmFieldQualifyEtherType in stage ...
Devices: 56980_A0,56980_B0
Module: field
Symptom:
VFP ethertype does not work in intra-slice mode.
Set the correct offset of qual bcmFieldQualifyEtherType in stage lookup
for 56980 devices during qualifier initialization.
Diffstat:
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/sdk-6.5.16/src/bcm/esw/tomahawk/field.c b/sdk-6.5.16/src/bcm/esw/tomahawk/field.c
@@ -7514,8 +7514,16 @@ _field_th_lookup_qualifiers_init(int unit, _field_stage_t *stage_fc)
_bcmFieldSliceSelFpf3, 0, f3_offset + 13, 3);
}
- _FP_QUAL_ADD(unit, stage_fc, bcmFieldQualifyEtherType,
+#if defined (BCM_TOMAHAWK3_SUPPORT)
+ if (SOC_IS_TOMAHAWK3(unit)) {
+ _FP_QUAL_ADD(unit, stage_fc, bcmFieldQualifyEtherType,
+ _bcmFieldSliceSelFpf3, 0, f3_offset + 0, 16);
+ } else
+#endif
+ {
+ _FP_QUAL_ADD(unit, stage_fc, bcmFieldQualifyEtherType,
_bcmFieldSliceSelFpf3, 0, f3_offset + 16, 16);
+ }
/* F3_1 */
_FP_QUAL_TWO_SLICE_SEL_ADD(unit, stage_fc, bcmFieldQualifyInnerL4DstPort,
@@ -7784,13 +7792,27 @@ _field_th_lookup_qualifiers_init(int unit, _field_stage_t *stage_fc)
_bcmFieldSliceSelFpf1, 0,
_bcmFieldSliceIpHeaderSelect, 0, f1_offset + 8,
8);
-
+#if defined (BCM_TOMAHAWK3_SUPPORT)
+ if (soc_feature(unit, soc_feature_th3_style_fp)) {
+ _FP_QUAL_INTRASLICE_ADD(unit, stage_fc, bcmFieldQualifyInterfaceClassL3,
+ _bcmFieldSliceSelFpf1, 0,
+ _bcmFieldSliceIpHeaderSelect, 0, f1_offset + 16,
+ 12);
+ _FP_QUAL_INTRASLICE_ADD(unit, stage_fc, bcmFieldQualifyEtherType,
+ _bcmFieldSliceSelFpf1, 0,
+ _bcmFieldSliceIpHeaderSelect, 0, f1_offset + 28,
+ 16);
+ } else
+#endif
+#if defined (BCM_TRIDENT3_SUPPORT)
if (soc_feature(unit, soc_feature_td3_style_fp)) {
_FP_QUAL_INTRASLICE_ADD(unit, stage_fc, bcmFieldQualifyEtherType,
_bcmFieldSliceSelFpf1, 0,
_bcmFieldSliceIpHeaderSelect, 0, f1_offset + 16,
16);
- } else {
+ } else
+#endif
+ {
_FP_QUAL_INTRASLICE_ADD(unit, stage_fc, bcmFieldQualifyInterfaceClassL3,
_bcmFieldSliceSelFpf1, 0,
_bcmFieldSliceIpHeaderSelect, 0, f1_offset + 16,