diff options
Diffstat (limited to 'drivers/net/gianfar.c')
-rw-r--r-- | drivers/net/gianfar.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index efcbeb6c8673..3f7eab42aef1 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -1423,15 +1423,11 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
1423 | { | 1423 | { |
1424 | struct gfar_private *priv = netdev_priv(dev); | 1424 | struct gfar_private *priv = netdev_priv(dev); |
1425 | unsigned long flags; | 1425 | unsigned long flags; |
1426 | struct vlan_group *old_grp; | ||
1427 | u32 tempval; | 1426 | u32 tempval; |
1428 | 1427 | ||
1429 | spin_lock_irqsave(&priv->rxlock, flags); | 1428 | spin_lock_irqsave(&priv->rxlock, flags); |
1430 | 1429 | ||
1431 | old_grp = priv->vlgrp; | 1430 | priv->vlgrp = grp; |
1432 | |||
1433 | if (old_grp == grp) | ||
1434 | return; | ||
1435 | 1431 | ||
1436 | if (grp) { | 1432 | if (grp) { |
1437 | /* Enable VLAN tag insertion */ | 1433 | /* Enable VLAN tag insertion */ |
@@ -1622,10 +1618,18 @@ static int gfar_clean_tx_ring(struct net_device *dev) | |||
1622 | static void gfar_schedule_cleanup(struct net_device *dev) | 1618 | static void gfar_schedule_cleanup(struct net_device *dev) |
1623 | { | 1619 | { |
1624 | struct gfar_private *priv = netdev_priv(dev); | 1620 | struct gfar_private *priv = netdev_priv(dev); |
1621 | unsigned long flags; | ||
1622 | |||
1623 | spin_lock_irqsave(&priv->txlock, flags); | ||
1624 | spin_lock(&priv->rxlock); | ||
1625 | |||
1625 | if (netif_rx_schedule_prep(&priv->napi)) { | 1626 | if (netif_rx_schedule_prep(&priv->napi)) { |
1626 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); | 1627 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); |
1627 | __netif_rx_schedule(&priv->napi); | 1628 | __netif_rx_schedule(&priv->napi); |
1628 | } | 1629 | } |
1630 | |||
1631 | spin_unlock(&priv->rxlock); | ||
1632 | spin_unlock_irqrestore(&priv->txlock, flags); | ||
1629 | } | 1633 | } |
1630 | 1634 | ||
1631 | /* Interrupt Handler for Transmit complete */ | 1635 | /* Interrupt Handler for Transmit complete */ |