Thread (13 messages) 13 messages, 5 authors, 2022-12-01

Re: [PATCH] net: atlantic: fix check for invalid ethernet addresses

From: Brian Masney <bmasney@redhat.com>
Date: 2022-11-30 21:09:13
Also in: lkml

On Wed, Nov 30, 2022 at 08:41:29PM +0100, Andrew Lunn wrote:
On Wed, Nov 30, 2022 at 12:42:59PM -0500, Brian Masney wrote:
quoted
The Qualcomm sa8540p automotive development board (QDrive3) has an
Aquantia NIC wired over PCIe. The ethernet MAC address assigned to
all of the boards in our lab is 00:17:b6:00:00:00. The existing
check in aq_nic_is_valid_ether_addr() only checks for leading zeros
in the MAC address. Let's update the check to also check for trailing
zeros in the MAC address so that a random MAC address is assigned
in this case.

Signed-off-by: Brian Masney <bmasney@redhat.com>
---
 drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index 06508eebb585..c9c850bbc805 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -293,7 +293,8 @@ static bool aq_nic_is_valid_ether_addr(const u8 *addr)
 	/* Some engineering samples of Aquantia NICs are provisioned with a
 	 * partially populated MAC, which is still invalid.
 	 */
-	return !(addr[0] == 0 && addr[1] == 0 && addr[2] == 0);
+	return !(addr[0] == 0 && addr[1] == 0 && addr[2] == 0) &&
+		!(addr[3] == 0 && addr[4] == 0 && addr[5] == 0);
Hi Brian

is_valid_ether_addr()
aq_nic_ndev_register() already calls is_valid_ether_addr():

	if (is_valid_ether_addr(addr) &&
	    aq_nic_is_valid_ether_addr(addr)) {
		(self->ndev, addr);
	} else {
		...
	}

That won't work for this board since that function only checks that the
MAC "is not 00:00:00:00:00:00, is not a multicast address, and is not
FF:FF:FF:FF:FF:FF." The MAC address that we get on all of our boards is
00:17:b6:00:00:00.

Brian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help