diff mbox

net: dsa: fix EDSA frame from hwaccel frame

Message ID 1438566362-28786-1-git-send-email-vivien.didelot@savoirfairelinux.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Vivien Didelot Aug. 3, 2015, 1:46 a.m. UTC
If the underlying network device features NETIF_F_HW_VLAN_CTAG_TX,
an EDSA frame is prepended with a 802.1q header once queued.

To fix this, push the VLAN tag to the payload if present, before
checking the frame protocol.

[note: we may prefer to access directly VLAN TCI from hwaccel frames,
but this approach is simpler.]

Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
---
 net/dsa/tag_edsa.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

David Miller Aug. 4, 2015, 5:21 a.m. UTC | #1
From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Date: Sun,  2 Aug 2015 21:46:02 -0400

> If the underlying network device features NETIF_F_HW_VLAN_CTAG_TX,
> an EDSA frame is prepended with a 802.1q header once queued.
> 
> To fix this, push the VLAN tag to the payload if present, before
> checking the frame protocol.
> 
> [note: we may prefer to access directly VLAN TCI from hwaccel frames,
> but this approach is simpler.]
> 
> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>

This is a bug fix so should target 'net', but you generated the patch
against 'net-next'.

In any event, you should be explicit about the tree you are targetting
in order to not waste my time like this, by simply specifying the
tree in your "[PATCH xxx]" text in your subject line.   Either
"[PATCH net]" or "[PATCH net-next]".

Thanks.
--
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
Vivien Didelot Aug. 4, 2015, 6:01 a.m. UTC | #2
Hi David,

On Aug 4, 2015, at 1:21 AM, David davem@davemloft.net wrote:

> From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> Date: Sun,  2 Aug 2015 21:46:02 -0400
> 
>> If the underlying network device features NETIF_F_HW_VLAN_CTAG_TX,
>> an EDSA frame is prepended with a 802.1q header once queued.
>> 
>> To fix this, push the VLAN tag to the payload if present, before
>> checking the frame protocol.
>> 
>> [note: we may prefer to access directly VLAN TCI from hwaccel frames,
>> but this approach is simpler.]
>> 
>> Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
> 
> This is a bug fix so should target 'net', but you generated the patch
> against 'net-next'.
> 
> In any event, you should be explicit about the tree you are targetting
> in order to not waste my time like this, by simply specifying the
> tree in your "[PATCH xxx]" text in your subject line.   Either
> "[PATCH net]" or "[PATCH net-next]".

Dully noted. Should I resend it?

Thanks,
-v
--
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
David Miller Aug. 4, 2015, 6:27 a.m. UTC | #3
From: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Date: Tue, 4 Aug 2015 02:01:18 -0400 (EDT)

> Dully noted. Should I resend it?

Yes, please.
--
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
diff mbox

Patch

diff --git a/net/dsa/tag_edsa.c b/net/dsa/tag_edsa.c
index 2288c80..3ada4eb 100644
--- a/net/dsa/tag_edsa.c
+++ b/net/dsa/tag_edsa.c
@@ -9,6 +9,7 @@ 
  */
 
 #include <linux/etherdevice.h>
+#include <linux/if_vlan.h>
 #include <linux/list.h>
 #include <linux/slab.h>
 #include "dsa_priv.h"
@@ -21,6 +22,10 @@  static struct sk_buff *edsa_xmit(struct sk_buff *skb, struct net_device *dev)
 	struct dsa_slave_priv *p = netdev_priv(dev);
 	u8 *edsa_header;
 
+	skb = vlan_hwaccel_push_inside(skb);
+	if (unlikely(!skb))
+		return NULL;
+
 	/*
 	 * Convert the outermost 802.1q tag to a DSA tag and prepend
 	 * a DSA ethertype field is the packet is tagged, or insert