diff options
Diffstat (limited to 'drivers/net/gianfar.c')
| -rw-r--r-- | drivers/net/gianfar.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index f8ffcbf0bc39..e212f2c5448b 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
| @@ -936,6 +936,7 @@ int startup_gfar(struct net_device *dev) | |||
| 936 | struct gfar __iomem *regs = priv->regs; | 936 | struct gfar __iomem *regs = priv->regs; |
| 937 | int err = 0; | 937 | int err = 0; |
| 938 | u32 rctrl = 0; | 938 | u32 rctrl = 0; |
| 939 | u32 tctrl = 0; | ||
| 939 | u32 attrs = 0; | 940 | u32 attrs = 0; |
| 940 | 941 | ||
| 941 | gfar_write(®s->imask, IMASK_INIT_CLEAR); | 942 | gfar_write(®s->imask, IMASK_INIT_CLEAR); |
| @@ -1111,11 +1112,19 @@ int startup_gfar(struct net_device *dev) | |||
| 1111 | rctrl |= RCTRL_PADDING(priv->padding); | 1112 | rctrl |= RCTRL_PADDING(priv->padding); |
| 1112 | } | 1113 | } |
| 1113 | 1114 | ||
| 1115 | /* keep vlan related bits if it's enabled */ | ||
| 1116 | if (priv->vlgrp) { | ||
| 1117 | rctrl |= RCTRL_VLEX | RCTRL_PRSDEP_INIT; | ||
| 1118 | tctrl |= TCTRL_VLINS; | ||
| 1119 | } | ||
| 1120 | |||
| 1114 | /* Init rctrl based on our settings */ | 1121 | /* Init rctrl based on our settings */ |
| 1115 | gfar_write(&priv->regs->rctrl, rctrl); | 1122 | gfar_write(&priv->regs->rctrl, rctrl); |
| 1116 | 1123 | ||
| 1117 | if (dev->features & NETIF_F_IP_CSUM) | 1124 | if (dev->features & NETIF_F_IP_CSUM) |
| 1118 | gfar_write(&priv->regs->tctrl, TCTRL_INIT_CSUM); | 1125 | tctrl |= TCTRL_INIT_CSUM; |
| 1126 | |||
| 1127 | gfar_write(&priv->regs->tctrl, tctrl); | ||
| 1119 | 1128 | ||
| 1120 | /* Set the extraction length and index */ | 1129 | /* Set the extraction length and index */ |
| 1121 | attrs = ATTRELI_EL(priv->rx_stash_size) | | 1130 | attrs = ATTRELI_EL(priv->rx_stash_size) | |
| @@ -1450,7 +1459,6 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
| 1450 | 1459 | ||
| 1451 | /* Enable VLAN tag extraction */ | 1460 | /* Enable VLAN tag extraction */ |
| 1452 | tempval = gfar_read(&priv->regs->rctrl); | 1461 | tempval = gfar_read(&priv->regs->rctrl); |
| 1453 | tempval |= RCTRL_VLEX; | ||
| 1454 | tempval |= (RCTRL_VLEX | RCTRL_PRSDEP_INIT); | 1462 | tempval |= (RCTRL_VLEX | RCTRL_PRSDEP_INIT); |
| 1455 | gfar_write(&priv->regs->rctrl, tempval); | 1463 | gfar_write(&priv->regs->rctrl, tempval); |
| 1456 | } else { | 1464 | } else { |
