mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-09-12 11:26:47 +03:00
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14173 3c298f89-4303-0410-b956-a3cf2f4a3e73
41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
Triggering TX before the write to the DMA status mask register leads to
|
|
transferring packets with maximum payload no matter what the actual
|
|
packet size is.
|
|
While here, also trigger RX scheduling after writing the DMA status mask
|
|
register, like it was in the original driver before it was sent
|
|
upstream.
|
|
|
|
Signed-off-by: Phil Sutter <n0-1@freewrt.org>
|
|
---
|
|
--- a/drivers/net/korina.c 2009-01-19 23:27:41.000000000 +0100
|
|
+++ b/drivers/net/korina.c 2009-01-19 23:29:08.000000000 +0100
|
|
@@ -330,12 +330,12 @@
|
|
|
|
dmas = readl(&lp->rx_dma_regs->dmas);
|
|
if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) {
|
|
- netif_rx_schedule(dev, &lp->napi);
|
|
-
|
|
dmasm = readl(&lp->rx_dma_regs->dmasm);
|
|
writel(dmasm | (DMA_STAT_DONE |
|
|
DMA_STAT_HALT | DMA_STAT_ERR),
|
|
&lp->rx_dma_regs->dmasm);
|
|
+
|
|
+ netif_rx_schedule(dev, &lp->napi);
|
|
|
|
if (dmas & DMA_STAT_ERR)
|
|
printk(KERN_ERR DRV_NAME "%s: DMA error\n", dev->name);
|
|
@@ -621,11 +621,11 @@
|
|
dmas = readl(&lp->tx_dma_regs->dmas);
|
|
|
|
if (dmas & (DMA_STAT_FINI | DMA_STAT_ERR)) {
|
|
- korina_tx(dev);
|
|
-
|
|
dmasm = readl(&lp->tx_dma_regs->dmasm);
|
|
writel(dmasm | (DMA_STAT_FINI | DMA_STAT_ERR),
|
|
&lp->tx_dma_regs->dmasm);
|
|
+
|
|
+ korina_tx(dev);
|
|
|
|
if (lp->tx_chain_status == desc_filled &&
|
|
(readl(&(lp->tx_dma_regs->dmandptr)) == 0)) {
|