]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gianfar: disable TX vlan based on kernel 2.6.x
authorZhu Yanjun <Yanjun.Zhu@windriver.com>
Thu, 3 Apr 2014 08:41:13 +0000 (16:41 +0800)
committerWilly Tarreau <w@1wt.eu>
Mon, 19 May 2014 05:54:24 +0000 (07:54 +0200)
2.6.x kernels require a similar logic change as commit e1653c3e
[gianfar: do vlan cleanup] and commit 51b8cbfc
[gianfar: fix bug caused by e1653c3e] introduces for newer kernels.

Since there is something wrong with tx vlan of gianfar nic driver,
in kernel(3.1+), tx vlan is disabled. But in kernel 2.6.x, tx vlan
is still enabled. Thus,gianfar nic driver can not support vlan
packets and non-vlan packets at the same time.

Signed-off-by: Zhu Yanjun <Yanjun.Zhu@windriver.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/net/gianfar.c

index 934a28fde6118b99fa8aa959df9d972e302fd32b..8aa2cf67fc856125e3f5bbe4be81eb24d6cb497a 100644 (file)
@@ -365,7 +365,7 @@ static int gfar_probe(struct of_device *ofdev,
        priv->vlgrp = NULL;
 
        if (priv->device_flags & FSL_GIANFAR_DEV_HAS_VLAN)
-               dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
+               dev->features |= NETIF_F_HW_VLAN_RX;
 
        if (priv->device_flags & FSL_GIANFAR_DEV_HAS_EXTENDED_HASH) {
                priv->extended_hash = 1;
@@ -1451,12 +1451,6 @@ static void gfar_vlan_rx_register(struct net_device *dev,
        priv->vlgrp = grp;
 
        if (grp) {
-               /* Enable VLAN tag insertion */
-               tempval = gfar_read(&priv->regs->tctrl);
-               tempval |= TCTRL_VLINS;
-
-               gfar_write(&priv->regs->tctrl, tempval);
-
                /* Enable VLAN tag extraction */
                tempval = gfar_read(&priv->regs->rctrl);
                tempval |= (RCTRL_VLEX | RCTRL_PRSDEP_INIT);