Bug 7793

Summary: don't enforce hotplugging of eth1394
Product: Drivers Reporter: Stefan Richter (stefanr)
Component: IEEE1394Assignee: Stefan Richter (stefanr)
Status: CLOSED CODE_FIX    
Severity: low    
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: all Subsystem:
Regression: --- Bisected commit-id:
Attachments: ieee1394: eth1394: don't autoload by hotplug when ohci1394 starts
ieee1394: eth1394: don't autoload by hotplug when ohci1394 starts

Description Stefan Richter 2007-01-08 14:34:02 UTC
Currently, building eth1394 (IP over FireWire) hardwires an IPover1394 entry
into the local FireWire node's configuration ROM, i.e. the information about
local capabilities which is published by ieee1394 to all nodes on the bus. As
soon as a host adapter is set up (i.e. modprobe ohci1394), this IPover1394 entry
will cause a hotplug event and eth1394 will be autoloaded.

Administrators can prevent this by blacklisting eth1394 in
/etc/hotplug/blacklist and /etc/modprobe.conf. A lot of people do this because
they don't want eth1394 to alter the order of ethX devices, or because eth1394
creates difficulties with FireWire applications in userspace, or because they
just don't want to load eth1394 all the time.

This blacklisting has a minor drawback: The local node is advertizing IPover1394
capability even though it doesn't have this capability unless eth1394 is loaded.

Solution:
Provide a kernel configuration option which causes the IPover1394 entry not to
be hardwired into ieee1394 but to be added later by eth1394 when/if eth1394 is
loaded.
Comment 1 Stefan Richter 2007-03-26 15:54:32 UTC
Created attachment 10952 [details]
ieee1394: eth1394: don't autoload by hotplug when ohci1394 starts
Comment 2 Stefan Richter 2007-03-26 16:39:37 UTC
Created attachment 10953 [details]
ieee1394: eth1394: don't autoload by hotplug when ohci1394 starts

same change but without bloat from feature-removal-schedule procedure
Comment 3 Stefan Richter 2007-04-08 13:31:05 UTC
Some downstream bugs, for the record:

"don't configure automaticaly ethernet on firewire ports"
http://qa.mandriva.com/show_bug.cgi?id=20126

"Firewire ethernet borks Real ethernet."
http://qa.mandriva.com/show_bug.cgi?id=21963

"The eth1394 driver b0rks the network during/after install."
https://bugs.gentoo.org/show_bug.cgi?id=113924

"eth1394 loaded instead of via-rhine"
https://bugs.gentoo.org/show_bug.cgi?id=128962

"eth1394 grabs eth0 since coldplug went away"
https://bugs.gentoo.org/show_bug.cgi?id=157050
Comment 4 Stefan Richter 2007-05-02 07:12:58 UTC
fix merged for Linux 2.6.22-rc1
Comment 5 Stefan Richter 2007-05-02 07:55:44 UTC
PS:
Final patch:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=70093cfde8af52b0b9030d90f9004cbde38f2ff8

Unlike proposed in the bug description, the 2nd and final patch do not offer a
build-time choice between the old and the new behavior.  The old behavior can be
brought back by the following lines in /etc/modprobe.conf:
    install ohci1394 /sbin/modprobe eth1394; \
                     /sbin/modprobe --ignore-install ohci1394

Eth1394 will still be auto-loaded by hotplug if an _external_ IP-over-1394
capable device is detected.