tg3: Restrict phy ioctl access
If management firmware is present and the device is down, the firmware will assume control of the phy. If a phy access were allowed from the host, it will collide with firmware phy accesses, resulting in unpredictable behavior. This patch fixes the problem by disallowing phy accesses during the problematic condition. Signed-off-by: Matt Carlson <mcarlson@broadcom.com> Reviewed-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0583d52114
commit
f746a3136a
|
@ -11165,7 +11165,9 @@ static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
if (tp->phy_flags & TG3_PHYFLG_PHY_SERDES)
|
||||
break; /* We have no PHY */
|
||||
|
||||
if (tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER)
|
||||
if ((tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER) ||
|
||||
((tp->tg3_flags & TG3_FLAG_ENABLE_ASF) &&
|
||||
!netif_running(dev)))
|
||||
return -EAGAIN;
|
||||
|
||||
spin_lock_bh(&tp->lock);
|
||||
|
@ -11181,7 +11183,9 @@ static int tg3_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
if (tp->phy_flags & TG3_PHYFLG_PHY_SERDES)
|
||||
break; /* We have no PHY */
|
||||
|
||||
if (tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER)
|
||||
if ((tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER) ||
|
||||
((tp->tg3_flags & TG3_FLAG_ENABLE_ASF) &&
|
||||
!netif_running(dev)))
|
||||
return -EAGAIN;
|
||||
|
||||
spin_lock_bh(&tp->lock);
|
||||
|
|
Loading…
Reference in New Issue