sfc: Limit some hardware workarounds to Falcon
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b895d73e98
commit
fb45f2c154
|
@ -683,7 +683,7 @@ static int efx_ethtool_set_pauseparam(struct net_device *net_dev,
|
||||||
* and fix it be cycling transmit flow control on this end. */
|
* and fix it be cycling transmit flow control on this end. */
|
||||||
reset = (wanted_fc & EFX_FC_TX) && !(efx->wanted_fc & EFX_FC_TX);
|
reset = (wanted_fc & EFX_FC_TX) && !(efx->wanted_fc & EFX_FC_TX);
|
||||||
if (EFX_WORKAROUND_11482(efx) && reset) {
|
if (EFX_WORKAROUND_11482(efx) && reset) {
|
||||||
if (falcon_rev(efx) >= FALCON_REV_B0) {
|
if (falcon_rev(efx) == FALCON_REV_B0) {
|
||||||
/* Recover by resetting the EM block */
|
/* Recover by resetting the EM block */
|
||||||
if (efx->link_state.up)
|
if (efx->link_state.up)
|
||||||
falcon_drain_tx_fifo(efx);
|
falcon_drain_tx_fifo(efx);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#define EFX_WORKAROUND_ALWAYS(efx) 1
|
#define EFX_WORKAROUND_ALWAYS(efx) 1
|
||||||
#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)
|
#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)
|
||||||
|
#define EFX_WORKAROUND_FALCON_AB(efx) (falcon_rev(efx) <= FALCON_REV_B0)
|
||||||
#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)
|
#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)
|
||||||
#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \
|
#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \
|
||||||
(efx)->phy_type == PHY_TYPE_SFT9001B)
|
(efx)->phy_type == PHY_TYPE_SFT9001B)
|
||||||
|
@ -33,11 +34,11 @@
|
||||||
* or a PCIe error (bug 11028) */
|
* or a PCIe error (bug 11028) */
|
||||||
#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS
|
#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS
|
||||||
/* Transmit flow control may get disabled */
|
/* Transmit flow control may get disabled */
|
||||||
#define EFX_WORKAROUND_11482 EFX_WORKAROUND_ALWAYS
|
#define EFX_WORKAROUND_11482 EFX_WORKAROUND_FALCON_AB
|
||||||
/* Flush events can take a very long time to appear */
|
/* Flush events can take a very long time to appear */
|
||||||
#define EFX_WORKAROUND_11557 EFX_WORKAROUND_ALWAYS
|
#define EFX_WORKAROUND_11557 EFX_WORKAROUND_ALWAYS
|
||||||
/* Truncated IPv4 packets can confuse the TX packet parser */
|
/* Truncated IPv4 packets can confuse the TX packet parser */
|
||||||
#define EFX_WORKAROUND_15592 EFX_WORKAROUND_ALWAYS
|
#define EFX_WORKAROUND_15592 EFX_WORKAROUND_FALCON_AB
|
||||||
|
|
||||||
/* Spurious parity errors in TSORT buffers */
|
/* Spurious parity errors in TSORT buffers */
|
||||||
#define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A
|
#define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A
|
||||||
|
|
Loading…
Reference in New Issue