use proper test for all-zero or all-fs mac (one byte isn't enough) Reference: /n/atom/patch/applied2013/usbsmsc Date: Tue Jun 18 21:42:37 CES 2013 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/usb/ether/smsc.c Tue Jun 18 21:42:12 2013 +++ /sys/src/cmd/usb/ether/smsc.c Tue Jun 18 21:42:12 2013 @@ -205,19 +205,19 @@ return 0; } +uchar nilea[Eaddrlen]; +uchar fsea[Eaddrlen] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }; + static int getmac(Dev *d, uchar buf[]) { - int i; uchar ea[Eaddrlen]; if(eepromr(d, MACoffset, ea, Eaddrlen) < 0) return -1; - for(i = 0; i < Eaddrlen; i++) - if(ea[i] != 0 && ea[i] != 0xFF){ - memmove(buf, ea, Eaddrlen); - break; - } + if(memcmp(ea, nilea, Eaddrlen) != 0) + if(memcmp(ea, fsea, Eaddrlen) != 0) + memmove(buf, ea, Eaddrlen); return Eaddrlen; }