[dpdk-dev] 82599 SR-IOV with passthrough

jigsaw jigsaw at gmail.com
Wed Oct 16 14:18:31 CEST 2013


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


More information about the dev mailing list