From: Felix Fietkau Date: Sat, 19 May 2007 13:27:34 +0000 (+0000) Subject: add some apparently missing dma cache ops to the korina driver X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=940b1f3cb5e0b90d4351d4619e15d8df44a02091;p=librecmc%2Flibrecmc.git add some apparently missing dma cache ops to the korina driver SVN-Revision: 7274 --- diff --git a/target/linux/rb532-2.6/files/drivers/net/korina.c b/target/linux/rb532-2.6/files/drivers/net/korina.c index 3a22339b41..6dce2b921b 100644 --- a/target/linux/rb532-2.6/files/drivers/net/korina.c +++ b/target/linux/rb532-2.6/files/drivers/net/korina.c @@ -473,8 +473,10 @@ static int rc32434_send_packet(struct sk_buff *skb, struct net_device *dev) lp->tx_skb[lp->tx_chain_tail] = skb; length = skb->len; + dma_cache_wback((u32)skb->data, skb->len); /* Setup the transmit descriptor. */ + dma_cache_inv((u32) td, sizeof(*td)); td->ca = CPHYSADDR(skb->data); if(__raw_readl(&(lp->tx_dma_regs->dmandptr)) == 0) { @@ -507,6 +509,7 @@ static int rc32434_send_packet(struct sk_buff *skb, struct net_device *dev) lp->tx_chain_tail = (lp->tx_chain_tail + 1) & RC32434_TDS_MASK; /* Move tail */ } } + dma_cache_wback((u32) td, sizeof(*td)); dev->trans_start = jiffies; @@ -675,7 +678,8 @@ static void rc32434_rx_tasklet(unsigned long rx_data_dev) unsigned long flags; spin_lock_irqsave(&lp->lock, flags); #endif - + + dma_cache_inv((u32)rd, sizeof(*rd)); while ( (count = RC32434_RBSIZE - (u32)DMA_COUNT(rd->control)) != 0) { #ifdef CONFIG_IDT_USE_NAPI if(--rx_work_limit <0) @@ -789,6 +793,7 @@ static void rc32434_rx_tasklet(unsigned long rx_data_dev) lp->rd_ring[(lp->rx_next_done-1)& RC32434_RDS_MASK].control &= ~(DMAD_cod_m); lp->rx_next_done = (lp->rx_next_done + 1) & RC32434_RDS_MASK; + dma_cache_wback((u32)rd, sizeof(*rd)); rd = &lp->rd_ring[lp->rx_next_done]; __raw_writel( ~DMAS_d_m, &lp->rx_dma_regs->dmas); } @@ -809,6 +814,7 @@ static void rc32434_rx_tasklet(unsigned long rx_data_dev) rd->devcs = 0; skb = lp->rx_skb[lp->rx_next_done]; rd->ca = CPHYSADDR(skb->data); + dma_cache_wback((u32)rd, sizeof(*rd)); rc32434_chain_rx(lp,rd); }