openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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:
Msdk-6.5.16/src/bcm/esw/field.c | 11-----------
Msdk-6.5.16/src/bcm/esw/tomahawk/field.c | 12++----------
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) {