> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-boun...@osuosl.org> On Behalf Of Jacob > Keller > Sent: Wednesday, May 8, 2024 11:40 PM > To: Intel Wired LAN <intel-wired-...@lists.osuosl.org> > Cc: Keller, Jacob E <jacob.e.kel...@intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-net] ice: fix accounting if a VLAN > already exists > > The ice_vsi_add_vlan() function is used to add a VLAN filter for the target > VSI. This function prepares a filter in the switch table for the given VSI. > If it succeeds, the vsi->num_vlan counter is incremented. > > It is not considered an error to add a VLAN which already exists in the > switch table, so the function explicitly checks and ignores -EEXIST. The > vsi->num_vlan counter is still incremented. > > This seems incorrect, as it means we can double-count in the case where the > same VLAN is added twice by the caller. The actual table will have one less > filter than the count. > > The ice_vsi_del_vlan() function similarly checks and handles the -ENOENT > condition for when deleting a filter that doesn't exist. This flow only > decrements the vsi->num_vlan if it actually deleted a filter. > > The vsi->num_vlan counter is used only in a few places, primarily related to > tracking the number of non-zero VLANs. If the vsi->num_vlans gets out of > sync, then ice_vsi_num_non_zero_vlans() will incorrectly report more VLANs > than are present, and ice_vsi_has_non_zero_vlans() could return true > potentially in cases where there are only VLAN 0 filters left. > > Fix this by only incrementing the vsi->num_vlan in the case where we actually > added an entry, and not in the case where the entry already existed. > > Fixes: a1ffafb0b4a4 ("ice: Support configuring the device to Double VLAN > Mode") > Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com> > --- > drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) >
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pu...@intel.com> (A Contingent worker at Intel)