tg3: fix VLAN tagging regression

Submitted by Kasper Pedersen on Sept. 20, 2011, 8:48 p.m.

Details

Message ID 4E78FC38.7040903@kasperkp.dk
State Superseded
Delegated to: David Miller
Headers show

Commit Message

Kasper Pedersen Sept. 20, 2011, 8:48 p.m.
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 <kernel@kasperkp.dk>
---
 drivers/net/tg3.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Jesse Gross Sept. 20, 2011, 9:27 p.m.
On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson <mcarlson@broadcom.com> wrote:
> 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 <kernel@kasperkp.dk>
>
> Yes.  This is correct.
>
> Acked-by: Matt Carlson <mcarlson@broadcom.com>

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.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kasper Pedersen Sept. 20, 2011, 9:57 p.m.
On 09/20/2011 11:27 PM, Jesse Gross wrote:

> On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson <mcarlson@broadcom.com> wrote:
>> 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 <kernel@kasperkp.dk>
>>
>> Yes.  This is correct.
>>
>> Acked-by: Matt Carlson <mcarlson@broadcom.com>
> 
> 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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Dumazet Sept. 20, 2011, 10:08 p.m.
Le mardi 20 septembre 2011 à 23:57 +0200, Kasper Pedersen a écrit :
> On 09/20/2011 11:27 PM, Jesse Gross wrote:
> 
> > On Tue, Sep 20, 2011 at 2:09 PM, Matt Carlson <mcarlson@broadcom.com> wrote:
> >> 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 <kernel@kasperkp.dk>
> >>
> >> Yes.  This is correct.
> >>
> >> Acked-by: Matt Carlson <mcarlson@broadcom.com>
> > 
> > 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.


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eric Dumazet Sept. 20, 2011, 10:11 p.m.
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 ;)




--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch hide | download patch | download mbox

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);