Skip to content

Commit

Permalink
app/testpmd: fix tunnel TSO configuration
Browse files Browse the repository at this point in the history
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: 597f9fa ("app/testpmd: convert to new Tx offloads API")
Cc: [email protected]

Signed-off-by: Huisong Li <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>
  • Loading branch information
LiHuiSong1 authored and ferruhy committed Nov 11, 2023
1 parent 33156a6 commit e43dc93
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions app/test-pmd/cmdline.c
Original file line number Diff line number Diff line change
Expand Up @@ -5096,12 +5096,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);

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;
Expand All @@ -5114,14 +5108,23 @@ 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);
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);
}

cmd_config_queue_tx_offloads(&ports[res->port_id]);
Expand Down

0 comments on commit e43dc93

Please sign in to comment.