commit d0423285757e4eaf2ee1716a7b175d1643528868
parent 7dbeb9c32082dd14b3b29f431a8ee486c30138dd
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date: Tue, 5 Mar 2019 04:01:05 -0800
SDK-172489: Updated qualifier delete to validate if the given qualifier is a ...
Devices: 56980_A0,56980_B0
Module: field
Symptom:
Removing FP entry qualifier corrupts InPorts on TH3 devices
Updated qualifier delete to validate if the given qualifier is a pbmp
related qualifier instead of validating whether the group qset has any
pbmp related qualifier.
Diffstat:
2 files changed, 2 insertions(+), 21 deletions(-)
diff --git a/sdk-6.5.16/src/bcm/esw/field.c b/sdk-6.5.16/src/bcm/esw/field.c
@@ -4958,9 +4958,6 @@ bcm_esw_field_qualifier_delete(int unit, bcm_field_entry_t entry,
_bcm_field_qual_data_t q_mask; /* Qualifier match mask. */
_field_entry_t *f_ent; /* Field entry structure. */
int rv; /* Operation return status. */
-#if defined(BCM_RAPTOR_SUPPORT) || defined(BCM_TRX_SUPPORT)
- bcm_pbmp_t valid_pbm; /* Valid Bitmap */
-#endif
sal_memset(q_data, 0, sizeof(_bcm_field_qual_data_t));
sal_memset(q_mask, 0, sizeof(_bcm_field_qual_data_t));
@@ -5010,14 +5007,6 @@ bcm_esw_field_qualifier_delete(int unit, bcm_field_entry_t entry,
case bcmFieldQualifyInPorts:
BCM_PBMP_CLEAR(f_ent->pbmp.data);
BCM_PBMP_CLEAR(f_ent->pbmp.mask);
- if (qual_id == bcmFieldQualifyInPorts) {
- rv = _bcm_field_valid_pbmp_get(unit, &valid_pbm);
- if (BCM_FAILURE(rv)) {
- return (rv);
- }
- BCM_PBMP_ASSIGN(f_ent->pbmp.data, f_ent->group->pbmp);
- BCM_PBMP_ASSIGN(f_ent->pbmp.mask, valid_pbm);
- }
break;
#endif /* BCM_RAPTOR_SUPPORT || BCM_TRX_SUPPORT */
#if defined(BCM_FIREBOLT2_SUPPORT)
diff --git a/sdk-6.5.16/src/bcm/esw/tomahawk/field.c b/sdk-6.5.16/src/bcm/esw/tomahawk/field.c
@@ -32687,7 +32687,6 @@ _bcm_field_th_qualifier_delete(int unit, bcm_field_entry_t entry,
_bcm_field_qual_data_t q_mask; /* Qualifier match mask. */
int rv = BCM_E_NONE; /* Operation return status. */
_field_entry_t *f_ent; /* Field Entry */
- bcm_pbmp_t valid_pbm; /* Valid Bitmap */
sal_memset(q_data, 0, sizeof(_bcm_field_qual_data_t));
sal_memset(q_mask, 0, sizeof(_bcm_field_qual_data_t));
@@ -32696,17 +32695,10 @@ _bcm_field_th_qualifier_delete(int unit, bcm_field_entry_t entry,
rv = _field_entry_get(unit, entry, _FP_ENTRY_PRIMARY, &f_ent);
BCM_IF_ERROR_RETURN(rv);
- if (_BCM_FIELD_QSET_PBMP_TEST(f_ent->group->qset)) {
+ if ((BCM_FIELD_QSET_TEST(f_ent->group->qset, qual_id)) &&
+ (_BCM_FIELD_IS_PBMP_QUALIFIER(qual_id))) {
BCM_PBMP_CLEAR(f_ent->pbmp.data);
BCM_PBMP_CLEAR(f_ent->pbmp.mask);
- if (BCM_FIELD_QSET_TEST(f_ent->group->qset, bcmFieldQualifyInPorts)) {
- rv = _bcm_field_valid_pbmp_get(unit, &valid_pbm);
- if (BCM_FAILURE(rv)) {
- return (rv);
- }
- BCM_PBMP_ASSIGN(f_ent->pbmp.data, f_ent->group->pbmp);
- BCM_PBMP_ASSIGN(f_ent->pbmp.mask, valid_pbm);
- }
}
if (_BCM_FIELD_IS_PRESEL_ENTRY(entry) == TRUE) {