net/iavf: fix command after PF reset

If PF reset is finished but VF reset is pending, VF should no need to
send any invalid cmd to PF. That would avoid mass unexpected behaviors
affecting the robust.

Fixes: 22b123a36d07 ("net/avf: initialize PMD")
Fixes: 9e03acd726cf ("net/iavf: fix flow access")
Cc: stable@dpdk.org

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Tested-by: Hailin Xu <hailinx.xu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
Jeff Guo 2020-09-11 18:18:48 +08:00 committed by Ferruh Yigit
parent 8a4a417d9f
commit 1eab95fe2e
4 changed files with 14 additions and 1 deletions

View File

@ -134,7 +134,7 @@ struct iavf_info {
uint16_t mc_addrs_num; /* Multicast mac addresses number */
struct iavf_vsi vsi;
bool vf_reset;
bool vf_reset; /* true for VF reset pending, false for no VF reset */
uint64_t flags;
uint8_t *rss_lut;

View File

@ -1285,6 +1285,8 @@ iavf_init_vf(struct rte_eth_dev *dev)
}
}
vf->vf_reset = false;
return 0;
err_rss:
rte_free(vf->rss_key);

View File

@ -457,6 +457,9 @@ iavf_hash_init(struct iavf_adapter *ad)
struct iavf_flow_parser *parser;
int ret;
if (vf->vf_reset)
return -EIO;
if (!vf->vf_res)
return -EINVAL;
@ -967,6 +970,11 @@ iavf_hash_destroy(__rte_unused struct iavf_adapter *ad,
static void
iavf_hash_uninit(struct iavf_adapter *ad)
{
struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(ad);
if (vf->vf_reset)
return;
if (iavf_hash_default_set(ad, false))
PMD_DRV_LOG(ERR, "fail to delete default RSS");

View File

@ -76,6 +76,9 @@ iavf_execute_vf_cmd(struct iavf_adapter *adapter, struct iavf_cmd_info *args)
if (_atomic_set_cmd(vf, args->ops))
return -1;
if (vf->vf_reset)
return -EIO;
ret = iavf_aq_send_msg_to_pf(hw, args->ops, IAVF_SUCCESS,
args->in_args, args->in_args_size, NULL);
if (ret) {