mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-06 13:09:58 +00:00
ice: reconfig host after changing MSI-X on VF
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: 4d38cb44bd
("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>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
99099c6bc7
commit
4035c72dc1
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user