diff options
Diffstat (limited to 'drivers/net/sfc/workarounds.h')
-rw-r--r-- | drivers/net/sfc/workarounds.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/sfc/workarounds.h b/drivers/net/sfc/workarounds.h index c821c15445a0..acd9c734e483 100644 --- a/drivers/net/sfc/workarounds.h +++ b/drivers/net/sfc/workarounds.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | * Driver for Solarflare Solarstorm network controllers and boards | 2 | * Driver for Solarflare Solarstorm network controllers and boards |
3 | * Copyright 2006-2008 Solarflare Communications Inc. | 3 | * Copyright 2006-2009 Solarflare Communications Inc. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 5 | * This program is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License version 2 as published | 6 | * under the terms of the GNU General Public License version 2 as published |
@@ -16,7 +16,9 @@ | |||
16 | */ | 16 | */ |
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) (efx_nic_rev(efx) <= EFX_REV_FALCON_A1) |
20 | #define EFX_WORKAROUND_FALCON_AB(efx) (efx_nic_rev(efx) <= EFX_REV_FALCON_B0) | ||
21 | #define EFX_WORKAROUND_SIENA(efx) (efx_nic_rev(efx) == EFX_REV_SIENA_A0) | ||
20 | #define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx) | 22 | #define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx) |
21 | #define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \ | 23 | #define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \ |
22 | (efx)->phy_type == PHY_TYPE_SFT9001B) | 24 | (efx)->phy_type == PHY_TYPE_SFT9001B) |
@@ -27,20 +29,22 @@ | |||
27 | #define EFX_WORKAROUND_7575 EFX_WORKAROUND_ALWAYS | 29 | #define EFX_WORKAROUND_7575 EFX_WORKAROUND_ALWAYS |
28 | /* Bit-bashed I2C reads cause performance drop */ | 30 | /* Bit-bashed I2C reads cause performance drop */ |
29 | #define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G | 31 | #define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G |
30 | /* TX pkt parser problem with <= 16 byte TXes */ | ||
31 | #define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS | ||
32 | /* TX_EV_PKT_ERR can be caused by a dangling TX descriptor | 32 | /* TX_EV_PKT_ERR can be caused by a dangling TX descriptor |
33 | * or a PCIe error (bug 11028) */ | 33 | * or a PCIe error (bug 11028) */ |
34 | #define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS | 34 | #define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS |
35 | /* Transmit flow control may get disabled */ | 35 | /* Transmit flow control may get disabled */ |
36 | #define EFX_WORKAROUND_11482 EFX_WORKAROUND_ALWAYS | 36 | #define EFX_WORKAROUND_11482 EFX_WORKAROUND_FALCON_AB |
37 | /* Flush events can take a very long time to appear */ | ||
38 | #define EFX_WORKAROUND_11557 EFX_WORKAROUND_ALWAYS | ||
39 | /* Truncated IPv4 packets can confuse the TX packet parser */ | 37 | /* Truncated IPv4 packets can confuse the TX packet parser */ |
40 | #define EFX_WORKAROUND_15592 EFX_WORKAROUND_ALWAYS | 38 | #define EFX_WORKAROUND_15592 EFX_WORKAROUND_FALCON_AB |
39 | /* Legacy ISR read can return zero once */ | ||
40 | #define EFX_WORKAROUND_15783 EFX_WORKAROUND_SIENA | ||
41 | /* Legacy interrupt storm when interrupt fifo fills */ | ||
42 | #define EFX_WORKAROUND_17213 EFX_WORKAROUND_SIENA | ||
41 | 43 | ||
42 | /* Spurious parity errors in TSORT buffers */ | 44 | /* Spurious parity errors in TSORT buffers */ |
43 | #define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A | 45 | #define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A |
46 | /* Unaligned read request >512 bytes after aligning may break TSORT */ | ||
47 | #define EFX_WORKAROUND_5391 EFX_WORKAROUND_FALCON_A | ||
44 | /* iSCSI parsing errors */ | 48 | /* iSCSI parsing errors */ |
45 | #define EFX_WORKAROUND_5583 EFX_WORKAROUND_FALCON_A | 49 | #define EFX_WORKAROUND_5583 EFX_WORKAROUND_FALCON_A |
46 | /* RX events go missing */ | 50 | /* RX events go missing */ |