* kernel, by Linus Torvalds and others.
*/
+#include <linux/if_vlan.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include "checksum.h"
#include "datapath.h"
+#include "vlan.h"
#include "vport-generic.h"
#include "vport-internal_dev.h"
#include "vport-netdev.h"
static int internal_dev_xmit(struct sk_buff *skb, struct net_device *netdev)
{
compute_ip_summed(skb, true);
+ vlan_copy_skb_tci(skb);
OVS_CB(skb)->flow = NULL;
vport_receive(internal_dev_priv(netdev)->vport, skb);
struct net_device *netdev = netdev_vport_priv(vport)->dev;
int len;
- skb->dev = netdev;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)
+ if (unlikely(vlan_deaccel_tag(skb)))
+ return 0;
+#endif
+
len = skb->len;
+ skb->dev = netdev;
skb->pkt_type = PACKET_HOST;
skb->protocol = eth_type_trans(skb, netdev);