diff -r -N -u -w oss-2.4/linux/drivers/net/tulip/interrupt.c oss-2.4-ddb5074/linux/drivers/net//tulip/interrupt.c --- oss-2.4/linux/drivers/net/tulip/interrupt.c Sun Dec 2 12:34:45 2001 +++ oss-2.4-ddb5074/linux/drivers/net//tulip/interrupt.c Tue Jul 9 13:18:13 2002 @@ -186,6 +186,10 @@ tp->rx_buffers[entry].skb->tail, pkt_len); #endif +#if defined(__mips__) + dma_cache_inv((unsigned long)bus_to_virt(tp->rx_ring[entry].buffer1),pkt_len); +#endif + } else { /* Pass up the skb already on the Rx ring. */ char *temp = skb_put(skb = tp->rx_buffers[entry].skb, pkt_len); diff -r -N -u -w oss-2.4/linux/drivers/net/tulip/tulip_core.c oss-2.4-ddb5074/linux/drivers/net//tulip/tulip_core.c --- oss-2.4/linux/drivers/net/tulip/tulip_core.c Thu Jun 27 00:36:01 2002 +++ oss-2.4-ddb5074/linux/drivers/net//tulip/tulip_core.c Tue Jul 9 13:31:04 2002 @@ -339,6 +339,11 @@ tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].mapping = mapping; +#if defined(__mips__) + dma_cache_wback_inv((unsigned long)tp->setup_frame, + sizeof(tp->setup_frame)); +#endif + /* Put the setup frame on the Tx list. */ tp->tx_ring[tp->cur_tx].length = cpu_to_le32(0x08000000 | 192); tp->tx_ring[tp->cur_tx].buffer1 = cpu_to_le32(mapping); @@ -683,6 +688,11 @@ PKT_BUF_SZ, PCI_DMA_FROMDEVICE); tp->rx_buffers[i].mapping = mapping; skb->dev = dev; /* Mark as being used by this device. */ +#if defined(__mips__) + /* Kick out any matching lines in the cache. */ + dma_cache_inv((unsigned long)skb->tail, PKT_BUF_SZ); +#endif + tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); } @@ -736,6 +746,9 @@ /* if we were using Transmit Automatic Polling, we would need a * wmb() here. */ tp->tx_ring[entry].status = cpu_to_le32(DescOwned); +#if defined(__mips__) + dma_cache_wback_inv((unsigned long)skb->data, skb->len); +#endif wmb(); tp->cur_tx++; @@ -1568,6 +1581,15 @@ tp->flags &= ~HAS_MEDIA_TABLE; } #endif +#ifdef CONFIG_DDB5074 + if ((pdev->bus->number == 0) && (PCI_SLOT(pdev->devfn) == 1)) { + /* DDB5477 MAC address in first EEPROM locations. */ + sa_offset = 0; + /* No media table either */ + tp->flags &= ~HAS_MEDIA_TABLE; + } +#endif + #ifdef CONFIG_MIPS_COBALT if ((pdev->bus->number == 0) && ((PCI_SLOT(pdev->devfn) == 7) ||