Ether 1394 0.2.2

Ether 1394 (eth1394) is a kernel module for Linux IEEE-1394 Subsystem.
Ether 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.

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.

TO RUN:

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
insmod ./modules-x.x_for_ether1394/pcilynx.o

!= ./delieee1394

./insether1394 insmod eth1394.o
ifup eth1

!= ./delether1394

INTERFACE INSTALLATION

You should create a file named "ifcfg-ethN" (for exemple N = 1) with the following content inside "/etc/sysconfig/network-scripts/" subdirectory:

DEVICE="ethN"
BOOTPROTO="none"
IPADDR="192.160.0.1"
NETMASK="255.255.255.0"
NETWORK=192.160.0.0
BROADCAST=192.160.0.255
ONBOOT="no"

Debian users need to modify /etc/network/interfaces instead of /etc/sysconfig/

For example:

iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

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.

Requirements:

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

last updated on:
January 24th, 2008, 14:36 GMT
price:
FREE!
developed by:
Guido Fiala and Bonin Franck
homepage:
www.chez.com
license type:
GPL (GNU General Public License) 
category:
ROOT \ System \ Operating Systems \ Kernels

FREE!

In a hurry? Add it to your Download Basket!

user rating 16

4.1/5
 

0/5

Rate it!

Add your review!

SUBMIT