Re: Oops with 3c59x module (3com 3c595 NIC)

Andrew Morton (akpm@digeo.com)
Sat, 07 Dec 2002 15:46:43 -0800


Jeff Garzik wrote:
>
> Andrew Morton wrote:
> > That's a transmit underrun - data is not being fed into the NIC
> > across the PCI bus fast enough. Possibly something has gone
> > wrong with the busmastering logic on the mainboard, or the NIC.
> >
> > The driver will reset the transmitter when this happens, as per the
> > manual. There's not much else we can do.
>
> pci-skeleton.c and several of Don's drivers actually do do something
> else on TxUnderrun, twiddle DMA burst settings:
>
> if ((intr_status & TxUnderrun)
> && (np->tx_config & TxThresholdField) !=
> TxThresholdField) {
> long ioaddr = dev->base_addr;
> np->tx_config += TxThresholdInc;
> writel(np->tx_config, ioaddr + TxMode);
> np->stats.tx_fifo_errors++;
> }
>
> I wonder how feasible it is to do that on 3c59x hardware?

It is quite feasible. But it seems that current versions of the
driver disable thresholding anyway. We had some problems...

Uncommenting this line:

// issue_and_wait(dev, SetTxStart|0x07ff);

might be interesting.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/