Message ID | 20230614145302.902301-2-piotrx.gardocki@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ad72c4a06acc6762e84994ac2f722da7a07df34e |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | optimize procedure of changing MAC address on interface | expand |
On Wed, Jun 14, 2023 at 04:53:00PM +0200, Piotr Gardocki wrote: > In some cases it is possible for kernel to come with request > to change primary MAC address to the address that is already > set on the given interface. > > Add proper check to return fast from the function in these cases. > > An example of such case is adding an interface to bonding > channel in balance-alb mode: > modprobe bonding mode=balance-alb miimon=100 max_bonds=1 > ip link set bond0 up > ifenslave bond0 <eth> > > Signed-off-by: Piotr Gardocki <piotrx.gardocki@intel.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
diff --git a/net/core/dev.c b/net/core/dev.c index c2456b3667fe..8f1c49ab17df 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8754,6 +8754,8 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa, return -EINVAL; if (!netif_device_present(dev)) return -ENODEV; + if (!memcmp(dev->dev_addr, sa->sa_data, dev->addr_len)) + return 0; err = dev_pre_changeaddr_notify(dev, sa->sa_data, extack); if (err) return err;
In some cases it is possible for kernel to come with request to change primary MAC address to the address that is already set on the given interface. Add proper check to return fast from the function in these cases. An example of such case is adding an interface to bonding channel in balance-alb mode: modprobe bonding mode=balance-alb miimon=100 max_bonds=1 ip link set bond0 up ifenslave bond0 <eth> Signed-off-by: Piotr Gardocki <piotrx.gardocki@intel.com> --- net/core/dev.c | 2 ++ 1 file changed, 2 insertions(+)