Re: 8390 drivers (was: Re: Debian kernel 2.6.38-5)

Christian T. Steigies
2011-05-09T21:30:50Z

On Mon, May 09, 2011 at 10:38:18PM +0200, Geert Uytterhoeven wrote:
> On Mon, May 9, 2011 at 22:25, Christian T. Steigies <cts@debian.org> wrote:
> > On Mon, May 09, 2011 at 09:16:16AM +0200, Geert Uytterhoeven wrote:
> >> On Mon, May 9, 2011 at 01:14, Finn Thain <fthain@telegraphics.com.au> wrote:
> >> > On Sun, 8 May 2011, Christian T. Steigies wrote:
> >> >> PS 2.6.28 did not boot: kernel too old. When was TLS introduced? I'll try to
> >> >> apply the patch you mentioned in your other message.
> >> >
> >> > I sometimes test network cards with busybox. It can be built without
> >> > linking in glibc and doesn't need TLS.
> >> >
> >> >
> >> >> [  130.870000] eth0: trigger_send() called with the transmitter busy.
> >> >> [  132.240000] ------------[ cut here ]------------
> >> >> [  132.240000] WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0x1ac/0x1cc()
> >> >> [  132.250000] NETDEV WATCHDOG: eth0 (): transmit queue 0 timed out
> >> >
> >> > Looks a lot like this problem:
> >> >
> >> > http://patchwork.ozlabs.org/patch/27774/
> >>
> >> Yeah, that's a very likely culprit. Thx!
> >
> > I applied the following patch and it works! apt-get update that is, there is
> > no sshd on this freshly installed system yet...
> >
> > I also changed this line to have 4 underscores at the beginning:
> >
> >        { 0xec940559, "____alloc_ei_netdev" },
>
> In which file is that?

zorro8390.mod.c

> > it does not show up in git diff, so I am not sure if this is a leftover from
> > a previous checkout, or if it is also needed. And if it is needed, if it
> > should be two underscores or four or none, and if so why or why not...
> > Looking at the other drivers, there does not seem to be a lot of consistency?
>
> From this, I guess hydra and ne-h8300 are also affected, as they
> include lib8390.c
> theirselves and are linked with 8390.o?
>
> > diff --git a/drivers/net/zorro8390.c b/drivers/net/zorro8390.c
> > index b78a38d9..8c7c522 100644
> > --- a/drivers/net/zorro8390.c
> > +++ b/drivers/net/zorro8390.c
> > @@ -126,7 +126,7 @@ static int __devinit zorro8390_init_one(struct zorro_dev *z,
> >
> >     board = z->resource.start;
> >     ioaddr = board+cards[i].offset;
> > -    dev = alloc_ei_netdev();
> > +    dev = ____alloc_ei_netdev(0);
> >     if (!dev)
> >        return -ENOMEM;
> >     if (!request_mem_region(ioaddr, NE_IO_EXTENT*2, DRV_NAME)) {
> > @@ -146,15 +146,15 @@ static int __devinit zorro8390_init_one(struct zorro_dev *z,
> >  static const struct net_device_ops zorro8390_netdev_ops = {
> >        .ndo_open               = zorro8390_open,
> >        .ndo_stop               = zorro8390_close,
> > -       .ndo_start_xmit         = ei_start_xmit,
> > -       .ndo_tx_timeout         = ei_tx_timeout,
> > -       .ndo_get_stats          = ei_get_stats,
> > -       .ndo_set_multicast_list = ei_set_multicast_list,
> > +       .ndo_start_xmit         = __ei_start_xmit,
> > +       .ndo_tx_timeout         = __ei_tx_timeout,
> > +       .ndo_get_stats          = __ei_get_stats,
> > +       .ndo_set_multicast_list = __ei_set_multicast_list,
> >        .ndo_validate_addr      = eth_validate_addr,
> >        .ndo_set_mac_address    = eth_mac_addr,
> >        .ndo_change_mtu         = eth_change_mtu,
> >  #ifdef CONFIG_NET_POLL_CONTROLLER
> > -       .ndo_poll_controller    = ei_poll,
> > +       .ndo_poll_controller    = __ei_poll,
> >  #endif
> >  };
>
> And 8390.o can be removed from drivers/net/Makefile?

I did not change that and it still works, modprobe zorro8390 did not load
8390. The speed is rather slow, though, 10kbit/sec seems to be the max
speed. I have not been able to log in via ssh yet, maybe after it has
finished downloading packages.

Christian