[dpdk-dev] [PATCH v1] app/testpmd: fix CRC strip config error

Iremonger, Bernard bernard.iremonger at intel.com
Mon Oct 14 13:25:30 CEST 2019


Hi Ting,

> -----Original Message-----
> From: Xu, Ting
> Sent: Saturday, October 12, 2019 1:19 PM
> To: dev at dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>; Wu, Jingjing
> <jingjing.wu at intel.com>; Iremonger, Bernard
> <bernard.iremonger at intel.com>; stable at dpdk.org
> Subject: [PATCH v1] app/testpmd: fix CRC strip config error
> 
> This patch fixed the bug that an error appears when config rx_offload
> crc_strip using command "port config all crc-strip on|off". The reason is that
> this command was removed previously. However, the current command
> does not enable "crc_strip" option properly, so that testpmd returns error
> when config crc_strip.
> 
> In this patch, an additional operation is added to recognize "crc_strip"
> option, since "crc_strip" and "keep_crc" are using the same flag
> "DEV_RX_OFFLOAD_KEEP_CRC". The current command is "port config
> <port_id> rx_offload crc_strip on|off".
> 
> Fixes: e5db17a1e54e ("app/testpmd: remove duplicated Rx offload
> commands")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ting Xu <ting.xu at intel.com>
> ---
>  app/test-pmd/cmdline.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> def471d97..31dbe4a07 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -18084,6 +18084,9 @@ search_rx_offload(const char *name)
>  	int found = 0;
>  	unsigned int bit;
> 
> +	if (!strcmp(name, "crc_strip"))
> +		name = "keep_crc";
> +
>  	single_offload = 1;
>  	for (bit = 0; bit < sizeof(single_offload) * CHAR_BIT; bit++) {
>  		single_name =
> rte_eth_dev_rx_offload_name(single_offload);
> @@ -18113,6 +18116,7 @@ cmd_config_per_port_rx_offload_parsed(void
> *parsed_result,
>  	uint16_t nb_rx_queues;
>  	int q;
>  	int ret;
> +	int res_on_off = 1;
> 
>  	if (port->port_status != RTE_PORT_STOPPED) {
>  		printf("Error: Can't config offload when Port %d "
> @@ -18131,7 +18135,11 @@ cmd_config_per_port_rx_offload_parsed(void
> *parsed_result,
>  		return;
> 
>  	nb_rx_queues = dev_info.nb_rx_queues;
> -	if (!strcmp(res->on_off, "on")) {
> +	res_on_off = strcmp(res->on_off, "on");
> +
> +	if (!strcmp(res->offload, "crc_strip"))
> +		res_on_off = ~res_on_off;

It looks as if res_on_off is intended to have a value of 0 or 1.
The above line gives it a value of -1, is this intended ? 

> +	if (!res_on_off) {
>  		port->dev_conf.rxmode.offloads |= single_offload;
>  		for (q = 0; q < nb_rx_queues; q++)
>  			port->rx_conf[q].offloads |= single_offload;
> --
> 2.17.1

Regards,

Bernard.



More information about the dev mailing list