Skip to content

Commit

Permalink
tg3: Refine tg3_vlan_rx_register()
Browse files Browse the repository at this point in the history
tg3_vlan_rx_register() touches the hardware if netif_running() returns
false.  This patch fixes the problem.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Matt Carlson authored and David S. Miller committed Feb 27, 2009
1 parent 7e5856b commit 844b3ee
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions drivers/net/tg3.c
Original file line number Diff line number Diff line change
Expand Up @@ -9896,8 +9896,12 @@ static void tg3_vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
{
struct tg3 *tp = netdev_priv(dev);

if (netif_running(dev))
tg3_netif_stop(tp);
if (!netif_running(dev)) {
tp->vlgrp = grp;
return;
}

tg3_netif_stop(tp);

tg3_full_lock(tp, 0);

Expand All @@ -9906,8 +9910,7 @@ static void tg3_vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
/* Update RX_MODE_KEEP_VLAN_TAG bit in RX_MODE register. */
__tg3_set_rx_mode(dev);

if (netif_running(dev))
tg3_netif_start(tp);
tg3_netif_start(tp);

tg3_full_unlock(tp);
}
Expand Down

0 comments on commit 844b3ee

Please sign in to comment.