net/ice: retry getting VF VSI map after failure
The request of getting VF VSI map request may fail when DCF is busy, this patch adds retry mechanism to make it able to succeed. Fixes: b09d34ac8584 ("net/ice: fix flow redirector") Cc: stable@dpdk.org Signed-off-by: Dapeng Yu <dapengx.yu@intel.com> Acked-by: Haiyue Wang <haiyue.wang@intel.com>
This commit is contained in:
parent
395d41fbb1
commit
b71573ec2f
@ -534,15 +534,26 @@ int
|
||||
ice_dcf_handle_vsi_update_event(struct ice_dcf_hw *hw)
|
||||
{
|
||||
struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(hw->eth_dev);
|
||||
int err = 0;
|
||||
int i = 0;
|
||||
int err = -1;
|
||||
|
||||
rte_spinlock_lock(&hw->vc_cmd_send_lock);
|
||||
|
||||
rte_intr_disable(&pci_dev->intr_handle);
|
||||
ice_dcf_disable_irq0(hw);
|
||||
|
||||
if (ice_dcf_get_vf_resource(hw) || ice_dcf_get_vf_vsi_map(hw) < 0)
|
||||
err = -1;
|
||||
for (;;) {
|
||||
if (ice_dcf_get_vf_resource(hw) == 0 &&
|
||||
ice_dcf_get_vf_vsi_map(hw) >= 0) {
|
||||
err = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (++i >= ICE_DCF_ARQ_MAX_RETRIES)
|
||||
break;
|
||||
|
||||
rte_delay_ms(ICE_DCF_ARQ_CHECK_TIME);
|
||||
}
|
||||
|
||||
rte_intr_enable(&pci_dev->intr_handle);
|
||||
ice_dcf_enable_irq0(hw);
|
||||
|
Loading…
x
Reference in New Issue
Block a user