While working on implementing Scalable IOV support for the ice driver, I found a few minor gotchas in the VF logic where the existing code is not ready to handle Scalable VFs.
First, the recent support to allow programming the VF MSI-X count initialized some values in ice_sriov.c in the for loop for creating VFs using the sriov_numvfs interface. We will need to initialize these values for Scalable VFs as well, and this should belong in ice_initialize_vf_entry(). Second, when programming the VF IRQs in response to virtchnl commands, the current virtchnl logic hardcodes the assumption that hardware IRQ indexes are VF relative. This is true for Single Root IOV, but is not true for Scalable IOV where the interrupts come from the PF space. Cleanup the logic to look up the IRQ index from the q_vector, making this flow more agnostic of the VF functionality type. Neither of these changes is critical for current SR-IOV support, but they do prepare the way for Scalable IOV VF support. I'd rather have these cleanups already taken care now instead of carrying them until the Scalable IOV code is submitted. Jacob Keller (2): ice: set vf->num_msix in ice_initialize_vf_entry() ice: look up VF MSI-X index from q_vector->irq.index drivers/net/ethernet/intel/ice/ice_base.c | 6 ++++++ drivers/net/ethernet/intel/ice/ice_sriov.c | 5 ----- drivers/net/ethernet/intel/ice/ice_vf_lib.c | 5 ++++- drivers/net/ethernet/intel/ice/ice_virtchnl.c | 12 +++++------- 4 files changed, 15 insertions(+), 13 deletions(-) base-commit: 237bb5f7f7f55ec5f773469a974c61a49c298625 -- 2.44.0.53.g0f9d4d28b7e6
