aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sfc
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2009-11-28 00:35:09 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-29 02:58:52 -0500
commitfb45f2c154be470ad950bcf16f3662ec0ca48695 (patch)
treead737364a12db15a08ba3f8e5f2152a6dabd4dce /drivers/net/sfc
parentb895d73e9836fccc402e48a8f63e6805d2edc87b (diff)
sfc: Limit some hardware workarounds to Falcon
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sfc')
-rw-r--r--drivers/net/sfc/ethtool.c2
-rw-r--r--drivers/net/sfc/workarounds.h5
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/sfc/ethtool.c b/drivers/net/sfc/ethtool.c
index bb9abf24f545..6515b8a4b38b 100644
--- a/drivers/net/sfc/ethtool.c
+++ b/drivers/net/sfc/ethtool.c
@@ -683,7 +683,7 @@ static int efx_ethtool_set_pauseparam(struct net_device *net_dev,
683 * and fix it be cycling transmit flow control on this end. */ 683 * and fix it be cycling transmit flow control on this end. */
684 reset = (wanted_fc & EFX_FC_TX) && !(efx->wanted_fc & EFX_FC_TX); 684 reset = (wanted_fc & EFX_FC_TX) && !(efx->wanted_fc & EFX_FC_TX);
685 if (EFX_WORKAROUND_11482(efx) && reset) { 685 if (EFX_WORKAROUND_11482(efx) && reset) {
686 if (falcon_rev(efx) >= FALCON_REV_B0) { 686 if (falcon_rev(efx) == FALCON_REV_B0) {
687 /* Recover by resetting the EM block */ 687 /* Recover by resetting the EM block */
688 if (efx->link_state.up) 688 if (efx->link_state.up)
689 falcon_drain_tx_fifo(efx); 689 falcon_drain_tx_fifo(efx);
diff --git a/drivers/net/sfc/workarounds.h b/drivers/net/sfc/workarounds.h
index 325029949488..84e579e40b88 100644
--- a/drivers/net/sfc/workarounds.h
+++ b/drivers/net/sfc/workarounds.h
@@ -17,6 +17,7 @@
17 17
18#define EFX_WORKAROUND_ALWAYS(efx) 1 18#define EFX_WORKAROUND_ALWAYS(efx) 1
19#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1) 19#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)
20#define EFX_WORKAROUND_FALCON_AB(efx) (falcon_rev(efx) <= FALCON_REV_B0)
20#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx) 21#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)
21#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \ 22#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \
22 (efx)->phy_type == PHY_TYPE_SFT9001B) 23 (efx)->phy_type == PHY_TYPE_SFT9001B)
@@ -33,11 +34,11 @@
33 * or a PCIe error (bug 11028) */ 34 * or a PCIe error (bug 11028) */
34#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS 35#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS
35/* Transmit flow control may get disabled */ 36/* Transmit flow control may get disabled */
36#define EFX_WORKAROUND_11482 EFX_WORKAROUND_ALWAYS 37#define EFX_WORKAROUND_11482 EFX_WORKAROUND_FALCON_AB
37/* Flush events can take a very long time to appear */ 38/* Flush events can take a very long time to appear */
38#define EFX_WORKAROUND_11557 EFX_WORKAROUND_ALWAYS 39#define EFX_WORKAROUND_11557 EFX_WORKAROUND_ALWAYS
39/* Truncated IPv4 packets can confuse the TX packet parser */ 40/* Truncated IPv4 packets can confuse the TX packet parser */
40#define EFX_WORKAROUND_15592 EFX_WORKAROUND_ALWAYS 41#define EFX_WORKAROUND_15592 EFX_WORKAROUND_FALCON_AB
41 42
42/* Spurious parity errors in TSORT buffers */ 43/* Spurious parity errors in TSORT buffers */
43#define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A 44#define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A