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:
parent
8a4a417d9f
commit
1eab95fe2e
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user