Comment 11 for bug 622429

Revision history for this message
Torez Smith (lnxtorez) wrote :

Few notes and/or observations.....

1) beagle XM board has device " SMSC LAN9514 Ethernet HUB " and uses kernel driver drivers/net/usb/smsc95xx.c

2) igep board has device " SMSC LAN9221i " and uses driver drivers/net/smsc911x.c (igep is not relevant to this bug but using it as an opma3 family point of reference )

3) neither board have EEPROM so MAC addresses are not stored on board

4) both drivers call random_ether_addr() to generate the initial ethernet address.

5) random_ether_addr() clears multicast bits and sets the local assignment bit ( addr [0] |= 0x02; )

6) driver smsc95xx sets FLAG_ETHER flag to help denote the network address is an ethernet address (as oppose to a wlan address, etc.)

7) while following the initialization logic, stack traces, etc., usbnet_probe() is called to probe device and further set it up.

8) in this routine, the logic to determine if we use interface eth% versus usb% is based on FLAG_ETHER being set and the content of addr [0]. If FLAG_ETHER is set "and" bit 1 of addr [0] is "not" set, use eth% otherwise use usb%. In the case of the beagle XM board, FLAG_ETHER is set "and" so is bit 1 of addr [0] which means we end up using usb%.

Sent email to driver writer for further analysis.