diff options
Diffstat (limited to 'drivers/net/gianfar.c')
-rw-r--r-- | drivers/net/gianfar.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index ea530673236e..acae2d8cd688 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -351,6 +351,9 @@ static int gfar_probe(struct of_device *ofdev, | |||
351 | /* Reset MAC layer */ | 351 | /* Reset MAC layer */ |
352 | gfar_write(&priv->regs->maccfg1, MACCFG1_SOFT_RESET); | 352 | gfar_write(&priv->regs->maccfg1, MACCFG1_SOFT_RESET); |
353 | 353 | ||
354 | /* We need to delay at least 3 TX clocks */ | ||
355 | udelay(2); | ||
356 | |||
354 | tempval = (MACCFG1_TX_FLOW | MACCFG1_RX_FLOW); | 357 | tempval = (MACCFG1_TX_FLOW | MACCFG1_RX_FLOW); |
355 | gfar_write(&priv->regs->maccfg1, tempval); | 358 | gfar_write(&priv->regs->maccfg1, tempval); |
356 | 359 | ||
@@ -1423,15 +1426,11 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
1423 | { | 1426 | { |
1424 | struct gfar_private *priv = netdev_priv(dev); | 1427 | struct gfar_private *priv = netdev_priv(dev); |
1425 | unsigned long flags; | 1428 | unsigned long flags; |
1426 | struct vlan_group *old_grp; | ||
1427 | u32 tempval; | 1429 | u32 tempval; |
1428 | 1430 | ||
1429 | spin_lock_irqsave(&priv->rxlock, flags); | 1431 | spin_lock_irqsave(&priv->rxlock, flags); |
1430 | 1432 | ||
1431 | old_grp = priv->vlgrp; | 1433 | priv->vlgrp = grp; |
1432 | |||
1433 | if (old_grp == grp) | ||
1434 | return; | ||
1435 | 1434 | ||
1436 | if (grp) { | 1435 | if (grp) { |
1437 | /* Enable VLAN tag insertion */ | 1436 | /* Enable VLAN tag insertion */ |