Message ID | 20240313094400.6485-1-aleksandr.loktionov@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net,v2] i40e: fix i40e_count_filters() to count only active/new filters | expand |
Dear Aleksandr, Am 13.03.24 um 10:44 schrieb Aleksandr Loktionov: > The bug usually affects untrusted VFs, because they are limited to 18MACs, > it affects them badly, not letting to create MAC all filters. > Not stable to reproduce, it happens when VF user creates MAC filters > when other MACVLAN operations are happened in parallel. > But consequence is that VF can't receive desired traffic. > > Fix counter to be bumped only for new or active filters. > > Fixes: 621650cabee5 ("i40e: Refactoring VF MAC filters counting to make more reliable") > Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com> > --- > v1 -> v2: add explanation about the bug Thank you very much. (I personally wouldn’t break lines just because a sentence ends.) > --- > drivers/net/ethernet/intel/i40e/i40e_main.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c > index 89a3401..6010a49 100644 > --- a/drivers/net/ethernet/intel/i40e/i40e_main.c > +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c > @@ -1257,8 +1257,11 @@ int i40e_count_filters(struct i40e_vsi *vsi) > int bkt; > int cnt = 0; > > - hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) > - ++cnt; > + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { > + if (f->state == I40E_FILTER_NEW || > + f->state == I40E_FILTER_ACTIVE) > + ++cnt; > + } > > return cnt; > } Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Kind regards, Paul
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Paul Menzel > Sent: Wednesday, March 13, 2024 12:05 PM > To: Loktionov, Aleksandr <aleksandr.loktionov@intel.com> > Cc: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Kubalewski, Arkadiusz > <arkadiusz.kubalewski@intel.com>; intel-wired-lan@lists.osuosl.org; > netdev@vger.kernel.org > Subject: Re: [Intel-wired-lan] [PATCH iwl-net v2] i40e: fix i40e_count_filters() > to count only active/new filters > > Dear Aleksandr, > > > Am 13.03.24 um 10:44 schrieb Aleksandr Loktionov: > > The bug usually affects untrusted VFs, because they are limited to > > 18MACs, it affects them badly, not letting to create MAC all filters. > > Not stable to reproduce, it happens when VF user creates MAC filters > > when other MACVLAN operations are happened in parallel. > > But consequence is that VF can't receive desired traffic. > > > > Fix counter to be bumped only for new or active filters. > > > > Fixes: 621650cabee5 ("i40e: Refactoring VF MAC filters counting to > > make more reliable") > > Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> > > Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com> > > --- > > v1 -> v2: add explanation about the bug > > Thank you very much. (I personally wouldn’t break lines just because a > sentence ends.) > > > --- > > drivers/net/ethernet/intel/i40e/i40e_main.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c > > b/drivers/net/ethernet/intel/i40e/i40e_main.c > > index 89a3401..6010a49 100644 > > --- a/drivers/net/ethernet/intel/i40e/i40e_main.c > > +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c > > @@ -1257,8 +1257,11 @@ int i40e_count_filters(struct i40e_vsi *vsi) > > int bkt; > > int cnt = 0; > > > > - hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) > > - ++cnt; > > + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { > > + if (f->state == I40E_FILTER_NEW || > > + f->state == I40E_FILTER_ACTIVE) > > + ++cnt; > > + } > > > > return cnt; > > } > > Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> > > > Kind regards, > > Paul Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 89a3401..6010a49 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -1257,8 +1257,11 @@ int i40e_count_filters(struct i40e_vsi *vsi) int bkt; int cnt = 0; - hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) - ++cnt; + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { + if (f->state == I40E_FILTER_NEW || + f->state == I40E_FILTER_ACTIVE) + ++cnt; + } return cnt; }