lv_enabled is used to remember if large VF setting is configured, but its value is not initialized at startup. This can lead to a different configuration regarding the initial configuration of the PF. For example, a first start is done with 8 rx and 8 tx queues. Large VF is not needed and reta size is 64. A second start is done with 20 rx and tx queues. Large VF is required and reta size is 256. A third start is done with 2 rx and tx queues. Large VF is not needed but reta size is 256 as the PF has been configured during the second start.
In order to have a consistent behavior regarding reta size whatever the configuration of the PF (may be changed by a previous boot) the lv_enabled must be set properly at the init phase. Signed-off-by: Ghalem Boudour <ghalem.boud...@6wind.com> Signed-off-by: Thibaut Collet <thibaut.col...@6wind.com> Reviewed-by: Olivier Matz <olivier.m...@6wind.com> --- v2: * Enable large VF at initialization independently of rss configuration --- drivers/net/iavf/iavf_ethdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 79397f15e54f..d6190ac24ac6 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -2278,6 +2278,9 @@ iavf_init_vf(struct rte_eth_dev *dev) } } + if (vf->vsi_res->num_queue_pairs > IAVF_MAX_NUM_QUEUES_DFLT) + vf->lv_enabled = true; + if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_RX_FLEX_DESC) { if (iavf_get_supported_rxdid(adapter) != 0) { PMD_INIT_LOG(ERR, "failed to do get supported rxdid"); -- 2.30.2