BUG: smsc75xx driver assigns random MAC address at every init, not just at boot.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I believe I have found a critical bug in the smsc75xx driver and would like to know the right way to proceed.

Problem:

1. Environment:
- Multiple hard-wired SMSC LAN7500 devices connected at boot time and never removed (not removable, in my case).
- Tested under the following Ubuntu ARM-based systems: 
	PandaBoard ES: Linux Panda-216 3.5.0-215-omap4 #22-Ubuntu SMP PREEMPT Mon Nov 19 16:41:38 UTC 2012 armv7l armv7l armv7l GNU/Linux
	Variscite OM44 DVK: Linux OM44-134 3.4.0-1487-omap4 #6+var5 SMP PREEMPT Mon Oct 15 19:18:50 IST 2012 armv7l armv7l armv7l GNU/Linux
	Custom OM44-based system: Linux OM44-120 3.4.0-1487-omap4 #6+var7 SMP PREEMPT Sun Oct 28 11:51:16 IST 2012 armv7l armv7l armv7l GNU/Linux

2. Observations:
- Expected behavior: A random MAC address is assigned at system start.
- Unexpected behavior: Doing "ifconfig ethX down; ifconfig ethX up" always forces a new random MAC address to be assigned.
- Unexpected behavior: All attempts to manually assign a MAC address are consistently overwritten by a subsequent "ifconfig ethX up".

3. Desired behavior:
- I would like to be able to assign desired MAC addresses to any number of attached smsc75xx devices that will persist across any number of ifconfig up/down cycles.

4. Work-arounds:
- None found.  All attempts to manually configure a MAC address (including bootargs) are stepped on by "ifconfig ethX up".

5. Planned hack:
- Modify smsc75xx.c to remove code that sets the random MAC address: If the device does not initialize with a valid MAC address from EEPROM, force the interface to fail until a valid MAC address is (manually) assigned (e.g. by bootargs, custom init scripts, ifconfig, macchanger, etc.).

I'm in no way a kernel or USB or device driver hacker (or even much of a C programmer since my Python religious conversion), so this will be a blind hack that should never be allowed anywhere near the source tree.  I haven't even built a kernel or module in 5 years (due to increasingly wonderful vendor and distribution support), so this will be an excruciatingly slow process (self-hosted on an embedded system with only SD storage).  Advice from true experts would be massively appreciated.

5. Going Forward:
- What is the "most correct" path to a permanent fix for this bug?
- Are there known-good work-arounds I haven't yet found?
- What more should I do bring needed attention to this bug beyond this report to this list?


TIA,

-BobC

��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux