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: sta...@dpdk.org

Signed-off-by: Ting Xu <ting...@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;
+       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

Reply via email to