Message ID | 20240223064024.4333-1-michal.swiatkowski@linux.intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net,v1] ice: reconfig host after changing MSI-X on VF | expand |
On Fri, Feb 23, 2024 at 07:40:24AM +0100, Michal Swiatkowski wrote: > During VSI reconfiguration filters and VSI config which is set in > ice_vf_init_host_cfg() are lost. Recall the host configuration function > to restore them. > > Without this config VF on which MSI-X amount was changed might had a > connection problems. > > Fixes: 4d38cb44bd32 ("ice: manage VFs MSI-X using resource tracking") > Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> > Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Reviewed-by: Simon Horman <horms@kernel.org>
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Simon Horman > Sent: Monday, February 26, 2024 6:09 PM > To: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> > Cc: Keller, Jacob E <jacob.e.keller@intel.com>; netdev@vger.kernel.org; intel- > wired-lan@lists.osuosl.org > Subject: Re: [Intel-wired-lan] [iwl-net v1] ice: reconfig host after changing > MSI-X on VF > > On Fri, Feb 23, 2024 at 07:40:24AM +0100, Michal Swiatkowski wrote: > > During VSI reconfiguration filters and VSI config which is set in > > ice_vf_init_host_cfg() are lost. Recall the host configuration > > function to restore them. > > > > Without this config VF on which MSI-X amount was changed might had a > > connection problems. > > > > Fixes: 4d38cb44bd32 ("ice: manage VFs MSI-X using resource tracking") > > Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> > > Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> > > Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
diff --git a/drivers/net/ethernet/intel/ice/ice_sriov.c b/drivers/net/ethernet/intel/ice/ice_sriov.c index a94a1c48c3de..b0f78c2f2790 100644 --- a/drivers/net/ethernet/intel/ice/ice_sriov.c +++ b/drivers/net/ethernet/intel/ice/ice_sriov.c @@ -1068,6 +1068,7 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) struct ice_pf *pf = pci_get_drvdata(pdev); u16 prev_msix, prev_queues, queues; bool needs_rebuild = false; + struct ice_vsi *vsi; struct ice_vf *vf; int id; @@ -1102,6 +1103,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) if (!vf) return -ENOENT; + vsi = ice_get_vf_vsi(vf); + if (!vsi) + return -ENOENT; + prev_msix = vf->num_msix; prev_queues = vf->num_vf_qs; @@ -1122,7 +1127,7 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) if (vf->first_vector_idx < 0) goto unroll; - if (ice_vf_reconfig_vsi(vf)) { + if (ice_vf_reconfig_vsi(vf) || ice_vf_init_host_cfg(vf, vsi)) { /* Try to rebuild with previous values */ needs_rebuild = true; goto unroll; @@ -1148,8 +1153,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) if (vf->first_vector_idx < 0) return -EINVAL; - if (needs_rebuild) + if (needs_rebuild) { ice_vf_reconfig_vsi(vf); + ice_vf_init_host_cfg(vf, vsi); + } ice_ena_vf_mappings(vf); ice_put_vf(vf);