On Thu, Aug 20, 2015 at 03:20:46PM +0100, Zoltan Kiss wrote:
> Hi,
> 
> On 20/08/15 11:53, Jerin Jacob wrote:
> >How about following change in OVS plarform specific packet_get_hash code.
> >odp_packet_rss_hash_set
> >kind of interface wont fit correctly in octeon  platform as hash
> >identifier used by hardware in subsequent HW based queue operations
> >
> >static inline uint32_t
> >packet_get_hash(struct dp_packet *p)
> >{
> >#ifdef DPDK_NETDEV
> >     return p->mbuf.hash.rss;
> >#else
> >#ifdef ODP_NETDEV
> >     unit32_t hash;
> >     hash = odp_packet_rss_hash(p->odp_pkt);
> >     if (OVS_UNLIKELY(!hash)
> >     hash = odp_packet_generate_rss_hash(p->odp_pkt);
> >     return hash;
> >#endif
> >     return p->rss_hash;
> >#endif
> >}
> 
> I was thinking about this too, but I see two problems:
> 
> 1. OVS changes the hash if the packet is currently recirculated:
> 
> https://github.com/openvswitch/ovs/blob/master/lib/dpif-netdev.c#L3125
> 
> And as far as I can see, it doesn't recalculate the hash when the
> recirculation is finished. So the final hash of the packet at the end won't
> be what the platform would generate. OVS doesn't seem to care about it, I
> think the assumption is that the platform won't use this hash anymore, and
> it's role is finished after matching in EMC.
> My first idea to sort this out is to check for recirculation depth in
> netdev_send(), before the send of course. If it's true, then we can
> regenerate the hash using odp_packet_generate_rss_hash()

if its not true then other option could be to hold additional data in
ODP meta data.

> 
> 2. Minor thing, but if the platform is only able to do this from software
> (like DPDK), it should better be as fast as OVS's hashing at least. OVS uses
> CRC32 on SSE4 x64 CPUs, and Murmurhash on others. I don't know how do they

DPDK do have low level HW accelerated API's for crc 4 and 8 bytes.
Implementing 5 tuple based on CRC on ODP-DPDK port will NOT be be any issue.
And armv8 also has advanced SIMD instruction for CRC 8,4,2 and 1 bytes

> compare e.g. with Toeplitz, but I guess they choose them because they are
> more suitable for the purpose.

I guess RSS hash algorithm used Intel nic is Toeplitz to get good
packet distribution using RSS(not for lookup)




_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to