[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freebsd-hackers
Subject:    Almost a FreeBSD Token Ring driver :(   [a little long but worth it]
From:       "Larry S. Lile" <lile () stdio ! com>
Date:       1998-09-30 17:09:03
[Download RAW message or body]


Off and on for the last year I have been working on a token ring
driver for IBM shared ram adapters under FreeBSD current.  After
a lot of questions to hackers, IBM and others who know about 
token ring I have got a driver that almost works.  It has been
based on the Mach driver for the old IBM (Ungerman-Bass) token
ring cards, which were the first shared ram adapters from IBM.
I have finally reached the end of my rope with this driver and
if it is going to be finished I need help.

The current state of the project is this:

tcpdump has been modified to support token ring packets, I have 
submitted these changes to the LBNL Network Research Group but
have not heard anything from them.  The changes should be portable
to any Un*x.

I have patches to FreeBSD's arp code to allow Token Ring to be
arp'd just like ethernet.

I have created and iso88025.h and if_iso88025subr.c that should 
genericly support any token ring driver.  The input routine 
appears to work flawlessly and the output routine cannot be fully
debugged due to other problems but seems to work ok.

Patches have been made to add this code on demand using a 
psuedo-device token in the kernel configuration.

The actual driver for the shared ram adapters almost works.  Currently
it will perform all of the following functions:

o The adapter probe and attach work and have been fairly well tested.

o The driver responds properly to all neccesary ifconfig requests
   (up, down, address, netmask, mtu, ...)

o The adapter will enter the ring and receive all packets destined
to the interface or broadcast on the ring.  (No promisc. mode)

o The driver will generate the responses to the packets it receives.  
Programs like ping will actually generate the right packet in the
driver.  This works all the way down to actually putting the packet
in the adapters shared ram.

The problem is that I cannot get the adapter to actually transmit
packets.  It will generate strange error messages or cause the
adapter to issue a check code, but no packets get put on the ring.
I have verified this with a sniffer.

The code is fairly dirty and I need to clean it up but the problems
I have had getting the driver to work have led me to making gross
hacks.  Most of these have been fixed but the code still looks 
messy.  Anyone out there who wants to see token ring should look at
the sources and see if they can help out.  I have just spent too 
long looking at this code and become blind to my own errors, not
to mention that this is all a little beyond my ability.

Please help me out with this, the driver is almost working.  Once
it starts working cleaning up the code and making it reliable are
just a matter of time.

I have enclosed all of the code, patch files, dmesg output from
the driver, output from tcpdump, tcpdump patches, kernel config
patches and the URL to the adapter documentation (thousands of
IBM docs are available from the same site).

Larry Lile
lile@stdio.com
["tokenring.tgz" (APPLICATION/octet-stream)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic