From: Jesse Gross Date: Mon, 7 Feb 2011 23:57:09 +0000 (-0800) Subject: datapath: Use vlan deacceleration function in upcall. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=303708cc8417959bbb7662fa52e0761a48bacbb1;p=openvswitch datapath: Use vlan deacceleration function in upcall. vlan_deaccel_tag() was introduced to move a vlan tag from skb->vlan_tci to the packet but there was still an open coded variant when doing an upcall. vlan_deaccel_tag() also clears skb->vlan_tci which is not currently done but it makes no difference. Signed-off-by: Jesse Gross Acked-by: Ben Pfaff --- diff --git a/datapath/datapath.c b/datapath/datapath.c index c48dc9df..940a5814 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -51,6 +51,7 @@ #include "flow.h" #include "loop_counter.h" #include "table.h" +#include "vlan.h" #include "vport-internal_dev.h" int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd); @@ -483,13 +484,9 @@ static int queue_control_packets(struct datapath *dp, struct sk_buff *skb, nskb = skb->next; skb->next = NULL; - if (vlan_tx_tag_present(skb)) { - skb = __vlan_put_tag(skb, vlan_tx_tag_get(skb)); - if (unlikely(!skb)) { - err = -ENOMEM; - goto err_kfree_skbs; - } - } + err = vlan_deaccel_tag(skb); + if (unlikely(err)) + goto err_kfree_skbs; len = sizeof(struct odp_header); len += nla_total_size(skb->len);