[PATCH] tg3: fix VLAN tagging regression

Subsystems: networking drivers, the rest

STALE5503d

8 messages, 5 authors, 2011-09-21 · open the first message on its own page

[PATCH] tg3: fix VLAN tagging regression

From: Kasper Pedersen <hidden>
Date: 2011-09-20 21:25:51

commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

Change to use the CONFIG_VLAN_xxx defines instead.
Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
---
 drivers/net/tg3.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index dc3fbf6..a00d21b 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -6234,7 +6234,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		}
 	}
 
-#ifdef BCM_KERNEL_SUPPORTS_8021Q
+#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
 	if (vlan_tx_tag_present(skb)) {
 		base_flags |= TXD_FLAG_VLAN;
 		vlan = vlan_tx_tag_get(skb);

Re: [PATCH] tg3: fix VLAN tagging regression

From: Matt Carlson <hidden>
Date: 2011-09-20 21:09:59

On Tue, Sep 20, 2011 at 01:48:56PM -0700, Kasper Pedersen wrote:
commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

Change to use the CONFIG_VLAN_xxx defines instead.
Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
Yes.  This is correct.

Acked-by: Matt Carlson <redacted>
quoted hunk
---
 drivers/net/tg3.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index dc3fbf6..a00d21b 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -6234,7 +6234,7 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		}
 	}
 
-#ifdef BCM_KERNEL_SUPPORTS_8021Q
+#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
 	if (vlan_tx_tag_present(skb)) {
 		base_flags |= TXD_FLAG_VLAN;
 		vlan = vlan_tx_tag_get(skb);

Re: [PATCH] tg3: fix VLAN tagging regression

From: Jesse Gross <hidden>
Date: 2011-09-20 21:27:51

On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson [off-list ref] wrote:
On Tue, Sep 20, 2011 at 01:48:56PM -0700, Kasper Pedersen wrote:
quoted
commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

Change to use the CONFIG_VLAN_xxx defines instead.
Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
Yes.  This is correct.

Acked-by: Matt Carlson <redacted>
Actually, please don't do this.  Those config #define's refer to the
802.1q module that creates vlan devices only.  The rest of the network
stack has code for dealing with vlan packets that is not protected by
config guards, so there's no reason that drivers should be.  The
correct thing to do here is just drop the test altogether and
unconditionally include the code.

Re: [PATCH] tg3: fix VLAN tagging regression

From: Kasper Pedersen <hidden>
Date: 2011-09-20 21:58:36

On 09/20/2011 11:27 PM, Jesse Gross wrote:
On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson [off-list ref] wrote:
quoted
On Tue, Sep 20, 2011 at 01:48:56PM -0700, Kasper Pedersen wrote:
quoted
commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

Change to use the CONFIG_VLAN_xxx defines instead.
Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
Yes.  This is correct.

Acked-by: Matt Carlson <redacted>
Actually, please don't do this.  Those config #define's refer to the
802.1q module that creates vlan devices only.  The rest of the network
stack has code for dealing with vlan packets that is not protected by
config guards, so there's no reason that drivers should be.  The
correct thing to do here is just drop the test altogether and
unconditionally include the code.

currently testing, and will post a just-remove-ifdef in a few hours,
assuming it behaves as expected on a no-802.1q-module config.


tg3 has one more place where this is done, and it looks as if the code
in that location doesn't quite mesh with the comment.

/Kasper Pedersen

Re: [PATCH] tg3: fix VLAN tagging regression

From: Eric Dumazet <hidden>
Date: 2011-09-20 22:10:14

Le mardi 20 septembre 2011 à 23:57 +0200, Kasper Pedersen a écrit :
On 09/20/2011 11:27 PM, Jesse Gross wrote:
quoted
On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson [off-list ref] wrote:
quoted
On Tue, Sep 20, 2011 at 01:48:56PM -0700, Kasper Pedersen wrote:
quoted
commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

Change to use the CONFIG_VLAN_xxx defines instead.
Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
Yes.  This is correct.

Acked-by: Matt Carlson <redacted>
Actually, please don't do this.  Those config #define's refer to the
802.1q module that creates vlan devices only.  The rest of the network
stack has code for dealing with vlan packets that is not protected by
config guards, so there's no reason that drivers should be.  The
correct thing to do here is just drop the test altogether and
unconditionally include the code.

currently testing, and will post a just-remove-ifdef in a few hours,
assuming it behaves as expected on a no-802.1q-module config.


tg3 has one more place where this is done, and it looks as if the code
in that location doesn't quite mesh with the comment.
Thanks for finding this bug, this hit me last day on a BCM5755M but I
had no time to investigate.

Re: [PATCH] tg3: fix VLAN tagging regression

From: Eric Dumazet <hidden>
Date: 2011-09-20 22:11:27

Le mercredi 21 septembre 2011 à 00:08 +0200, Eric Dumazet a écrit :
Thanks for finding this bug, this hit me last day on a BCM5755M but I
had no time to investigate.
I meant a BCM5715S, but its probably a generic bug anyway ;)

[PATCH v2] tg3: fix VLAN tagging regression

From: Kasper Pedersen <hidden>
Date: 2011-09-20 22:41:59

commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

v2: We can just remove the test. vlan_tx_tag_present
is valid regardless of whether the 802.1q module
is built.

Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
---
 drivers/net/tg3.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index dc3fbf6..4a1374d 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -6234,12 +6234,10 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
 		}
 	}
 
-#ifdef BCM_KERNEL_SUPPORTS_8021Q
 	if (vlan_tx_tag_present(skb)) {
 		base_flags |= TXD_FLAG_VLAN;
 		vlan = vlan_tx_tag_get(skb);
 	}
-#endif
 
 	if (tg3_flag(tp, USE_JUMBO_BDFLAG) &&
 	    !mss && skb->len > VLAN_ETH_FRAME_LEN)

Re: [PATCH v2] tg3: fix VLAN tagging regression

From: David Miller <davem@davemloft.net>
Date: 2011-09-21 06:17:06

From: Kasper Pedersen <redacted>
Date: Wed, 21 Sep 2011 00:41:17 +0200
commit 92cd3a17ce9c719abb4c28dee3438e0c641f8de4
    tg3: Simplify tx bd assignments

broke VLAN tagging on outbound packets.
It ifdef'ed BCM_KERNEL_SUPPORTS_8021Q, but this
is not set anywhere. So vlan never gets set, and
all packets are sent with vlan=0.

v2: We can just remove the test. vlan_tx_tag_present
is valid regardless of whether the 802.1q module
is built.

Tested on BCM5721 rev 11.

Signed-off-by: Kasper Pedersen <redacted>
Applied.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help