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;
-       err = ops->ndo_set_mac_address(dev, sa);
-       if (err)
-               return err;
+       if (memcmp(dev->dev_addr, sa->sa_data, dev->addr_len)) {
+               err = ops->ndo_set_mac_address(dev, sa);
+               if (err)
+                       return err;
+       }
        dev->addr_assign_type = NET_ADDR_SET;
        call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
        add_device_randomness(dev->dev_addr, dev->addr_len);