summaryrefslogtreecommitdiff
path: root/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm
diff options
context:
space:
mode:
authorNélio Laranjeiro2012-06-21 11:18:57 +0200
committerNélio Laranjeiro2012-09-06 13:54:47 +0200
commit590d4fce37dd211129888947c12d7d2e32a856d9 (patch)
treefe14ea475cbcd16ee7e1a0af3b7252983cb566aa /cleopatre/linux-2.6.25.10-spc300/drivers/net/arm
parent570c908bb99348135e6aa76b52a102c30b221f84 (diff)
cleo/linux/drv/net/arm/synop3504: only reset TX desc on link_up, closes #3195
All received packets are still for linux or any application on linux or even for cesar, so those packets can be processed. On the contrary, TX descriptors are for the world behind the Ethernet, this world could have change between the link_down and the link_up, so it is better to discard packets currently present in the DMA.
Diffstat (limited to 'cleopatre/linux-2.6.25.10-spc300/drivers/net/arm')
-rw-r--r--cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
index bf63053909..f340e45d87 100644
--- a/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
+++ b/cleopatre/linux-2.6.25.10-spc300/drivers/net/arm/synop3504.c
@@ -1231,15 +1231,11 @@ static void synop3504_on_link_up(struct net_device *dev)
struct net_priv *priv = (struct net_priv *)dev->priv;
Synopsys *synop = &priv->synop;
- //Reset descriptors
+ //Reset TX descriptors.
+ SynopsysDisableInt(synop);
+ SynopsysStopTx(synop);
synop3504_txdesc_reset(dev);
- synop3504_rxdesc_reset(dev);
-
- //Start TX and RX DMA
SynopsysStartTx(synop);
- SynopsysStartRx(synop);
-
- //Enable Interrupts
SynopsysEnableInt(synop);
//restart transmit