[ovs-dev] [PATCH] dpif-netdev: Check for PKT_RX_RSS_HASH flag.

Daniele Di Proietto diproiettod at vmware.com
Thu Jun 18 18:15:53 UTC 2015



On 17/06/2015 19:08, "Flavio Leitner" <fbl at sysclose.org> wrote:

>On Tue, Jun 16, 2015 at 07:39:00PM +0100, Daniele Di Proietto wrote:
>> DPDK mbufs contain a valid RSS hash only if PKT_RX_RSS_HASH is
>> set in 'ol_flags'.  Otherwise the hash is garbage and doesn't
>> relate to the packet.
>> 
>> This fixes an issue with vhost, which, being a virtual NIC, doesn't
>> compute the hash.
>> 
>> Unfortunately the ixgbe vPMD doesn't set the PKT_RX_RSS_HASH, forcing
>> OVS to compute an hash is software.  This has a significant impact on
>> performance (-30% throughput in a single flow setup) which can be
>> mitigated in the CPU supports crc32c instructions.
>> 
>> Reported-by: Dongjun <dongj at dtdream.com>
>> Suggested-by: Flavio Leitner <fbl at sysclose.org>
>> Signed-off-by: Daniele Di Proietto <diproiettod at vmware.com>
>> ---
>>  lib/dp-packet.h   | 11 +++++++++++
>>  lib/dpif-netdev.c |  2 +-
>>  2 files changed, 12 insertions(+), 1 deletion(-)
>> 
>> diff --git a/lib/dp-packet.h b/lib/dp-packet.h
>> index e4c2593..6840750 100644
>> --- a/lib/dp-packet.h
>> +++ b/lib/dp-packet.h
>> @@ -529,11 +529,22 @@ dp_packet_set_rss_hash(struct dp_packet *p,
>>uint32_t hash)
>>  {
>>  #ifdef DPDK_NETDEV
>>      p->mbuf.hash.rss = hash;
>> +    p->mbuf.ol_flags |= PKT_RX_RSS_HASH;
>>  #else
>>      p->rss_hash = hash;
>>  #endif
>>  }
>>  
>> +static inline bool
>> +dp_packet_rss_valid(struct dp_packet *p)
>> +{
>> +#ifdef DPDK_NETDEV
>> +    return p->mbuf.ol_flags & PKT_RX_RSS_HASH;
>> +#else
>> +    return true;
>> +#endif
>> +}
>
>The above triggers the following when not using dpdk.
>lib/dp-packet.h: In function 'dp_packet_rss_valid':
>lib/dp-packet.h:539:39: warning: unused parameter 'p'
>[-Wunused-parameter]
>
>fbl

You're right, thanks for pointing that out.

I'll add an OVS_UNUSED and add the comment like you
suggested if we decide to go ahead with this.

Thanks,

Daniele




More information about the dev mailing list