On Fri, Apr 18, 2014 at 2:51 AM, Andy Zhou <az...@nicira.com> wrote: > diff --git a/datapath/actions.c b/datapath/actions.c > index 82cfd2d..87a8a40 100644 > --- a/datapath/actions.c > +++ b/datapath/actions.c > @@ -460,6 +460,20 @@ static int sample(struct datapath *dp, struct sk_buff > *skb, > nla_len(acts_list), true); > } > > +static void execute_hash(struct sk_buff *skb, const struct nlattr *attr) > +{ > + struct sw_flow_key *key = OVS_CB(skb)->pkt_key; > + struct ovs_action_hash *hash_act = nla_data(attr); > + u32 hash = 0; > + > + /* OVS_HASH_ALG_L4 is the only possible hash algorithm. */ > + hash = skb_get_rxhash(skb); > + if (!hash) > + hash = 0x1; > + > + key->ovs_flow_hash = jhash_1word(hash, hash_act->hash_basis);
I think you need to rehash before the zero check - otherwise after rehashing it's possible to have zero again. I don't understand the other change about accepting a hash mask even when there isn't a hash value. Can you explain this? _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev