net/iavf: delay VF reset command
PATCH 1/1 net/iavf: delay VF reset command
Commit 0f9ec0cbd2a9 ("net/iavf: fix VF reset when using DCF"), introduced a VF-reset adminq call into the reset sequence for iavf. However, that call was very early in the sequence before other adminq commands had been sent.
To delay the VF reset, we can put the message sending in the "dev_close" function, right before the adminq is shut down, and thereby guaranteeing that we won't have any subsequent issues with adminq messages.
In the process of making this change, we can also use the iavf_vf_reset function from common/iavf, rather than hard-coding the message sending lower-level calls in the net driver.
--- drivers/common/iavf/iavf_prototype.h | 1 + drivers/common/iavf/version.map | 1 + drivers/net/iavf/iavf_ethdev.c | 12 +----------- 3 files changed, 3 insertions(+), 11 deletions(-)
drivers/common/iavf/iavf_prototype.h +1 -0
@@ -79,6 +79,7 @@ STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)__rte_internal void iavf_vf_parse_hw_config(struct iavf_hw *hw,struct virtchnl_vf_resource *msg); +__rte_internal enum iavf_status iavf_vf_reset(struct iavf_hw *hw);__rte_internal enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw,
drivers/common/iavf/version.map +1 -0
@@ -7,6 +7,7 @@ INTERNAL { iavf_set_mac_type; iavf_shutdown_adminq; iavf_vf_parse_hw_config; + iavf_vf_reset; local: *; };
drivers/net/iavf/iavf_ethdev.c +1 -11
@@ -2962,6 +2962,7 @@ iavf_dev_close(struct rte_eth_dev *dev)if (vf->promisc_unicast_enabled || vf->promisc_multicast_enabled)iavf_config_promisc (adapter, false, false); +iavf_vf_reset (hw);iavf_shutdown_adminq (hw);if (vf->vf_res->vf_cap_flags &VIRTCHNL_VF_OFFLOAD_WB_ON_ITR ) {/* disable uio intr before callback unregister */
@@ -3041,17 +3042,6 @@ iavf_dev_reset(struct rte_eth_dev *dev)struct iavf_adapter *adapter =IAVF_DEV_PRIVATE_TO_ADAPTER (dev->data->dev_private);struct iavf_hw *hw =IAVF_DEV_PRIVATE_TO_HW (dev->data->dev_private); -struct iavf_info *vf =IAVF_DEV_PRIVATE_TO_VF (dev->data->dev_private); - -if (!vf->in_reset_recovery) { - ret =iavf_aq_send_msg_to_pf (hw,VIRTCHNL_OP_RESET_VF , -IAVF_SUCCESS ,NULL ,0 ,NULL ); -if (ret) { -PMD_DRV_LOG (ERR ,"fail to send cmd VIRTCHNL_OP_RESET_VF" ); -return ret; - } - } -/* * Check whether the VF reset has been done and inform application, * to avoid calling the virtual channel command, which may cause
Signature · 1 line
2.43.0
Quoted 13 lines · Bruce Richardson
Commit
0f9ec0cbd2a9("net/iavf: fix VF reset when using DCF"), introduced a VF-reset adminq call into the reset sequence for iavf. However, that call was very early in the sequence before other adminq commands had been sent.To delay the VF reset, we can put the message sending in the "
dev_close" function, right before the adminq is shut down, and thereby guaranteeing that we won't have any subsequent issues with adminq messages.In the process of making this change, we can also use the
iavf_vf_resetfunction from common/iavf, rather than hard-coding the message sending lower-level calls in the net driver.
Quoted 7 lines
Fixes e74e1bb6280d ("net/iavf: enable port reset")Fixes 0f9ec0cbd2a9 ("net/iavf: fix VF reset when using DCF")Signed-off-by Bruce Richardson <[email protected]>---
Applied to dpdk-next-net-intel.
Quoted 14 lines · Bruce Richardson
Commit
0f9ec0cbd2a9("net/iavf: fix VF reset when using DCF"), introduced a VF-reset adminq call into the reset sequence for iavf. However, that call was very early in the sequence before other adminq commands had been sent.To delay the VF reset, we can put the message sending in the "
dev_close" function, right before the adminq is shut down, and thereby guaranteeing that we won't have any subsequent issues with adminq messages.In the process of making this change, we can also use the
iavf_vf_resetfunction from common/iavf, rather than hard-coding the message sending lower-level calls in the net driver.
Quoted 6 lines
Fixes e74e1bb6280d ("net/iavf: enable port reset")Fixes 0f9ec0cbd2a9 ("net/iavf: fix VF reset when using DCF")Signed-off-by Bruce Richardson <[email protected]>
I see this patch is already merged, but as I was investigating iavf internals, I remembered this patch and relooked at it.
Sending a reset request to the PF while closing the device seems saner to me. It also aligns the DPDK iavf driver behavior to the Linux kernel iavf driver.
Thanks Bruce.
Signature · 1 line
David Marchand