
In any case, if people are willing to help me to understand the netmap codebase and tell what kind of modifications are required, I am willing to assist in the implementation and testing of TCP offload support to netmap. The TCP checksum offload change didn't improve performance I believe for improved performance, both checksum offloads and segmentation offloads are needed.
#Nic supports netmap how to#
I didn't try how to run with segmentation offloads yet. but when TCP checksum offloads were turned off, the change caused the machine to crash. M->data = m->head + ifp->needed_headroom * ifp->needed_headroom bytes between head and data. * which correspond to an empty buffer with exactly I managed to run netmap with TCP checksum offloads with the following change:ĭiff -git a/LINUX/netmap_linux.c b/LINUX/netmap_linux.c On Intel i40e 40Gbps NICs, we can with a quite old CPU saturate the 40Gbps interface with 3 threads and 3 queues, so TCP offloads are not very helpful in this case. It should probably ideally also work in native mode when special drivers are present. It should at least work in the emulated netmap mode that presumably interacts with sk_buffs.

I'm not entirely sure how the netmap support for TCP offloads should be implemented. Netmap does not access this ancillary data, and therefore, if you forward packets from between veth1 and veth2 in a iperfClient-veth0-veth1-netmapfwd-veth2-veth3-iperfServer setup, the server does not accept the SYN packet sent by the client (for the setup, network namespaces are required or else traffic takes a shortcut via the loopback interface). However, that does not seem to be enough, as sk_buffs have ancillary data for the status of checksums and segmentation offload (GSO). Echo 65536 > /sys/module/netmap/parameters/buf_sizeĮcho 64 > /sys/module/netmap/parameters/generic_ringsizeĪnd modified my application to not care about TCP checksums.
