summaryrefslogtreecommitdiff
path: root/cleopatre/linux-2.6.25.10-spc300/drivers/net
diff options
context:
space:
mode:
authorBelkadi & Save2011-07-06 14:45:09 +0200
committerYacine Belkadi2011-08-12 17:31:22 +0200
commit099c06c1475d8792a56f17523e319f36e623e601 (patch)
tree64077e878753cab63b254ba1490efd9aa24ae055 /cleopatre/linux-2.6.25.10-spc300/drivers/net
parent5a45057f8c712913de5134177672e70ad4a8c659 (diff)
cleo/linux/drv/eth: don't flush the Rx FIFO when no descriptor is available, refs #2487
The Ethernet hardware is configured to send pause frames when the Rx FIFO reaches a preconfigured threshold. The hardware was configured to flush the Rx FIFO when no descriptor is available. This prevented the Rx FIFO from filling up, and thus prevented the sending of pause frames. This commit disables the flushing of the Rx FIFO, causing it to fill up and reach the threshold that triggers the sending of pause frames.
Diffstat (limited to 'cleopatre/linux-2.6.25.10-spc300/drivers/net')
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_hw.c3
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_reg.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_hw.c b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_hw.c
index 44d096e164..f13d909a6a 100644
--- a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_hw.c
+++ b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_hw.c
@@ -179,7 +179,8 @@ void SynopsysInit(Synopsys *synop, uint32_t txaddr, uint32_t rxaddr)
SynopsysWriteDmaReg(synop, DmaBusMode, DmaSeparatePBLEnable | DmaRxBurstLength32 |
DmaFixedBurstEnable | DmaBurstLength32 | DmaResetOff);
SynopsysWriteDmaReg(synop, DmaControl, DmaStoreAndForwardTx | DmaRxThreshCtrl32 | DmaEnHwFlowCtrl |
- DmaRxFlowCtrlAct3K | DmaRxFlowCtrlDeact1K | DmaTxSecondFrame);
+ DmaRxFlowCtrlAct3K | DmaRxFlowCtrlDeact1K | DmaTxSecondFrame
+ | DmaDisableFlushRxFifo);
SynopsysWriteDmaReg(synop, DmaInterrupt, 0); //All DMA Interrupts disabled
SynopsysWriteDmaReg(synop, DmaTxBaseAddr, txaddr);
SynopsysWriteDmaReg(synop, DmaRxBaseAddr, rxaddr);
diff --git a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_reg.h b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_reg.h
index 198579d9c2..304814ebb7 100644
--- a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_reg.h
+++ b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504_reg.h
@@ -399,6 +399,7 @@ enum DmaControlReg
DmaStoreAndForwardRx = 0x02000000, //Store and forward for Rx
DmaStoreAndForwardTx = 0x00200000, //Store and forward for Tx
+ DmaDisableFlushRxFifo = 0x01000000,
DmaFlushTxFifo = 0x00100000, //Tx FIFO controller is reset to default
DmaTxThreshCtrl = 0x0001C000, //Controls thre Threh of MTL tx Fifo