Note: I posted this bug to
[url]http://bugzilla.kernel.org/show_bug.cgi?id=10693[/url] because I think it is
a "generic" kernel bug, not specifically linked to Debian. I suppose
here is the right place to post it. Sorry for the double posting.

I configured multiple VLANs on eth1 (vlan161 to vlan166 + vlan170,
using /etc/network/interfaces). Everything works fine for some time
(a few
minutes up to a few days), then for some unknown reason the sky2
driver suddenly hangs and restarts. Unfortunately, the VLAN support
seems broken after sky2 restarts. I get the following dmesg output:

Steps to reproduce:
Configure some VLANs on a sky2-managed Gigabit Ethernet port, and
manage to get the sky2 driver to hang and automatically restart (I
don't know how to
force the sky2 driver to hang, I would just flow some trafic through
the VLANs for some time, but there is probably a better way). You
will then see that VLAN tagged packets are dropped, but untagged
packets are ok.

My opinion:
Basically, it seems that everything is properly initialized, including
VLAN tags associated to each interface. But if for some reason the
sky2 watchdog detects a hang, it restarts the interface, but it
forgets to set the VLANs again. From then on, all packets received
are rejected because they are tagged and the sky2 driver excepts
untagged packets (hence the "rx length" error message).

Therefore, after any hang, the watchdog does not restart the interface
properly when VLAN tagging is used.

In my error messages, I can read that the status is equal to 0x402300
or 0x522100, for example (see above), and therefore I known that
(status & GMR_FS_VLAN) is TRUE (GMR_FS_VLAN is equal to 1<<13). Since
I get rx length errors, I believe that the count does not take into
account the VLAN header bytes, and I think that the only possibility
for this to happen is if sky2->vlgrp is NULL.

Apparently, sky2->vlgrp gets set properly upon driver initialization,
but it gets unset when the sky2 watchdog restarts the device.

sky2->vlgrp seems to be set only in function sky2_vlan_rx_register (on
line 1155).

So the solution might be to cut and paste this code from
sky2_init_netdev (which does not seem to be called when the sky2
watchdog restarts the device) into sky2_up (which is called both upon
initialization of the device, and when the watchdog restarts the
device)?

On Mon, May 26, 2008 at 03:23:29PM +0200, Aurélien Géron wrote:[color=blue]
> Package: linux-image-2.6.24-1-686
> Severity: important
>
> Note: I posted this bug to
> [url]http://bugzilla.kernel.org/show_bug.cgi?id=10693[/url] because I think it is
> a "generic" kernel bug, not specifically linked to Debian. I suppose
> here is the right place to post it. Sorry for the double posting.[/color]

Aurelien, according to the bug you filed and the information provided
by Stephen Hemminger this issue should be fixed in commit
d494eacde8858f9b53f5c640692caf14eb3c8239, which is part of 2.6.26.

Can you confirm that the current Lenny kernel fixes the problem for
you?

Cheers,
Moritz

--
To UNSUBSCRIBE, email to [email]debian-bugs-dist-REQUEST@lists.debian.org[/email]
with a subject of "unsubscribe". Trouble? Contact [email]listmaster@lists.debian.org[/email]