Ether 1394 (eth1394) is a kernel module for Linux IEEE-1394 Subsystem.
Version: 0.2.2Ether 1394 (eth1394) is a kernel module for Linux IEEE-1394 Subsystem that allow up to 63 Linux systems to use ethernet protocol on IEEE 1394 buses and every higher network protocol like IP and TCP.
Operating System: Linux
BEFORE DOING ANYTHING:
Should compile for >=2.4. kernels only...
For SMP kernel, I have include few "spin_lock" in ether1394 source code but I don't know if eth1394 will works with SMP kernel.
You need the Linux IEEE-1394 subsystem : http://linux1394.sourceforge.net/ I have included the latest module inside subdirectory "modules-x.x_for_ether1394" (06 22 2000)
And if you use the ohci1394 lowlevel driver, I highly recommend to perform the modifications that are mentioned in header of file eth1394.c. (Set flag IEEE1394_USE_BOTTOM_HALVES to 1 in file ohci1394.h)
I haven't tested the pcilynx driver. See PCYLYNX WARNING in header of file eth1394.c.
Modules inside "modules-x.x_for_ether1394" subdirectory contained the modification for ohci driver. You can use them, even without eth1394.
Just type "make" in the subdirectory "modules-x.x_for_ether1394" and in the main directory "ether_1394_x.x.x".
Type ./insall in the main directory "ether_1394_x.x.x". This will load all the IEEE 1394 modules you need from directory "modules-x.x_for_ether1394", load the module eth1394 and "ifup" the network inerface called "eth1" (see INTERFACE INSTALLATION bellow).
To remove all the modules and close the interface eth1, use ./delall script.
You could use other scripts to load modules an ifup the network interface :
/ insmod ./modules-x.x_for_ether1394/ieee1394.o
./insieee1394 < insmod ./modules-x.x_for_ether1394/ohci1394.o
./insether1394 insmod eth1394.o
You should create a file named "ifcfg-ethN" (for exemple N = 1) with the following content inside "/etc/sysconfig/network-scripts/" subdirectory:
Debian users need to modify /etc/network/interfaces instead of /etc/sysconfig/
iface eth1 inet static
Interface ethN appears like any other ethernet interface (try ifconfig). You could use it with any network program.
Inerface eth1 may not be the right interface for eth1394 driver on your system. Look at dmesg output after loading the driver ether1394 to see which interface to use :
Exemple : > Succesfully load ether1394 driver version 0.1.4 on interface eth1
If the "ifcfg" file I provided do not works on your system, take a look on file ifcfg-eth0 in directory "/etc/sysconfig/network-scripts/".
HARDWARE ADDRESS PROBLEM
Encapsulating ethernet require building unique HW address (MAC address) for each IEEE 1394 cards connected to the bus. There are many solutions to allocate MAC address (But it's a long storie to explain how). I have choose one, which is not the best, but easy. The MAC address of each card is calculated from the current node number, obtained from the last bus reset, each time you "ifup" the interface :
Node 0 => HW addr 00:00:69:65:65:00
Node 1 => HW addr 00:00:69:65:65:01
And so on.
This is done line 496 in eth1394.c.
Moreover, the driver build a kind of correspondences table where HW
address are matched with node numbers.
As MAC address can not change, but a bus reset result in recalculating the MAC address. Because the node number may have change, the eth1394 driver correspondences table is emptied and the driver will fill it, if it needs (see line 485).
THE MAIN PROBLEM IS THAT ARP TABLE ARN'T REFRESHING AFTER A BUS RESET. So ARP table may contain invalid lines : IP addr HW addr. Until now, we have to wait for an ARP request to refresh the ARP table.
To avoid all problems, you could allocate manually each HW address to each node at "insmod" time by doing :
insmod eth1394 hwaddr=0x12345678
Ethernet HW address are 6 bytes long, but ether1394 use only 4 (first 2 bytes should be zero). This should not be a problem as there is not more than 63 nodes per bus.
· Linux kernel >=2.4
What's New in This Release:
· optimized version, best use it with BOTTOM_HALVES=0 in linux/drivers/ieee1394/ohci1394.h