diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-06-15 22:54:55 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-06-15 22:54:56 -0700 |
commit | 7deb0c3c24c474e0b79ea03f965b91c9cb1ba08f (patch) | |
tree | 537b64ce7dfc033d6961c43efa1f70b5710c206e | |
parent | 8f72fb1578a910571b3f25457e3b7855edfac6cf (diff) | |
parent | 96868cca7971a5a3887717fdacd44b281fb87cc9 (diff) |
Merge branch 'optimize-procedure-of-changing-mac-address-on-interface'
Piotr Gardocki says:
====================
optimize procedure of changing MAC address on interface
The first patch adds an if statement in core to skip early when
the MAC address is not being changes.
The remaining patches remove such checks from Intel drivers
as they're redundant at this point.
====================
Link: https://lore.kernel.org/r/20230614145302.902301-1-piotrx.gardocki@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_main.c | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ice/ice_main.c | 5 | ||||
-rw-r--r-- | net/core/dev.c | 2 |
3 files changed, 2 insertions, 11 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index b847bd105b16..29ad1797adce 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -1788,12 +1788,6 @@ static int i40e_set_mac(struct net_device *netdev, void *p) if (!is_valid_ether_addr(addr->sa_data)) return -EADDRNOTAVAIL; - if (ether_addr_equal(netdev->dev_addr, addr->sa_data)) { - netdev_info(netdev, "already using mac address %pM\n", - addr->sa_data); - return 0; - } - if (test_bit(__I40E_DOWN, pf->state) || test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state)) return -EADDRNOTAVAIL; diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c index a0283b5bf65f..65bf399a0efc 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -5624,11 +5624,6 @@ static int ice_set_mac_address(struct net_device *netdev, void *pi) if (!is_valid_ether_addr(mac)) return -EADDRNOTAVAIL; - if (ether_addr_equal(netdev->dev_addr, mac)) { - netdev_dbg(netdev, "already using mac %pM\n", mac); - return 0; - } - if (test_bit(ICE_DOWN, pf->state) || ice_is_reset_in_progress(pf->state)) { netdev_err(netdev, "can't set mac %pM. device not ready\n", diff --git a/net/core/dev.c b/net/core/dev.c index 63abb0463c24..e4ff0adf5523 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8781,6 +8781,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; |