diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/sfc/falcon.c | 4 | ||||
-rw-r--r-- | drivers/net/sfc/phy.h | 1 | ||||
-rw-r--r-- | drivers/net/sfc/tenxpress.c | 20 | ||||
-rw-r--r-- | drivers/net/sfc/workarounds.h | 3 |
4 files changed, 0 insertions, 28 deletions
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c index 5b9f2d9cc4ed..ae7b0b48bfd1 100644 --- a/drivers/net/sfc/falcon.c +++ b/drivers/net/sfc/falcon.c | |||
@@ -824,10 +824,6 @@ static void falcon_handle_rx_not_ok(struct efx_rx_queue *rx_queue, | |||
824 | rx_ev_pause_frm ? " [PAUSE]" : ""); | 824 | rx_ev_pause_frm ? " [PAUSE]" : ""); |
825 | } | 825 | } |
826 | #endif | 826 | #endif |
827 | |||
828 | if (unlikely(rx_ev_eth_crc_err && EFX_WORKAROUND_10750(efx) && | ||
829 | efx->phy_type == PHY_TYPE_SFX7101)) | ||
830 | tenxpress_crc_err(efx); | ||
831 | } | 827 | } |
832 | 828 | ||
833 | /* Handle receive events that are not in-order. */ | 829 | /* Handle receive events that are not in-order. */ |
diff --git a/drivers/net/sfc/phy.h b/drivers/net/sfc/phy.h index 58c493ef81bb..07e855c148bc 100644 --- a/drivers/net/sfc/phy.h +++ b/drivers/net/sfc/phy.h | |||
@@ -17,7 +17,6 @@ extern struct efx_phy_operations falcon_sfx7101_phy_ops; | |||
17 | extern struct efx_phy_operations falcon_sft9001_phy_ops; | 17 | extern struct efx_phy_operations falcon_sft9001_phy_ops; |
18 | 18 | ||
19 | extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink); | 19 | extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink); |
20 | extern void tenxpress_crc_err(struct efx_nic *efx); | ||
21 | 20 | ||
22 | /**************************************************************************** | 21 | /**************************************************************************** |
23 | * Exported functions from the driver for XFP optical PHYs | 22 | * Exported functions from the driver for XFP optical PHYs |
diff --git a/drivers/net/sfc/tenxpress.c b/drivers/net/sfc/tenxpress.c index 19cfc318954c..80c8d6e3131e 100644 --- a/drivers/net/sfc/tenxpress.c +++ b/drivers/net/sfc/tenxpress.c | |||
@@ -189,25 +189,12 @@ | |||
189 | * rails */ | 189 | * rails */ |
190 | #define LNPGA_PDOWN_WAIT (HZ / 5) | 190 | #define LNPGA_PDOWN_WAIT (HZ / 5) |
191 | 191 | ||
192 | static int crc_error_reset_threshold = 100; | ||
193 | module_param(crc_error_reset_threshold, int, 0644); | ||
194 | MODULE_PARM_DESC(crc_error_reset_threshold, | ||
195 | "Max number of CRC errors before XAUI reset"); | ||
196 | |||
197 | struct tenxpress_phy_data { | 192 | struct tenxpress_phy_data { |
198 | enum efx_loopback_mode loopback_mode; | 193 | enum efx_loopback_mode loopback_mode; |
199 | atomic_t bad_crc_count; | ||
200 | enum efx_phy_mode phy_mode; | 194 | enum efx_phy_mode phy_mode; |
201 | int bad_lp_tries; | 195 | int bad_lp_tries; |
202 | }; | 196 | }; |
203 | 197 | ||
204 | void tenxpress_crc_err(struct efx_nic *efx) | ||
205 | { | ||
206 | struct tenxpress_phy_data *phy_data = efx->phy_data; | ||
207 | if (phy_data != NULL) | ||
208 | atomic_inc(&phy_data->bad_crc_count); | ||
209 | } | ||
210 | |||
211 | static ssize_t show_phy_short_reach(struct device *dev, | 198 | static ssize_t show_phy_short_reach(struct device *dev, |
212 | struct device_attribute *attr, char *buf) | 199 | struct device_attribute *attr, char *buf) |
213 | { | 200 | { |
@@ -627,13 +614,6 @@ static void tenxpress_phy_poll(struct efx_nic *efx) | |||
627 | 614 | ||
628 | if (phy_data->phy_mode != PHY_MODE_NORMAL) | 615 | if (phy_data->phy_mode != PHY_MODE_NORMAL) |
629 | return; | 616 | return; |
630 | |||
631 | if (EFX_WORKAROUND_10750(efx) && | ||
632 | atomic_read(&phy_data->bad_crc_count) > crc_error_reset_threshold) { | ||
633 | EFX_ERR(efx, "Resetting XAUI due to too many CRC errors\n"); | ||
634 | falcon_reset_xaui(efx); | ||
635 | atomic_set(&phy_data->bad_crc_count, 0); | ||
636 | } | ||
637 | } | 617 | } |
638 | 618 | ||
639 | static void tenxpress_phy_fini(struct efx_nic *efx) | 619 | static void tenxpress_phy_fini(struct efx_nic *efx) |
diff --git a/drivers/net/sfc/workarounds.h b/drivers/net/sfc/workarounds.h index 82e03e1d7371..797a0cf7cd6b 100644 --- a/drivers/net/sfc/workarounds.h +++ b/drivers/net/sfc/workarounds.h | |||
@@ -18,7 +18,6 @@ | |||
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_10G(efx) EFX_IS10G(efx) | 20 | #define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx) |
21 | #define EFX_WORKAROUND_SFX7101(efx) ((efx)->phy_type == PHY_TYPE_SFX7101) | ||
22 | #define EFX_WORKAROUND_SFT9001A(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A) | 21 | #define EFX_WORKAROUND_SFT9001A(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A) |
23 | 22 | ||
24 | /* XAUI resets if link not detected */ | 23 | /* XAUI resets if link not detected */ |
@@ -29,8 +28,6 @@ | |||
29 | #define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G | 28 | #define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G |
30 | /* TX pkt parser problem with <= 16 byte TXes */ | 29 | /* TX pkt parser problem with <= 16 byte TXes */ |
31 | #define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS | 30 | #define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS |
32 | /* Low rate CRC errors require XAUI reset */ | ||
33 | #define EFX_WORKAROUND_10750 EFX_WORKAROUND_SFX7101 | ||
34 | /* TX_EV_PKT_ERR can be caused by a dangling TX descriptor | 31 | /* TX_EV_PKT_ERR can be caused by a dangling TX descriptor |
35 | * or a PCIe error (bug 11028) */ | 32 | * or a PCIe error (bug 11028) */ |
36 | #define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS | 33 | #define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS |