ETH_RSS_NONFRAG_IPV4_UDP with netvsc, and memory setup for mlx4

Stephen Hemminger stephen at networkplumber.org
Thu May 12 20:31:30 CEST 2022


On Thu, 12 May 2022 19:09:19 +0100
Sylvain Vasseur <remmog at gmail.com> wrote:

> Hello,
> 
> I have been trying to use the netvsc PMD driver lately and face an issue
> with the RSS flag for UDP.
> I figured that this is because the PMD does not handle NDIS_HASH_UDP_IPV4,
> so I am planning at trying to submit a change to the PMD, however I am
> unsure about the value of the UDP constant. I found on
> https://microsoft.github.io/windows-docs-rs/doc/windows/Win32/NetworkManagement/Ndis/constant.NDIS_HASH_UDP_IPV4.html
> that it should be 0x00004000.
> Would someone have some proper knowledge about this specific setting?
> 
> And after having used that change locally, I am now facing some issues with
> the mlx4 PMD used under the hood of netvsc. My memory allocation makes my
> buffers exist at a different location than my memory pool and this creates
> an issue:
> net_mlx4: port 0 unable to find virtually contiguous chunk for address
> Did someone already tried to use some custom memory management with the mlx
> pmd?
> 
> Thanks,
> Sylvain

It should be able to do UDP hash (for non-fragmented packets only).

Look at FreeBSD:
https://github.com/freebsd/freebsd-src/tree/main/sys/dev/hyperv/netvsc

And Linux kernel:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/hyperv/rndis_filter.c

The Linux driver is the definitive source.
The FreeBSD driver is where netvsc PMD was derived from.


More information about the users mailing list