mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-09-20 02:24:45 +03:00
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)) {
|