Slow 10gbe RX performance on Linux

Hi All,

I have a NetXtreme II BCM5781 in my system that is split up into several virtual functions using the following:

#!/bin/bash

# bring up the PF
ifup enp130s0f0

# setup three virtual devices for the network interface
echo 3 > /sys/class/net/enp130s0f0/device/sriov_numvfs

# the host's trusted network
ip link set enp130s0f0 vf 0 mac XX:XX:XX:XX:XX:XX vlan 10 proto 802.1Q

# the host's guest network
ip link set enp130s0f0 vf 1 mac XX:XX:XX:XX:XX:XX vlan 30 proto 802.1Q

# the windows VM
ip link set enp130s0f0 vf 2 mac XX:XX:XX:XX:XX:XX vlan 30 proto 802.1Q

VF 0 and 1 are used on the host system directly, where VF 2 is passed through into a KVM VM using VFIO.

The guest running windows 10 is able to use the device and obtain the full 10gbit throughput tested with iperf3 in both directions, confirming that the device is working correctly and the issue is entirely a Linux software problem.

The host system is able to transmit at 10gbit no issues, but can only RX between 5-7gbit. I have increased rx buffer sizes, ensured offloading is all enabled, etc.

I am at a loss as to what to do next to resolve this and would appreciate any input people could give.