RE: [RESEND PATCH] gianfar: keep vlan related state when restart
From: Haruki Dai-R35557 <hidden>
Date: 2009-08-08 09:07:34
Also in:
lkml
-----Original Message----- From: Yong Zhang [mailto:yong.zhang0@gmail.com] Sent: Friday, August 07, 2009 9:37 PM To: davem@davemloft.net; Fleming Andy-AFLEMING; Haruki Dai-R35557 Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org Subject: [RESEND PATCH] 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 <redacted>
Thanks for the catch. This patch looks fine to me. Acked-by: Dai Haruki <redacted>
quoted hunk ↗ jump to hunk
--- 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 f8ffcbf..e212f2c 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c@@ -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 {
--
1.6.0.4