2019-06-04 10:11:33 +02:00
/* SPDX-License-Identifier: GPL-2.0-only */
2008-04-27 12:55:59 +01:00
/****************************************************************************
2013-08-29 23:32:48 +01:00
* Driver for Solarflare network controllers and boards
* Copyright 2006 - 2013 Solarflare Communications Inc .
2008-04-27 12:55:59 +01:00
*/
# ifndef EFX_WORKAROUNDS_H
# define EFX_WORKAROUNDS_H
/*
* Hardware workarounds .
* Bug numbers are from Solarflare ' s Bugzilla .
*/
2009-11-29 15:15:41 +00:00
# define EFX_WORKAROUND_SIENA(efx) (efx_nic_rev(efx) == EFX_REV_SIENA_A0)
2017-04-25 13:44:54 +01:00
# define EFX_WORKAROUND_EF10(efx) (efx_nic_rev(efx) >= EFX_REV_HUNT_A0)
2010-09-22 10:00:11 +00:00
# define EFX_WORKAROUND_10G(efx) 1
2008-04-27 12:55:59 +01:00
2008-11-04 20:34:56 +00:00
/* Bit-bashed I2C reads cause performance drop */
2008-12-12 22:00:49 -08:00
# define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G
2009-11-29 15:15:41 +00:00
/* Legacy interrupt storm when interrupt fifo fills */
# define EFX_WORKAROUND_17213 EFX_WORKAROUND_SIENA
2008-04-27 12:55:59 +01:00
2013-08-29 19:19:29 +01:00
/* Lockup when writing event block registers at gen2/gen3 */
# define EFX_EF10_WORKAROUND_35388(efx) \
( ( ( struct efx_ef10_nic_data * ) efx - > nic_data ) - > workaround_35388 )
# define EFX_WORKAROUND_35388(efx) \
( efx_nic_rev ( efx ) = = EFX_REV_HUNT_A0 & & EFX_EF10_WORKAROUND_35388 ( efx ) )
2016-08-11 13:02:09 +01:00
/* Moderation timer access must go through MCDI */
# define EFX_EF10_WORKAROUND_61265(efx) \
( ( ( struct efx_ef10_nic_data * ) efx - > nic_data ) - > workaround_61265 )
2008-04-27 12:55:59 +01:00
# endif /* EFX_WORKAROUNDS_H */