On 11/10/2023 8:19 AM, Huisong Li wrote: > Currently, there are two conditions to set tunnel TSO, like "parse tunnel" > and "outer IP checksum". If these conditions are not satisfied, testpmd > should not change their configuration, like tx_offloads on port and per > queue, and no need to request "reconfig device". > > Fixes: 597f9fafe13b ("app/testpmd: convert to new Tx offloads API") > Cc: sta...@dpdk.org > > Signed-off-by: Huisong Li <lihuis...@huawei.com> > --- > app/test-pmd/cmdline.c | 36 ++++++++++++++++++++---------------- > 1 file changed, 20 insertions(+), 16 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index d3243d016b..33e66d1d93 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -5093,17 +5093,6 @@ cmd_tunnel_tso_set_parsed(void *parsed_result, > res->port_id); > return; > } > - check_tunnel_tso_nic_support(res->port_id, > dev_info.tx_offload_capa); > - } > - > - if (ports[res->port_id].tunnel_tso_segsz == 0) { > - ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso; > - printf("TSO for tunneled packets is disabled\n"); > - } else { > - ports[res->port_id].dev_conf.txmode.offloads |= > - (all_tunnel_tso & dev_info.tx_offload_capa); > - printf("TSO segment size for tunneled packets is %d\n", > - ports[res->port_id].tunnel_tso_segsz); > > /* Below conditions are needed to make it work: > * (1) tunnel TSO is supported by the NIC; > @@ -5116,14 +5105,29 @@ cmd_tunnel_tso_set_parsed(void *parsed_result, > * is not necessary for IPv6 tunneled pkts because there's no > * checksum in IP header anymore. > */ > - > - if (!ports[res->port_id].parse_tunnel) > + if (!ports[res->port_id].parse_tunnel) { > fprintf(stderr, > - "Warning: csum parse_tunnel must be set so that > tunneled packets are recognized\n"); > + "Error: csum parse_tunnel must be set so that > tunneled packets are recognized\n"); > + return; > + } > if (!(ports[res->port_id].dev_conf.txmode.offloads & > - RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)) > + RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)) { > fprintf(stderr, > - "Warning: csum set outer-ip must be set to hw > if outer L3 is IPv4; not necessary for IPv6\n"); > + "Error: csum set outer-ip must be set to hw if > outer L3 is IPv4; not necessary for IPv6\n"); > + return; > + } > + > + check_tunnel_tso_nic_support(res->port_id, > dev_info.tx_offload_capa); > + } > + > + if (ports[res->port_id].tunnel_tso_segsz == 0) { > + ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso; > + printf("TSO for tunneled packets is disabled\n"); > + } else { > + ports[res->port_id].dev_conf.txmode.offloads |= > + (all_tunnel_tso & dev_info.tx_offload_capa); > + printf("TSO segment size for tunneled packets is %d\n", > + ports[res->port_id].tunnel_tso_segsz); >
Similar comment with previous patch, why having separate if block for same check, above block can be merged to it.