Re: [PATCH net] net: dsa: fix EDSA frame from hwaccel frame
From: Guenter Roeck <linux@roeck-us.net>
Date: 2015-08-26 01:37:49
Also in:
lkml
On Tue, Aug 25, 2015 at 06:28:34PM -0700, Florian Fainelli wrote:
Le 08/03/15 23:35, Vivien Didelot a écrit :quoted
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.Makes sense, but you would want Andrew or Guenter to ack this patch.
I'll have to carve out some time soon to see if the current dsa code still works for me. Just don't know when and how to do that :-( Guenter
Thanks!quoted
[note: we may prefer to access directly VLAN TCI from hwaccel frames, but this approach is simpler.] Signed-off-by: Vivien Didelot <redacted> --- net/dsa/tag_edsa.c | 5 +++++ 1 file changed, 5 insertions(+)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-- Florian