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
0d672e9f8a
commit
ed199facd0
1 changed files with 6 additions and 2 deletions
|
@ -11158,7 +11158,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);
|
||||
|
@ -11174,7 +11176,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…
Add table
Reference in a new issue