> -----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]>
