porting tulip driver from 2.2.x to 2.3.14

Gerard Saraber GSaraber@unlimitedsolutions.com
Mon Aug 23 11:48:34 1999


Hi linux-tulip folks,
It has been suggested by someone to forward the message below to this
list as well, I've posted it to linux-kernel@vger a couple of hours
ago..

Regards,
Gerard Saraber


Hi :-)
I've been having trouble with my tulip (Linksys LNE10/100TX - PNIC)
network card since I bought it,
It got much better since someone on the #stampede irc channel pointed me
to Donald Becker's
Network card driver page .. my card works much better with driver v91 i
think it was revision e, not sure.
Anyway .. feeling adventerous and always running the latest kernel I
decided to upgrade to 2.3.14 ..
which comes with the tulip.c v89H which doesn't work with my card .. so
no problem , just copy
over the version 91e  .. wrong, that doesn't compile anymore..
So I've spend yesterday all day trying to fix the driver .. I've gotten
it to compile and actually
send/receive some packets, but I've locked my system up solid doing
that, 
replacing dev_alloc_skb( ) with DEV_ALLOC_SKB( ) and #defining it as
#define DEV_ALLOC_SKB( len ) dev_alloc_skb( len+2 )
fixed the hard lockup .. but i't still not very solid..
If I try to ping the other two systems on my net I get something like:
reply from 192.168.13.2 - 1999 ms
reply from 192.168.13.2 - 1000 ms
reply from 192.168.13.2 - 0.1 ms
then it stops .. 

I've noticed there have been some changes in the IRQ handling code as
well  ( SA_SHIRQ ) in the driver
lots of comments about "shared irq" stuff .. so no problem I ported that
stuff from the kernel driver too, as best I could.. 
then the card stopped working all together so i thought I might have
broken the driver .. tore up too much.
( I've been working on the module mainly .. load module, ifconfig eth0
up, ping gateway unload fix, compile etc.)
anyway, so i got a later driver found through a link on Donald Becker's
site to v91g and started over, I've pretty much replaced all the "struct
device" declarations with "struct net_device"
replaced "ioaddr = pdev->base_addr &~3" with ioaddr =
pdev->resource[0].start &~3;
But I can't get my card to do anything anymore .. "even" in windows98
(where the card worked (almost) flawless before) it doesn't ping or
reply to pings anymore .. So right now the card could have died :-(

So my questions (after all this) are: 
1. could I have actually broken the card by messing with it's driver ?
2. Are there any documents about the required driver changes that I
could read to make my "porting" a little more educated ..
I did a diff between the 89H kernel driver and Donald's 91c (i think)
driver.. the kernel driver is 88k, the 91c driver is 104k .. and the
diff was 95k .. so straightforward porting wasn't really possible.

Any help / hints would be appreciated ..
If anyone is interested I'd gladly make the "hacked up" drivers
available for anyone to look at .. 

Thanks,
--====================================================================--
Gerard Saraber				| http://saraber.dhs.org
work: gsaraber@unlimitedsolutions.com	| If you don't like Linux you 
home: gerard@saraber.dhs.org		|      didn't configure it
right.