diff options
author | Claudiu Manoil <claudiu.manoil@freescale.com> | 2014-04-23 17:38:47 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-04-24 21:36:16 +0400 |
commit | 98a46d46d1bc983125b6ff9a0e831050a7011713 (patch) | |
tree | 6c4cff53b978cef5f48983d09736796ec1e7d140 /drivers/net/ethernet/freescale/gianfar_ethtool.c | |
parent | 00d0cd38fd570959241cfb3703d8a19e6ef07d86 (diff) | |
download | linux-98a46d46d1bc983125b6ff9a0e831050a7011713.tar.xz |
gianfar: Check if phydev present on ethtool -A
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>
Diffstat (limited to 'drivers/net/ethernet/freescale/gianfar_ethtool.c')
-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 891dbee6e6c1..76d70708f864 100644 --- a/drivers/net/ethernet/freescale/gianfar_ethtool.c +++ b/drivers/net/ethernet/freescale/gianfar_ethtool.c @@ -533,6 +533,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))) |