70198d2b84
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
51 lines
2.3 KiB
Diff
51 lines
2.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
|
|
Date: Wed, 3 Apr 2024 15:21:58 +0200
|
|
Subject: [PATCH] net: usb: ax88179_178a: avoid the interface always configured
|
|
as random address
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
After the commit d2689b6a86b9 ("net: usb: ax88179_178a: avoid two
|
|
consecutive device resets"), reset is not executed from bind operation and
|
|
mac address is not read from the device registers or the devicetree at that
|
|
moment. Since the check to configure if the assigned mac address is random
|
|
or not for the interface, happens after the bind operation from
|
|
usbnet_probe, the interface keeps configured as random address, although the
|
|
address is correctly read and set during open operation (the only reset
|
|
now).
|
|
|
|
In order to keep only one reset for the device and to avoid the interface
|
|
always configured as random address, after reset, configure correctly the
|
|
suitable field from the driver, if the mac address is read successfully from
|
|
the device registers or the devicetree. Take into account if a locally
|
|
administered address (random) was previously stored.
|
|
|
|
cc: stable@vger.kernel.org # 6.6+
|
|
Fixes: d2689b6a86b9 ("net: usb: ax88179_178a: avoid two consecutive device resets")
|
|
Reported-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
|
|
Reviewed-by: Simon Horman <horms@kernel.org>
|
|
Link: https://lore.kernel.org/r/20240403132158.344838-1-jtornosm@redhat.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
(cherry picked from commit 2e91bb99b9d4f756e92e83c4453f894dda220f09)
|
|
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
|
|
---
|
|
drivers/net/usb/ax88179_178a.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c
|
|
index d837c1887416..e0e9b4c53cb0 100644
|
|
--- a/drivers/net/usb/ax88179_178a.c
|
|
+++ b/drivers/net/usb/ax88179_178a.c
|
|
@@ -1273,6 +1273,8 @@ static void ax88179_get_mac_addr(struct usbnet *dev)
|
|
|
|
if (is_valid_ether_addr(mac)) {
|
|
eth_hw_addr_set(dev->net, mac);
|
|
+ if (!is_local_ether_addr(mac))
|
|
+ dev->net->addr_assign_type = NET_ADDR_PERM;
|
|
} else {
|
|
netdev_info(dev->net, "invalid MAC address, using random\n");
|
|
eth_hw_addr_random(dev->net);
|