Re: Bug report (with fix) for DEC Tulip driver (de2104x.c)
From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Date: 2019-09-20 10:57:55
On Mon, Sep 16, 2019 at 02:50:53PM -0700, Arlie Davis wrote:
quoted hunk ↗ jump to hunk
See section 4.2.2 for the specs on the transfer descriptor. Here's my patch that fixes it:diff --git a/drivers/net/ethernet/dec/tulip/de2104x.cb/drivers/net/ethernet/dec/tulip/de2104x.c index f1a2da15dd0a..3a420ceb52e5 100644--- a/drivers/net/ethernet/dec/tulip/de2104x.c +++ b/drivers/net/ethernet/dec/tulip/de2104x.c@@ -545,6 +545,7 @@ static void de_tx (struct de_private *de) while (tx_tail != tx_head) { struct sk_buff *skb; u32 status; + u32 control; rmb(); status = le32_to_cpu(de->tx_ring[tx_tail].opts1);@@ -565,7 +566,8 @@ static void de_tx (struct de_private *de) pci_unmap_single(de->pdev, de->tx_skb[tx_tail].mapping, skb->len, PCI_DMA_TODEVICE); - if (status & LastFrag) { + control = le32_to_cpu(de->tx_ring[tx_tail].opts2); + if (control & LastFrag) {
how about just remove the complete if ? We know that we always use one descriptor per packet and chip doesn't touch control field. So I see no reason to check it here. Tulip driver for 2114x cards doesn't check it neither. Thomas. -- Crap can work. Given enough thrust pigs will fly, but it's not necessarily a good idea. [ RFC1925, 2.3 ]