On a Raspberry Pi 4 running a recent snapshot, I found that the built-in
bwfm interface would fail to receive non-broadcast traffic after
changing the MAC address with ifconfig (for example by having
"lladdr random" in hostname.bwfm0).

It looks like this was happening because the new MAC address was set in
the kernel network stack but the bwfm driver wasn't doing anything
to write the address to the device.

The below diff fixes it for me.
I don't have any other bwfm devices to test.

diff /usr/src
commit - 6c24eb55e021991196003dc7f0a643e806b14295
path + /usr/src
blob - dfa7a1973d2ab6be7e4b2fbd869b38c441d4eae0
file + sys/dev/ic/bwfm.c
--- sys/dev/ic/bwfm.c
+++ sys/dev/ic/bwfm.c
@@ -827,6 +827,17 @@ bwfm_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data
                        error = 0;
                }
                break;
+       case SIOCSIFLLADDR:
+               ifr = (struct ifreq *)data;
+               error = 0;
+               if (bwfm_fwvar_var_set_data(sc, "cur_etheraddr",
+                   ifr->ifr_addr.sa_data, ETHER_ADDR_LEN)) {
+                       error = EIO;
+               } else {
+                       memcpy(ic->ic_myaddr, ifr->ifr_addr.sa_data,
+                           sizeof(ic->ic_myaddr));
+               }
+               break;
        case SIOCGIFMEDIA:
        case SIOCG80211NODE:
        case SIOCG80211ALLNODES:

Reply via email to