diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-03-31 10:46:21 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-10-17 14:35:21 +0100 |
commit | dbd69f5aeb1ae857c76daf1f0abeaa39015a6886 (patch) | |
tree | cd3b4fd2b3d3fb153dff3de648ef9d7315a1defc /drivers/net/ethernet/freescale/fec.h | |
parent | ada950bc676bbcd7140f1422e700e183b376f2ab (diff) |
net: fec: add locking for MDIO bus access
Both fec_restart() and fec_stop() both perform a reset of the FEC. This
reset can result in an in-process MDIO transfer being terminated, which
can lead to the MDIO read/write functions timing out. Add some locking
to prevent this occuring.
We can't use a spinlock for this as the MDIO accessor functions use
wait_for_completion_timeout(), which sleeps.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/net/ethernet/freescale/fec.h')
-rw-r--r-- | drivers/net/ethernet/freescale/fec.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index 19210acabcaa..1757aa7eb473 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -14,6 +14,7 @@ /****************************************************************************/ #include <linux/clocksource.h> +#include <linux/mutex.h> #include <linux/net_tstamp.h> #include <linux/ptp_clock_kernel.h> @@ -310,6 +311,8 @@ struct fec_enet_private { char *tso_hdrs; dma_addr_t tso_hdrs_dma; + struct mutex mutex; + struct platform_device *pdev; int dev_id; |