kern/60592: random Mac address generation in genet Ethernet driver causes problems

"[email protected] via gnats" <[email protected]>
Newsgroups gmane.os.netbsd.bugs
Message-ID <[email protected]>
>Number:         60592
>Category:       kern
>Synopsis:       random Mac address generation in genet Ethernet driver causes problems
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 14 21:50:04 +0000 2026
>Originator:     Emmanuel
>Release:        NetBSD 11
>Organization:
NetBSD
>Environment:
arm aarch64
>Description:
https://mail-index.netbsd.org/port-arm/2026/07/26/msg009640.html

when generating random Mac addresses, our unicast bit is supposed to set to 0 and 
locally administered bit to 1. but the extraction code shifts the unicast and administered bits away

so this causes problems sometimes on machines using the genet ethernet card. 
>How-To-Repeat:
connect your genet network interface to any network.
>Fix:
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/bcmgenet.c,v
retrieving revision 1.23
diff -u -r1.23 bcmgenet.c
--- sys/dev/ic/bcmgenet.c       4 Oct 2025 04:44:20 -0000       1.23
+++ sys/dev/ic/bcmgenet.c       14 Aug 2026 21:44:19 -0000
@@ -974,11 +974,11 @@

        if (maclo == 0 && machi == 0) {
                /* Create one */
-               maclo = 0x00f2 | (cprng_strong32() & 0xffff0000);
+               maclo = cprng_strong32() & 0x0000ffff;
                machi = cprng_strong32() & 0xffff;
        }
 
-       eaddr[0] = (maclo >> 24) & 0xff;
+       eaddr[0] = (maclo >> 24) | 0xf2;
        eaddr[1] = (maclo >> 16) & 0xff;
        eaddr[2] = (maclo >>  8) & 0xff;
        eaddr[3] = (maclo >>  0) & 0xff;


This preserves the intent to zero out second byte and have a 0xf2 in first byte and randomize third and fourth byte in the Mac address generated.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.