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> --- drivers/net/iavf/iavf_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 79397f15e54f..09410be4b712 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -2276,6 +2276,8 @@ iavf_init_vf(struct rte_eth_dev *dev) PMD_INIT_LOG(ERR, "unable to allocate rss_lut memory"); goto err_rss; } + 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) { -- 2.30.2