[Intel-wired-lan] [PATCH net v1] i40e: Fix incorrect netdev's real number of RX/TX queues
Alexander Lobakin
alexandr.lobakin at intel.com
Tue Dec 14 12:53:25 UTC 2021
From: Jedrzej Jagielski <jedrzej.jagielski at intel.com>
Date: Tue, 14 Dec 2021 10:10:16 +0000
> There was a wrong queues representation in sysfs during
> driver's reinitialization in case of online cpus number is
> less than combined queues. It was caused by stopped
> NetworkManager, which is responsible for calling vsi_open
> function during driver's initialization.
> In specific situation (ex. 12 cpus online) there were 16 queues
> in /sys/class/net/<iface>/queues. In case of modifying queues with
> value higher, than number of online cpus, then it caused write
> errors and other errors.
> Add updating of sysfs's queues representation during driver
> initialization.
>
> Fixes: 41c445ff0f48 ("i40e: main driver core")
> Signed-off-by: Lukasz Cieplicki <lukaszx.cieplicki at intel.com>
> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski at intel.com>
> ---
> drivers/net/ethernet/intel/i40e/i40e_main.c | 22 +++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 5322f44ed6ce..850264c4285b 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -14074,6 +14074,25 @@ static struct i40e_vsi *i40e_vsi_reinit_setup(struct i40e_vsi *vsi)
> return NULL;
> }
>
> +/**
> + * i40e_netif_set_realnum_tx_rx_queues - Update number of tx/rx queues
> + * @vsi: vsi structure
> + *
> + * This updates netdev's number of tx/rx queues
> + *
> + * Returns status of setting tx/rx queues
> + **/
> +static int i40e_netif_set_realnum_tx_rx_queues(struct i40e_vsi *vsi)
> +{
> + netif_set_real_num_rx_queues(
> + vsi->netdev,
> + vsi->num_queue_pairs);
> +
> + return netif_set_real_num_tx_queues(
> + vsi->netdev,
> + vsi->num_queue_pairs);
> +}
CHECK: Lines should not end with a '('
#393: FILE: drivers/net/ethernet/intel/i40e/i40e_main.c:14087:
+ netif_set_real_num_rx_queues(
CHECK: Lines should not end with a '('
#397: FILE: drivers/net/ethernet/intel/i40e/i40e_main.c:14091:
+ return netif_set_real_num_tx_queues(
The first parameter (vsi->netdev) fits into 79/80 chars, so only
the second one should be wrapped.
Please run `checkpatch --codespell --strict` on every patch you
create.
> +
> /**
> * i40e_vsi_setup - Set up a VSI by a given type
> * @pf: board private structure
> @@ -14203,6 +14222,9 @@ struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
> case I40E_VSI_MAIN:
> case I40E_VSI_VMDQ2:
> ret = i40e_config_netdev(vsi);
> + if (ret)
> + goto err_netdev;
> + ret = i40e_netif_set_realnum_tx_rx_queues(vsi);
> if (ret)
> goto err_netdev;
> ret = register_netdev(vsi->netdev);
> --
> 2.27.0
Thanks,
Al
More information about the Intel-wired-lan
mailing list