Hi Jijiang, On 01/13/2015 04:04 AM, Liu, Jijiang wrote: > the following two commands are. > > 1. tx_checksum set sw-tunnel-mode on/off > > 2. tx_checksum set hw-tunnel-mode on/off > > For command 1, If the sw-tunnel-mode is set/clear, which will set/clear a > testpmd flag that is used in the process of analyzing incoming packet., the > pseudo-codes are list below, > > If (sw-tunnel-mode) > > Csum fwd engine will analyze if incoming packet is a tunneling packet. > tunnel = 1; > else > Csum fwd engine will not analyze if incoming packet is a > tunneling packet, and treat all the incoming packets as non-tunneling packets. > It is used for A.
What about "recognize-tunnel" instead of "sw-tunnel-mode"? Or "parse-tunnel"? To me, using "sw-" or "hw-" prefix is confusing because in any case the checksums can be calculated in software or hardware depending on "tx_checksum set outer-ip hw|sw". Moreover, this command has an impact on receive side, but the name is still "tx_checksum". Maybe this is also confusing. > For command 2, If the hw-tunnel-mode is set/clear, which will set/clear a > testpmd flag that is used in the process of how to handle tunneling packet, > the pseudo-codes are list below, > > if (tunnel == 1) { // this is a tunneling packet > If (hw-tunnel-mode) > ol_flags |= PKT_TX_UDP_TUNNEL_PKT; > > Csum fwd engine set PKT_TX_UDP_TUNNEL_PKT offload flag, which > means to tell HW treat the transmit packet as a tunneling packet to do > checksum offload. > It is used for B.1 > Else > Csum fwd engine doesn't set PKT_TX_UDP_TUNNEL_PKT > offload flag, which means tell HW to treat the packet as ordinary > (non-tunnelled) packet. > It is used for B.2 > } What about: tx_checksum set tunnel-method normal|outer It would select if we use lX_len or outer_lX_len. Is it what you mean? And this only makes sense when we use hw checksum right? >> And will it be possible to support future hardware that will be able to >> compute >> both outer l3, outer l4, l3 and l4 checksums? > > Yes. > Currently, i40e support outer l3, outer l4, l3 and l4 checksums offload at > the same time. I probably missed something here: we only have PKT_TX_OUTER_IP_CKSUM but there is no PKT_TX_OUTER_UDP_CKSUM. Is outer UDP checksum supported > test case C: > tx_checksum set tunnel-mode hw > tx_checksum set outer-ip hw > tx_checksum set ip hw > tx_checksum set tcp hw > > Of course, outer udp is not listed here for VXLAN. I don't understand why. Could you detail it? >> I have another idea, please let me know if you find it clearer or not. >> The commands format would be: >> >> tx_checksum <pkt-type> <field1> <action1> <field2> <action2> ... >> >> [...] >> >> What do you think? > > Thanks for your proposal. > It is clear for me. > > But there are two questions for me. > > As I know, in current command line framework, the option in command line is > exact match, so you probably have to add duplicated codes when you want to > support a new packet types. I don't think it's really a problem. The cmdline library supports string list, so can have the following 3 commands definitions: 1. tx_checksum ip-udp|ip-tcp|ip-sctp|vxlan-ip-udp|vxlan-ip-tcp|vxlan-ip-sctp l3 off|sw|hw l4 off|sw|hw 2. tx_checksum ip-other|vxlan-ip-other l3 off|sw|hw 3. tx_checksum vxlan outer-l3 off|sw|hw outer-l4 off|sw|hw Maybe 1 and 2 could be splitted in non-vxlan and vxlan. But only the structure should be redefined to have a different help string, not the callback function. > Other question: > > Currently, the following testpmd flag is for per port, not for per packet > type, when they are set, which will affect whole port, not just for packet > type or format, if you add <pkt-type> option in cmdline, which means you > have to other changes. > > /** Offload IP checksum in csum forward engine */ > #define TESTPMD_TX_OFFLOAD_IP_CKSUM 0x0001 > /** Offload UDP checksum in csum forward engine */ > #define TESTPMD_TX_OFFLOAD_UDP_CKSUM 0x0002 > /** Offload TCP checksum in csum forward engine */ > #define TESTPMD_TX_OFFLOAD_TCP_CKSUM 0x0004 > /** Offload SCTP checksum in csum forward engine */ > #define TESTPMD_TX_OFFLOAD_SCTP_CKSUM 0x0008 > /** Offload VxLAN checksum in csum forward engine */ > #define TESTPMD_TX_OFFLOAD_VXLAN_CKSUM 0x0010 We can add a portid in each command. > Of course, it is welcome if you can send this patch set with this idea for > community review. Let's first agree on the user API :) Regards, Olivier