Hi, I am doing experiments with SR-IOV + passthrough on 82599. My expectation is to have VT on and DCB off, under which configuration, the total 128 TX queues will be split into 32 pools, each has 4 queues.
With latest driver ixgbe-3.18.7, PF can be set with 16 pools, each has 4 queues with these params: insmod ./ixgbe.ko MQ=1 max_vfs=8 RSS=8 VMDQ=16 I tried with VMDQ=32 with a panic. Also, it seems that if RSS is set to 4, the PF driver will set RSS to 2 somehow. Since I'm fine with 16 pools + 4 queues, I'm not going to investigate (at this moment) why PF doesn't work as expected. Next step is then to try DPDK in guest OS, which get one VF by passthrough. Not surprisingly, DPDK says that number of TX queue is 1. This is because the value is set arbitrarily in ixgbe_init_ops_vf of ixgbe_vf.c, and it never gets updated. Actually the mbox API has support for requesting Tx/Rx queue numbers from VF. See implementation of routine ixgbevf_get_queues and ixgbevf_negotiate_api_version. However, it is not straightforward to use these 2 routines to fetch Tx/Rx queue number, coz the PF driver is not ready to be used without modification. See ixgbe_get_vf_queues of ixgbe_sriov.c in ixgbe-3.18.7. The PF will always answer with 1 for Tx/Rx queue number requests, regardless of current config. Therefore, to add support for multiple queues per VF, we have to at least fix the PF driver, then add support in DPDK's VF driver. But the question is, is this enough? Before doing any experiments I wonder whether anybody has come across same problem as I do, and if there's any implementation ongoing. thx & rgds, -Qinglai

