RE: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: fix inverted ready check for VF representors

From: Holda, Patryk

Date: Thu Mar 19 2026 - 06:43:35 EST




> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@xxxxxxxxxx> On Behalf Of
> Michal Swiatkowski
> Sent: Thursday, February 12, 2026 10:47 AM
> To: Oros, Petr <poros@xxxxxxxxxx>
> Cc: netdev@xxxxxxxxxxxxxxx; Nguyen, Anthony L
> <anthony.l.nguyen@xxxxxxxxx>; Kitszel, Przemyslaw
> <przemyslaw.kitszel@xxxxxxxxx>; Andrew Lunn <andrew+netdev@xxxxxxx>;
> David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet
> <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni
> <pabeni@xxxxxxxxxx>; Michal Swiatkowski
> <michal.swiatkowski@xxxxxxxxxxxxxxx>; Drewek, Wojciech
> <wojciech.drewek@xxxxxxxxx>; Simon Horman <horms@xxxxxxxxxx>; intel-
> wired-lan@xxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [Intel-wired-lan] [PATCH iwl-net 1/2] ice: fix inverted ready check
> for VF representors
>
> On Thu, Feb 12, 2026 at 08:53:10AM +0100, Petr Oros wrote:
> > Commit 0f00a897c9fcbd ("ice: check if SF is ready in ethtool ops")
> > refactored the VF readiness check into a generic repr->ops.ready()
> > callback but implemented ice_repr_ready_vf() with inverted logic:
> >
> > return !ice_check_vf_ready_for_cfg(repr->vf);
> >
> > ice_check_vf_ready_for_cfg() returns 0 on success, so the negation
> > makes ready() return non-zero when the VF is ready. All callers treat
> > non-zero as "not ready, skip", causing ndo_get_stats64, get_drvinfo,
> > get_strings and get_ethtool_stats to always bail out in switchdev mode.
> >
> > Remove the erroneous negation. The SF variant ice_repr_ready_sf() is
> > already correct (returns !active, i.e. non-zero when not active).
> >
> > Fixes: 0f00a897c9fcbd ("ice: check if SF is ready in ethtool ops")
> > Signed-off-by: Petr Oros <poros@xxxxxxxxxx>
> > ---
> > drivers/net/ethernet/intel/ice/ice_repr.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/intel/ice/ice_repr.c
> > b/drivers/net/ethernet/intel/ice/ice_repr.c
> > index cb08746556a670..2a84f656405828 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_repr.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_repr.c
> > @@ -315,7 +315,7 @@ ice_repr_reg_netdev(struct net_device *netdev,
> > const struct net_device_ops *ops)
> >
> > static int ice_repr_ready_vf(struct ice_repr *repr) {
> > - return !ice_check_vf_ready_for_cfg(repr->vf);
> > + return ice_check_vf_ready_for_cfg(repr->vf);
> > }
> >
> > static int ice_repr_ready_sf(struct ice_repr *repr)
> > --
> > 2.52.0
> >
>
> Thanks for fixing
> Reviewed-by: Michal Swiatkowski <michal.swiatkowski@xxxxxxxxxxxxxxx>

Tested-by: Patryk Holda <patryk.holda@xxxxxxxxx>