From 19bbc5463b66acf5b4dab0dc0e77e29bd3d559f5 Mon Sep 17 00:00:00 2001 From: Guo-Fu Tseng Date: Thu, 16 Dec 2010 21:23:51 +0800 Subject: [PATCH] jme: Fix hardware action of full-duplex Clear Transmit Timer/Retry setting while full-duplex. --- jme.c | 6 ++---- jme.h | 8 ++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/jme.c b/jme.c index 490bc0f..6996d04 100644 --- a/jme.c +++ b/jme.c @@ -439,16 +439,14 @@ jme_check_link(struct net_device *netdev, int testonly) if (phylink & PHY_LINK_DUPLEX) { jwrite32(jme, JME_TXMCS, TXMCS_DEFAULT); + jwrite32(jme, JME_TXTRHD, TXTRHD_FULLDUPLEX); ghc |= GHC_DPX; } else { jwrite32(jme, JME_TXMCS, TXMCS_DEFAULT | TXMCS_BACKOFF | TXMCS_CARRIERSENSE | TXMCS_COLLISION); - jwrite32(jme, JME_TXTRHD, TXTRHD_TXPEN | - ((0x2000 << TXTRHD_TXP_SHIFT) & TXTRHD_TXP) | - TXTRHD_TXREN | - ((8 << TXTRHD_TXRL_SHIFT) & TXTRHD_TXRL)); + jwrite32(jme, JME_TXTRHD, TXTRHD_HALFDUPLEX); } gpreg1 = GPREG1_DEFAULT; diff --git a/jme.h b/jme.h index dc4af57..b33bc5b 100644 --- a/jme.h +++ b/jme.h @@ -658,6 +658,14 @@ enum jme_txtrhd_shifts { TXTRHD_TXRL_SHIFT = 0, }; +enum jme_txtrhd_values { + TXTRHD_FULLDUPLEX = 0x00000000, + TXTRHD_HALFDUPLEX = TXTRHD_TXPEN | + ((0x2000 << TXTRHD_TXP_SHIFT) & TXTRHD_TXP) | + TXTRHD_TXREN | + ((8 << TXTRHD_TXRL_SHIFT) & TXTRHD_TXRL), +}; + /* * RX Control/Status Bits */ -- 2.39.3