> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Jose
> Ignacio Tornos Martinez
> Sent: Wednesday, April 29, 2026 12:24 PM
> To: [email protected]
> Cc: [email protected]; Kitszel, Przemyslaw
> <[email protected]>; Loktionov, Aleksandr
> <[email protected]>; Keller, Jacob E <[email protected]>;
> [email protected]; [email protected]; Nguyen, Anthony L
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected]; Jose Ignacio Tornos Martinez
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH net v5 1/4] iavf: return EBUSY if reset in
> progress or not ready during MAC change
> 
> When a MAC address change is requested while the VF is resetting or still
> initializing, return -EBUSY immediately instead of attempting the operation.
> 
> Additionally, during early initialization states (before __IAVF_DOWN), the PF 
> may
> be slow to respond to MAC change requests, causing long delays. Only allow MAC
> changes once the VF reaches __IAVF_DOWN state or later, when the watchdog is
> running and the VF is ready for operations.
> 
> After commit ad7c7b2172c3 ("net: hold netdev instance lock during sysfs
> operations"), MAC changes are called with the netdev lock held, so we should 
> not
> wait with the lock held during reset or initialization. This allows the 
> caller to retry
> or handle the busy state appropriately without blocking other operations.
> 
> Signed-off-by: Jose Ignacio Tornos Martinez <[email protected]>
> Reviewed-by: Przemek Kitszel <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> ---
> 
>  drivers/net/ethernet/intel/iavf/iavf_main.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c
> b/drivers/net/ethernet/intel/iavf/iavf_main.c
> index dad001abc908..67aa14350b1b 100644
> --- a/drivers/net/ethernet/intel/iavf/iavf_main.c
> +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
> @@ -1060,6 +1060,9 @@ static int iavf_set_mac(struct net_device *netdev, void
> *p)
>       struct sockaddr *addr = p;
>       int ret;
> 
> +     if (iavf_is_reset_in_progress(adapter) || adapter->state <
> __IAVF_DOWN)
> +             return -EBUSY;
> +
>       if (!is_valid_ether_addr(addr->sa_data))
>               return -EADDRNOTAVAIL;
> 
> --
> 2.53.0


Tested-by: Rafal Romanowski <[email protected]>

Reply via email to