X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Factions.c;h=a2a572e3f7df8974c6e3dc486b291d7b5f9d7b6d;hb=5c55b39c55d14be5c71c81b8db54efb7c6d9c189;hp=8939377104d6e54e0f9820cad63d9146ce1217c8;hpb=6ce39213456b27257acbaf146398dce26d1466b9;p=sliver-openvswitch.git diff --git a/datapath/actions.c b/datapath/actions.c index 893937710..a2a572e3f 100644 --- a/datapath/actions.c +++ b/datapath/actions.c @@ -84,11 +84,8 @@ static struct sk_buff *strip_vlan(struct sk_buff *skb) return skb; } -static struct sk_buff *modify_vlan_tci(struct datapath *dp, struct sk_buff *skb, - const struct sw_flow_key *key, - const struct nlattr *a, u32 actions_len) +static struct sk_buff *modify_vlan_tci(struct sk_buff *skb, __be16 tci) { - __be16 tci = nla_get_be16(a); struct vlan_ethhdr *vh; __be16 old_tci; @@ -158,6 +155,8 @@ static struct sk_buff *set_nw_addr(struct sk_buff *skb, inet_proto_csum_replace4(check, skb, *nwaddr, new_nwaddr, 1); csum_replace4(&nh->check, *nwaddr, new_nwaddr); + skb_clear_rxhash(skb); + *nwaddr = new_nwaddr; return skb; @@ -217,6 +216,7 @@ static struct sk_buff *set_tp_port(struct sk_buff *skb, port = nla_type(a) == ODP_ACTION_ATTR_SET_TP_SRC ? &th->source : &th->dest; inet_proto_csum_replace2(check, skb, *port, nla_get_be16(a), 0); *port = nla_get_be16(a); + skb_clear_rxhash(skb); return skb; } @@ -324,7 +324,7 @@ static int do_execute_actions(struct datapath *dp, struct sk_buff *skb, break; case ODP_ACTION_ATTR_SET_DL_TCI: - skb = modify_vlan_tci(dp, skb, key, a, rem); + skb = modify_vlan_tci(skb, nla_get_be16(a)); break; case ODP_ACTION_ATTR_STRIP_VLAN: