I'm sure that almost everybody dealing with Compaq Evo T20 thin clients experienced the bug with the Natsemi driver. After the network adapter is initialized, it spits the following messages to the console every few seconds:
eth0: DSPCFG accepted after 0 usec.
eth0: Wake-up event 0x200000b
eth0: Setting full-duplex based on negotiated link capability.
I asked many people about how to solve this and nobody knew. Dag Sverre gave me the tip to simply comment out the log instruction in the source of the Natsemi driver. However I didn't like the idea too much since these messages appear for a reason. And the reason is quite simple: it's a bug.
In the natsemi.c source file in the definition of the netdev_timer() function there's the following condition:
if (!netif_queue_stopped(dev)) {
...
} else {
...
}
The condition is evaluated exactly in the opposite way as it should be. So change it to this:
if (netif_queue_stopped(dev)) {
...
} else {
...
}
I've made a kernel patch for kernel v2.6.16.1 (right now this is highest 2.6.x kernel that I could make running on the Evo), see below.
Comments
linux on T20
I was wondering would you please mind sharing some info on getting Linux 2.6 on the T20? The 'how to' pages don't appear to be online any more and I would like to have a newer linux running on my T20 please.
thank you.
answer in email
natsemi not fixed
Now taking a look at the natsemi.c source again, I've found that the first and the third line in the repeated error message go to kern log facility with info log level, and the second line in the error message goes to the kern log facility with notice log level. Thus if you set up your syslog config not to log messages from these two sources, then you'll be just fine.
Or you can try my patch which indeed supresses the messages, but since I was just hacking around in the source of natsemi.c without much knowledge of what I was doing ... I might have even messed up something.
Anyone who wants to be on
Markus
if (np->SavedClkRun & PMEStatus && netif_msg_wol(np)) {
/* printk(KERN_NOTICE "%s: Wake-up event %#08x\n",
dev->name, readl(ioaddr + WOLCmd)); */
}
} else {
/* printk(KERN_INFO
"%s: DSPCFG accepted after %d usec.\n",
dev->name, i*10); */
}
if (netif_msg_link(np))
/* printk(KERN_INFO
"%s: Setting %s-duplex based on negotiated "
"link capability.\n", dev->name,
duplex ? "full" : "half"); */
if (duplex) {
ethtool
ethtool -s <interface> msglvl 0
does the trick here.Re: ethtool
natsemi.dspcfg_workaround=0