diff options
author | Andy Zhou <azhou@nicira.com> | 2014-04-08 18:42:39 -0700 |
---|---|---|
committer | Andy Zhou <azhou@nicira.com> | 2014-04-16 15:30:42 -0700 |
commit | 347bf289b3dc006ca7b95cca26d3e0d3f20fbe95 (patch) | |
tree | cfba5f780ef08d0afe405e11801df2167142fec5 /include/linux | |
parent | 40dd413d5b5424eb4cd2e6a8558d33f3b7c607ed (diff) | |
download | openvswitch-347bf289b3dc006ca7b95cca26d3e0d3f20fbe95.tar.gz |
dpif-netdev: Move hash function out of the recirc action, into its own action
Currently recirculation action can optionally compute hash. This patch
adds a hash action that is independent of the recirc action, which
no longer computes hash. For megaflow bond with recirc, the output
to a bond port action will look like:
hash(hash_l4(0)), recirc(<recirc_id>)
Obviously, when a recirculation application that does not depend on
hash value can just use the recirc action alone.
Signed-off-by: Andy Zhou <azhou@nicira.com>
Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Acked-by: Pravin B Shelar <pshelar@nicira.com
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/openvswitch.h | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/include/linux/openvswitch.h b/include/linux/openvswitch.h index b3977d1a5..e17f802b1 100644 --- a/include/linux/openvswitch.h +++ b/include/linux/openvswitch.h @@ -542,26 +542,22 @@ struct ovs_action_push_vlan { /* Data path hash algorithm for computing Datapath hash. * - * The Algorithm type only specifies the fields in a flow + * The algorithm type only specifies the fields in a flow * will be used as part of the hash. Each datapath is free * to use its own hash algorithm. The hash value will be * opaque to the user space daemon. */ -enum ovs_recirc_hash_alg { - OVS_RECIRC_HASH_ALG_NONE, - OVS_RECIRC_HASH_ALG_L4, +enum ovs_hash_alg { + OVS_HASH_ALG_L4, }; /* - * struct ovs_action_recirc - %OVS_ACTION_ATTR_RECIRC action argument. - * @recirc_id: The Recirculation label, Zero is invalid. + * struct ovs_action_hash - %OVS_ACTION_ATTR_HASH action argument. * @hash_alg: Algorithm used to compute hash prior to recirculation. - * @hash_bias: bias used for computing hash. used to compute hash prior to - * recirculation. + * @hash_bias: bias used for computing hash. */ -struct ovs_action_recirc { - uint32_t hash_alg; /* One of ovs_dp_hash_alg. */ +struct ovs_action_hash { + uint32_t hash_alg; /* One of ovs_hash_alg. */ uint32_t hash_bias; - uint32_t recirc_id; /* Recirculation label. */ }; /** @@ -604,7 +600,8 @@ enum ovs_action_attr { OVS_ACTION_ATTR_SAMPLE, /* Nested OVS_SAMPLE_ATTR_*. */ OVS_ACTION_ATTR_PUSH_MPLS, /* struct ovs_action_push_mpls. */ OVS_ACTION_ATTR_POP_MPLS, /* __be16 ethertype. */ - OVS_ACTION_ATTR_RECIRC, /* struct ovs_action_recirc. */ + OVS_ACTION_ATTR_RECIRC, /* u32 recirc_id. */ + OVS_ACTION_ATTR_HASH, /* struct ovs_action_hash. */ __OVS_ACTION_ATTR_MAX }; |