If RSS hash exists in a packet it can be reused instead of 5 tuple hash re-calculation in OVS_ACTION_ATTR_HASH. This leads to increasing the performance of sending packets to the OVS bonding in userspace datapath up to 10-15%.
Signed-off-by: Ilya Maximets <[email protected]> --- lib/odp-execute.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/odp-execute.c b/lib/odp-execute.c index d656334..471a364 100644 --- a/lib/odp-execute.c +++ b/lib/odp-execute.c @@ -646,8 +646,17 @@ odp_execute_actions(void *dp, struct dp_packet_batch *batch, bool steal, uint32_t hash; DP_PACKET_BATCH_FOR_EACH (packet, batch) { - flow_extract(packet, &flow); - hash = flow_hash_5tuple(&flow, hash_act->hash_basis); + /* RSS hash can be used here instead of 5tuple for + * performance reasons. */ + if (dp_packet_rss_valid(packet)) { + hash = dp_packet_get_rss_hash(packet); + if (hash_act->hash_basis) { + hash = hash_finish(hash, hash_act->hash_basis); + } + } else { + flow_extract(packet, &flow); + hash = flow_hash_5tuple(&flow, hash_act->hash_basis); + } packet->md.dp_hash = hash; } } else { -- 2.7.4 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
