X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fvlan.h;h=02a62909f5b3a08726664dd2a53d13a6b3f3536f;hb=76f1c218bd84e44666c5a0ae54d543dbce42c376;hp=dc900183d4babe13e576986eac8b9e19c4a46d4c;hpb=6e0ce48e27d5a845bdc8b57fb41bcec8a54f336a;p=openvswitch diff --git a/datapath/vlan.h b/datapath/vlan.h index dc900183..02a62909 100644 --- a/datapath/vlan.h +++ b/datapath/vlan.h @@ -43,4 +43,18 @@ u16 vlan_tx_tag_get(struct sk_buff *skb); #define __vlan_hwaccel_put_tag rpl__vlan_hwaccel_put_tag struct sk_buff *__vlan_hwaccel_put_tag(struct sk_buff *skb, u16 vlan_tci); #endif /* NEED_VLAN_FIELD */ + +static inline int vlan_deaccel_tag(struct sk_buff *skb) +{ + if (!vlan_tx_tag_present(skb)) + return 0; + + skb = __vlan_put_tag(skb, vlan_tx_tag_get(skb)); + if (unlikely(!skb)) + return -ENOMEM; + + vlan_set_tci(skb, 0); + return 0; +} + #endif /* vlan.h */