forked from luck/tmp_suning_uos_patched
gianfar: keep vlan related state when restart
If vlan has been enabled. ifdown followed by ifup will lost hardware related state. Also remove duplicated operation in gfar_vlan_rx_register(). Signed-off-by: Yong Zhang <yong.zhang0@gmail.com> Acked-by: Dai Haruki <dai.haruki@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
148675a7b2
commit
75c4885924
@ -936,6 +936,7 @@ int startup_gfar(struct net_device *dev)
|
||||
struct gfar __iomem *regs = priv->regs;
|
||||
int err = 0;
|
||||
u32 rctrl = 0;
|
||||
u32 tctrl = 0;
|
||||
u32 attrs = 0;
|
||||
|
||||
gfar_write(®s->imask, IMASK_INIT_CLEAR);
|
||||
@ -1111,11 +1112,19 @@ int startup_gfar(struct net_device *dev)
|
||||
rctrl |= RCTRL_PADDING(priv->padding);
|
||||
}
|
||||
|
||||
/* keep vlan related bits if it's enabled */
|
||||
if (priv->vlgrp) {
|
||||
rctrl |= RCTRL_VLEX | RCTRL_PRSDEP_INIT;
|
||||
tctrl |= TCTRL_VLINS;
|
||||
}
|
||||
|
||||
/* Init rctrl based on our settings */
|
||||
gfar_write(&priv->regs->rctrl, rctrl);
|
||||
|
||||
if (dev->features & NETIF_F_IP_CSUM)
|
||||
gfar_write(&priv->regs->tctrl, TCTRL_INIT_CSUM);
|
||||
tctrl |= TCTRL_INIT_CSUM;
|
||||
|
||||
gfar_write(&priv->regs->tctrl, tctrl);
|
||||
|
||||
/* Set the extraction length and index */
|
||||
attrs = ATTRELI_EL(priv->rx_stash_size) |
|
||||
@ -1450,7 +1459,6 @@ static void gfar_vlan_rx_register(struct net_device *dev,
|
||||
|
||||
/* Enable VLAN tag extraction */
|
||||
tempval = gfar_read(&priv->regs->rctrl);
|
||||
tempval |= RCTRL_VLEX;
|
||||
tempval |= (RCTRL_VLEX | RCTRL_PRSDEP_INIT);
|
||||
gfar_write(&priv->regs->rctrl, tempval);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user