[PATCH v3 2/2] net/iavf: add restore command to testpmd

Bruce Richardson bruce.richardson at intel.com
Fri Oct 10 18:36:18 CEST 2025


On Thu, Oct 09, 2025 at 10:28:35AM +0000, Ciara Loftus wrote:
> This patch adds an IAVF testpmd command "port restore <port_id>" which
> will send a request to the PF to reset the given VF, followed by the
> VF then reinitialising and restarting itself.
> 
> Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
> ---
>  drivers/net/intel/iavf/iavf_testpmd.c | 52 +++++++++++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/drivers/net/intel/iavf/iavf_testpmd.c b/drivers/net/intel/iavf/iavf_testpmd.c
> index 775179fc01..2432e015b3 100644
> --- a/drivers/net/intel/iavf/iavf_testpmd.c
> +++ b/drivers/net/intel/iavf/iavf_testpmd.c
> @@ -69,6 +69,52 @@ static cmdline_parse_inst_t cmd_enable_tx_lldp = {
>  	},
>  };
>  
> +struct cmd_restore_result {
> +	cmdline_fixed_string_t port;
> +	cmdline_fixed_string_t restore;
> +	portid_t port_id;
> +};
> +
> +static cmdline_parse_token_string_t cmd_restore_port =
> +	TOKEN_STRING_INITIALIZER(struct cmd_restore_result,
> +		port, "port");
> +static cmdline_parse_token_string_t cmd_restore_restore =
> +	TOKEN_STRING_INITIALIZER(struct cmd_restore_result,
> +		restore, "restore");
> +static cmdline_parse_token_num_t cmd_restore_port_id =
> +	TOKEN_NUM_INITIALIZER(struct cmd_restore_result,
> +		port_id, RTE_UINT16);
> +
> +static void
> +cmd_restore_parsed(void *parsed_result,
> +	__rte_unused struct cmdline *cl, __rte_unused void *data)
> +{
> +	struct cmd_restore_result *res = parsed_result;
> +	int ret;
> +
> +	if (port_id_is_invalid(res->port_id, ENABLED_WARN))
> +		return;
> +
> +	ret = rte_pmd_iavf_restore(res->port_id);
> +	if (ret < 0)
> +		fprintf(stderr, "Request to restore VF failed for port %u: %s\n",
> +			res->port_id, rte_strerror(-ret));
> +	else
> +		printf("VF restore requested for port %u\n", res->port_id);
> +}
> +
> +static cmdline_parse_inst_t cmd_restore = {
> +	.f = cmd_restore_parsed,
> +	.data = NULL,
> +	.help_str = "port restore <port_id>",
> +	.tokens = {
> +		(void *)&cmd_restore_port,
> +		(void *)&cmd_restore_restore,
> +		(void *)&cmd_restore_port_id,
> +		NULL,
> +	},
> +};
> +
>  static struct testpmd_driver_commands iavf_cmds = {
>  	.commands = {
>  	{
> @@ -76,7 +122,13 @@ static struct testpmd_driver_commands iavf_cmds = {
>  		"set tx lldp (on|off)\n"
>  		"    Set iavf Tx lldp packet(currently only supported on)\n\n",
>  	},
> +	{
> +		&cmd_restore,
> +		"port restore (port_id)\n"
> +		"    Send a request to the PF to reset the VF, then restore the port\n\n",
> +	},
>  	{ NULL, NULL },
>  	},
Same comment on naming as with previous patch. Otherwise LGTM.

/Bruce


More information about the dev mailing list