diff options
author | Claudiu Manoil <claudiu.manoil@freescale.com> | 2014-04-23 16:38:47 +0300 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2017-03-03 11:44:51 +0100 |
commit | b24cd48cfb7dd16759feb6e6e5f1b0533ed6ae2b (patch) | |
tree | 7981a83e55807a181691a4c95ac9c6fe94426d8b | |
parent | 42e99f1ca072b4e1c0ea6682d7c2c63929f3f3e2 (diff) |
gianfar: Check if phydev present on ethtool -A
commit 98a46d46d1bc983125b6ff9a0e831050a7011713 upstream.
This fixes a seg fault on 'ethtool -A' entry if the
interface is down. Obviously we need to have the
phy device initialized / "connected" (see of_phy_connect())
to be able to advertise pause frame capabilities.
Fixes: 23402bddf9e56eecb27bbd1e5467b3b79b3dbe58
Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r-- | drivers/net/ethernet/freescale/gianfar_ethtool.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/gianfar_ethtool.c b/drivers/net/ethernet/freescale/gianfar_ethtool.c index d3d7ede27ef1..c0f7328adb13 100644 --- a/drivers/net/ethernet/freescale/gianfar_ethtool.c +++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c @@ -553,6 +553,9 @@ static int gfar_spauseparam(struct net_device *dev, struct gfar __iomem *regs = priv->gfargrp[0].regs; u32 oldadv, newadv; + if (!phydev) + return -ENODEV; + if (!(phydev->supported & SUPPORTED_Pause) || (!(phydev->supported & SUPPORTED_Asym_Pause) && (epause->rx_pause != epause->tx_pause))) |