Commit 58712ef9 authored by Michael Chan's avatar Michael Chan Committed by David S. Miller

[TG3]: Reset chip when changing MAC address

Do the full chip reset when changing MAC address if ASF is enabled.

ASF sometimes uses a different MAC address than the driver. Without
the reset, the ASF MAC address may be overwritten when the driver's
MAC address is changed.
Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c424cb24
...@@ -5732,9 +5732,23 @@ static int tg3_set_mac_addr(struct net_device *dev, void *p) ...@@ -5732,9 +5732,23 @@ static int tg3_set_mac_addr(struct net_device *dev, void *p)
if (!netif_running(dev)) if (!netif_running(dev))
return 0; return 0;
spin_lock_bh(&tp->lock); if (tp->tg3_flags & TG3_FLAG_ENABLE_ASF) {
__tg3_set_mac_addr(tp); /* Reset chip so that ASF can re-init any MAC addresses it
spin_unlock_bh(&tp->lock); * needs.
*/
tg3_netif_stop(tp);
tg3_full_lock(tp, 1);
tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
tg3_init_hw(tp);
tg3_netif_start(tp);
tg3_full_unlock(tp);
} else {
spin_lock_bh(&tp->lock);
__tg3_set_mac_addr(tp);
spin_unlock_bh(&tp->lock);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment