* lan7801 looses VLAN Filter Table
@ 2026-06-18 15:18 Sven Schuchmann
2026-06-18 19:00 ` Nicolai Buchwitz
0 siblings, 1 reply; 2+ messages in thread
From: Sven Schuchmann @ 2026-06-18 15:18 UTC (permalink / raw)
To: netdev@vger.kernel.org
Hi,
I have a problem with a lan7801 chip in Kernel 6.18. I configure VLAN-ID (2) and an IP address.
But if I disconnect and connect the network-cable several times at some point no packets are
received anymore. Without using VLAN this does not happen.
I tracked this down that sometimes the VLAN Filter table seems
to get cleared. I hooked into the lan78xx.c driver to dump the vlan table:
static void lan78xx_get_stats(struct net_device *netdev,
struct ethtool_stats *stats, u64 *data)
{
struct lan78xx_net *dev = netdev_priv(netdev);
struct lan78xx_priv *pdata = (struct lan78xx_priv *)(dev->data[0]);
lan78xx_update_stats(dev);
for (int i = 0; i < 3; i++) {
u32 buf;
lan78xx_dataport_read(dev, DP_SEL_RSEL_VLAN_DA_, i, 1, &buf);
if (pdata->vlan_table[i] != buf)
netdev_err(dev->net, "VLAN TABLE %d: 0x%08x 0x%08x", i, pdata->vlan_table[i], buf);
else
netdev_info(dev->net, "VLAN TABLE %d: 0x%08x 0x%08x", i, pdata->vlan_table[i], buf);
}
So I can "read out" the table if I do "ethtool -S" and see it in the kernel log.
Normally the output looks like this:
VLAN TABLE 0: 0x00000005 0x00000005
So the table looks as expected. The Local Filter table from pdata is the same as in the chip itself.
But after some cable disconnects and connects I see this:
VLAN TABLE 0: 0x00000005 0x00000000
So the table got cleared or deleted and no paketes on VLAN-ID 2 go through.
I even can do this after I read out the table in lan78xx_get_stats():
lan78xx_dataport_write(dev, DP_SEL_RSEL_VLAN_DA_, 0,
DP_SEL_VHF_VLAN_LEN, pdata->vlan_table);
...and with this I can "fix" the table again from the ethtool and it starts working again.
Has someone seen something like this or can point me to a direction where
I could reinit this table (I already tried at the end of lan78xx_mac_link_up() without success...)
Thanks!
Regards, Sven
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: lan7801 looses VLAN Filter Table
2026-06-18 15:18 lan7801 looses VLAN Filter Table Sven Schuchmann
@ 2026-06-18 19:00 ` Nicolai Buchwitz
0 siblings, 0 replies; 2+ messages in thread
From: Nicolai Buchwitz @ 2026-06-18 19:00 UTC (permalink / raw)
To: Sven Schuchmann; +Cc: netdev
Hi Sven
On 18.6.2026 17:18, Sven Schuchmann wrote:
> Hi,
> I have a problem with a lan7801 chip in Kernel 6.18. I configure
> VLAN-ID (2) and an IP address.
> But if I disconnect and connect the network-cable several times at some
> point no packets are
> received anymore. Without using VLAN this does not happen.
>
> I tracked this down that sometimes the VLAN Filter table seems
> to get cleared. I hooked into the lan78xx.c driver to dump the vlan
> table:
>
> static void lan78xx_get_stats(struct net_device *netdev,
> struct ethtool_stats *stats, u64 *data)
> {
> struct lan78xx_net *dev = netdev_priv(netdev);
> struct lan78xx_priv *pdata = (struct lan78xx_priv *)(dev->data[0]);
>
> lan78xx_update_stats(dev);
>
> for (int i = 0; i < 3; i++) {
> u32 buf;
> lan78xx_dataport_read(dev, DP_SEL_RSEL_VLAN_DA_, i, 1, &buf);
> if (pdata->vlan_table[i] != buf)
> netdev_err(dev->net, "VLAN TABLE %d: 0x%08x 0x%08x", i,
> pdata->vlan_table[i], buf);
> else
> netdev_info(dev->net, "VLAN TABLE %d: 0x%08x 0x%08x", i,
> pdata->vlan_table[i], buf);
> }
>
> So I can "read out" the table if I do "ethtool -S" and see it in the
> kernel log.
> Normally the output looks like this:
> VLAN TABLE 0: 0x00000005 0x00000005
> So the table looks as expected. The Local Filter table from pdata is
> the same as in the chip itself.
>
> But after some cable disconnects and connects I see this:
> VLAN TABLE 0: 0x00000005 0x00000000
> So the table got cleared or deleted and no paketes on VLAN-ID 2 go
> through.
> I even can do this after I read out the table in lan78xx_get_stats():
>
> lan78xx_dataport_write(dev, DP_SEL_RSEL_VLAN_DA_, 0,
> DP_SEL_VHF_VLAN_LEN, pdata->vlan_table);
>
> ...and with this I can "fix" the table again from the ethtool and it
> starts working again.
>
> Has someone seen something like this or can point me to a direction
> where
> I could reinit this table (I already tried at the end of
> lan78xx_mac_link_up() without success...)
I was able to reproduce your issue on my hardware. AFAIU the vlan table
is not restored after USB suspend.
I will send a patch shortly. Would be great if you can test it too.
>
> Thanks!
>
> Regards, Sven
Thanks
Nicolai
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-18 19:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-18 15:18 lan7801 looses VLAN Filter Table Sven Schuchmann
2026-06-18 19:00 ` Nicolai Buchwitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox