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



Reply via email to