DPDK patches and discussions
 help / color / mirror / Atom feed
From: Olivier MATZ <olivier.matz@6wind.com>
To: dev@dpdk.org
Cc: jigsaw@gmail.com
Subject: Re: [dpdk-dev] [PATCH 00/12] add TSO support
Date: Tue, 11 Nov 2014 10:21:15 +0100	[thread overview]
Message-ID: <5461D50B.6050201@6wind.com> (raw)
In-Reply-To: <1415635166-1364-1-git-send-email-olivier.matz@6wind.com>

This is the test report for the new TSO feature. Test done on testpmd
on x86_64-native-linuxapp-gcc

platform:

  Tester (linux)   <---->   DUT (DPDK on westmere)
         ixgbe6             port0 (ixgbe)

Run testpmd on DUT:

  cd dpdk.org/
  make install T=x86_64-native-linuxapp-gcc
  cd x86_64-native-linuxapp-gcc/
  modprobe uio
  insmod kmod/igb_uio.ko
  python ../tools/dpdk_nic_bind.py -b igb_uio 0000:02:00.0
  echo 0 > /proc/sys/kernel/randomize_va_space
  echo 1000 >
/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
  echo 1000 >
/sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
  mount -t hugetlbfs none /mnt/huge
  ./app/testpmd -c 0x55 -n 4 -m 800 -- -i --port-topology=chained
--enable-rx-cksum

Disable all offload feature on Tester, and start capture:

  ethtool -K ixgbe6 rx off tx off tso off gso off gro off lro off
  ip l set ixgbe6 up
  tcpdump -n -e -i ixgbe6 -s 0 -w /tmp/cap

We use the following scapy script for testing (note: vxlan was not
tested because I have no i40e on my platform, but at least the test
scripts are provided if someone wants to check it):

class VXLAN(Packet):
    name = 'VXLAN'
    fields_desc = [
        FlagsField('flags', default=1 << 3, size=8,
            names=['R', 'R', 'R', 'R', 'I', 'R', 'R', 'R']),
        XBitField('reserved1', default=0x000000, size=24),
        BitField('vni', None, size=24),
        XBitField('reserved2', default=0x00, size=8),
    ]
    overload_fields = {
        UDP: {'sport': 4789, 'dport': 4789},
    }
    def mysummary(self):
        return self.sprintf("VXLAN (vni=%VXLAN.vni%)")

bind_layers(UDP, VXLAN, dport=4789)
bind_layers(VXLAN, Ether)

def test_v4(iface, macdst):
  macsrc = get_if_hwaddr(iface)
  v4 = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP())
  # valid TCP packet
  p=v4/TCP(flags=0x10)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # valid UDP packet
  p=v4/UDP()/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # bad IP checksum
  p=v4/TCP(flags=0x10)/Raw(RandString(50))
  p[IP].chksum=0x1234
  sendp(p, iface=iface, count=5)
  # bad TCP checksum
  p=v4/TCP(flags=0x10, chksum=0x1234)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # large packet
  p=v4/TCP(flags=0x10)/Raw(RandString(1400))
  sendp(p, iface=iface, count=5)

def test_v6(iface, macdst):
  macsrc = get_if_hwaddr(iface)
  v6 = Ether(dst=macdst, src=macsrc)/IPv6(src=RandIP6(), dst=RandIP6())
  # checksum TCP
  p=v6/TCP(flags=0x10)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # checksum UDP
  p=v6/UDP()/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # bad TCP checksum
  p=v6/TCP(flags=0x10, chksum=0x1234)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # large packet
  p=v6/TCP(flags=0x10)/Raw(RandString(1400))
  sendp(p, iface=iface, count=5)

def test_vxlan(iface, macdst):
  macsrc = get_if_hwaddr(iface)
  vxlan = Ether(dst=macdst, src=macsrc)/IP(src=RandIP(), dst=RandIP())
  vxlan /= UDP()/VXLAN(vni=1234)/Ether(dst=macdst, src=macsrc)
  vxlan /= IP(src=RandIP(), dst=RandIP())
  # valid packet
  p=vxlan/TCP(flags=0x10)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # bad IP checksum
  p=vxlan/TCP(flags=0x10)/Raw(RandString(50))
  p[IP].payload[IP].chksum=0x1234 # inner header
  sendp(p, iface=iface, count=5)
  # bad TCP checksum
  p=vxlan/TCP(flags=0x10, chksum=0x1234)/Raw(RandString(50))
  sendp(p, iface=iface, count=5)
  # large TCP packet, no UDP checksum on outer
  p=vxlan/TCP(flags=0x10)/Raw(RandString(1400))
  p[UDP].chksum = 0
  sendp(p, iface=iface, count=5)

test_v4("ixgbe6", "00:1B:21:8E:B2:30")
test_v6("ixgbe6", "00:1B:21:8E:B2:30")
test_vxlan("ixgbe6", "00:1B:21:8E:B2:30")

Test 1: rxonly fwd engine
=========================

Check that the NIC is able to decode the packet header and the bad
checksum values. The test_vxlan does not work on ixgbe as it is not able
to recognize vxlan packets.

testpmd command lines:

  set fwd rxonly
  set verbose 1
  start

Start test_v4() in scapy. Result is:

port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=92 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=92 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=92 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=92 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=92 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IP_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IP_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IP_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IP_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IP_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=104 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=1454 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=1454 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=1454 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=1454 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x0800 -
length=1454 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV4_HDR

test_v6

port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=112 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=112 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=112 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=112 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=112 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=124 - nb_segs=1 - Receive queue=0x0
  PKT_RX_L4_CKSUM_BAD
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=1474 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=1474 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=1474 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=1474 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR
port 0/queue 0: received 1 packets
  src=90:E2:BA:2B:0F:4C - dst=00:1B:21:8E:B2:30 - type=0x86dd -
length=1474 - nb_segs=1 - Receive queue=0x0
  PKT_RX_IPV6_HDR

Test 2: csum fwd engine, use sw checksum
========================================

The goal of this test is to show that the csum forward engine is able
to process checksum in software.

  # hw checksum and tso are disabled for port 0
  tx_checksum set ip sw 0
  tx_checksum set udp sw 0
  tx_checksum set tcp sw 0
  tx_checksum set sctp sw 0
  tx_checksum set vxlan sw 0
  tso set 0 0
  # set the forward engine
  set verbose 1
  set fwd csum
  start

Start test_v4() in scapy. Result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: flags=

Start test_v6() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: flags=

Start test_vxlan() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: flags=

Check the capture file (test2-cap-sw-cksum.cap)

Test 3: csum fwd engine, use hw checksum
========================================

The goal of this test is to show that the csum forward engine is able to
process checksum in hardware.

  # enable hw cksum in csumonly test, disable tso
  tx_checksum set ip hw 0
  tx_checksum set udp hw 0
  tx_checksum set tcp hw 0
  tx_checksum set sctp hw 0
  # set the forward engine
  set verbose 1
  set fwd csum
  start

Start test_v4() in scapy. Result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM

Start test_v6() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: flags=PKT_TX_TCP_CKSUM

Start test_vxlan() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_CKSUM

Check the capture file (test3-cap-hw-cksum.cap)

Note that the outer UDP checksum is wrong when not 0. This is normal as
the software cannot calculate the checksum of the inner layer because
the checksum of the inner layer will be modified by hardware.

Test 4: csum fwd engine, use TSO
================================

The goal of this test is to verify that TSO is working properly.

  # enable hw checksum
  tx_checksum set ip hw 0
  tx_checksum set udp hw 0
  tx_checksum set tcp hw 0
  tx_checksum set sctp hw 0
  # enable TSO
  tso set 800 0
  # set fwd engine and start
  set verbose 1
  set fwd csum
  start

Start test_v4() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG

Start test_v6() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=17 l4_len=0
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=0
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_UDP_CKSUM
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=86dd l3_len=40 l4_proto=6 l4_len=20
  tx: m->l2_len=14 m->l3_len=40 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_TCP_SEG

Start test_vxlan() in scapy, result is:

  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG
  -----------------
  rx: l2_len=14 ethertype=800 l3_len=20 l4_proto=6 l4_len=20
  rx: outer_l2_len=14 outer_ethertype=800 outer_l3_len=20
  tx: m->l2_len=64 m->l3_len=20 m->l4_len=20
  tx: m->tso_segsz=800
  tx: flags=PKT_TX_IP_CKSUM PKT_TX_TCP_SEG

Check the capture file (test4-cap-tso.cap)

Note that the outer UDP checksum is wrong when not 0. This is normal as
the software cannot calculate the checksum of the inner layer because
the checksum of the inner layer will be modified by hardware.

  parent reply	other threads:[~2014-11-11  9:11 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-10 15:59 Olivier Matz
2014-11-10 15:59 ` [dpdk-dev] [PATCH 01/12] igb/ixgbe: fix IP checksum calculation Olivier Matz
2014-11-10 15:59 ` [dpdk-dev] [PATCH 02/12] ixgbe: fix remaining pkt_flags variable size to 64 bits Olivier Matz
2014-11-10 16:59   ` Bruce Richardson
2014-11-10 15:59 ` [dpdk-dev] [PATCH 03/12] mbuf: move vxlan_cksum flag definition at the proper place Olivier Matz
2014-11-10 17:09   ` Bruce Richardson
2014-11-10 15:59 ` [dpdk-dev] [PATCH 04/12] mbuf: add help about TX checksum flags Olivier Matz
2014-11-10 17:10   ` Bruce Richardson
2014-11-10 15:59 ` [dpdk-dev] [PATCH 05/12] mbuf: remove too specific PKT_TX_OFFLOAD_MASK definition Olivier Matz
2014-11-10 17:14   ` Bruce Richardson
2014-11-10 20:59     ` Olivier MATZ
2014-11-10 15:59 ` [dpdk-dev] [PATCH 06/12] mbuf: add functions to get the name of an ol_flag Olivier Matz
2014-11-10 17:29   ` Bruce Richardson
2014-11-10 20:54     ` Olivier MATZ
2014-11-12 17:21     ` Ananyev, Konstantin
2014-11-12 17:44       ` Olivier MATZ
2014-11-10 15:59 ` [dpdk-dev] [PATCH 07/12] mbuf: generic support for TCP segmentation offload Olivier Matz
2014-11-11  3:17   ` Liu, Jijiang
2014-11-12 13:09   ` Ananyev, Konstantin
2014-11-10 15:59 ` [dpdk-dev] [PATCH 08/12] ixgbe: support " Olivier Matz
2014-11-10 15:59 ` [dpdk-dev] [PATCH 09/12] testpmd: fix use of offload flags in testpmd Olivier Matz
2014-11-10 15:59 ` [dpdk-dev] [PATCH 10/12] testpmd: rework csum forward engine Olivier Matz
2014-11-11  8:35   ` Liu, Jijiang
2014-11-11  9:55     ` Olivier MATZ
2014-11-10 15:59 ` [dpdk-dev] [PATCH 11/12] testpmd: support TSO in " Olivier Matz
2014-11-10 15:59 ` [dpdk-dev] [PATCH 12/12] testpmd: add a verbose mode " Olivier Matz
2014-11-11  9:21 ` Olivier MATZ [this message]
2014-11-11  9:48   ` [dpdk-dev] [PATCH 00/12] add TSO support Olivier MATZ
2014-11-14 17:03 ` [dpdk-dev] [PATCH v2 00/13] " Olivier Matz
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 01/13] igb/ixgbe: fix IP checksum calculation Olivier Matz
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 02/13] ixgbe: fix remaining pkt_flags variable size to 64 bits Olivier Matz
2014-11-17 16:47     ` Walukiewicz, Miroslaw
2014-11-17 17:03       ` Olivier MATZ
2014-11-17 17:40         ` Thomas Monjalon
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 03/13] mbuf: move vxlan_cksum flag definition at the proper place Olivier Matz
2014-11-17 22:05     ` Thomas Monjalon
2014-11-18 14:10       ` Olivier MATZ
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 04/13] mbuf: add help about TX checksum flags Olivier Matz
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 05/13] mbuf: remove too specific PKT_TX_OFFLOAD_MASK definition Olivier Matz
2014-11-17 10:35     ` Bruce Richardson
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 06/13] mbuf: add functions to get the name of an ol_flag Olivier Matz
2014-11-17 10:39     ` Bruce Richardson
2014-11-17 12:51       ` Olivier MATZ
2014-11-17 19:00     ` Ananyev, Konstantin
2014-11-18  9:29       ` Olivier MATZ
2014-11-19 11:06         ` Ananyev, Konstantin
2014-11-25 10:37           ` Ananyev, Konstantin
2014-11-25 12:15             ` Zhang, Helin
2014-11-25 12:37               ` Olivier MATZ
2014-11-25 13:31                 ` Zhang, Helin
2014-11-25 13:49               ` Ananyev, Konstantin
2014-11-26  0:58                 ` Zhang, Helin
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 07/13] testpmd: fix use of offload flags in testpmd Olivier Matz
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 08/13] testpmd: rework csum forward engine Olivier Matz
2014-11-17  8:11     ` Liu, Jijiang
2014-11-17 13:00       ` Olivier MATZ
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 09/13] mbuf: introduce new checksum API Olivier Matz
2014-11-17 18:15     ` Ananyev, Konstantin
2014-11-18  9:10       ` Olivier MATZ
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 10/13] mbuf: generic support for TCP segmentation offload Olivier Matz
2014-11-17 23:33     ` Ananyev, Konstantin
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 11/13] ixgbe: support " Olivier Matz
2014-11-17 18:26     ` Ananyev, Konstantin
2014-11-18  9:11       ` Olivier MATZ
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 12/13] testpmd: support TSO in csum forward engine Olivier Matz
2014-11-14 17:03   ` [dpdk-dev] [PATCH v2 13/13] testpmd: add a verbose mode " Olivier Matz
2014-11-20 22:58   ` [dpdk-dev] [PATCH v3 00/13] add TSO support Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 01/13] igb/ixgbe: fix IP checksum calculation Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 02/13] ixgbe: fix remaining pkt_flags variable size to 64 bits Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 03/13] mbuf: reorder tx ol_flags Olivier Matz
2014-11-25 10:22       ` Thomas Monjalon
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 04/13] mbuf: add help about TX checksum flags Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 05/13] mbuf: remove too specific PKT_TX_OFFLOAD_MASK definition Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 06/13] mbuf: add functions to get the name of an ol_flag Olivier Matz
2014-11-25 10:23       ` Thomas Monjalon
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 07/13] testpmd: fix use of offload flags in testpmd Olivier Matz
2014-11-25 11:52       ` Ananyev, Konstantin
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 08/13] testpmd: rework csum forward engine Olivier Matz
2014-11-26 10:10       ` Ananyev, Konstantin
2014-11-26 11:14         ` Olivier MATZ
2014-11-26 12:25           ` Ananyev, Konstantin
2014-11-26 14:55             ` Olivier MATZ
2014-11-26 16:34               ` Ananyev, Konstantin
2014-11-27  8:34                 ` Liu, Jijiang
2014-11-26 13:59           ` Liu, Jijiang
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 09/13] mbuf: introduce new checksum API Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 10/13] mbuf: generic support for TCP segmentation offload Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 11/13] ixgbe: support " Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 12/13] testpmd: support TSO in csum forward engine Olivier Matz
2014-11-20 22:58     ` [dpdk-dev] [PATCH v3 13/13] testpmd: add a verbose mode " Olivier Matz
2014-11-26 15:04     ` [dpdk-dev] [PATCH v4 00/13] add TSO support Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 01/13] igb/ixgbe: fix IP checksum calculation Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 02/13] ixgbe: fix remaining pkt_flags variable size to 64 bits Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 03/13] mbuf: reorder tx ol_flags Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 04/13] mbuf: add help about TX checksum flags Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 05/13] mbuf: remove too specific PKT_TX_OFFLOAD_MASK definition Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 06/13] mbuf: add functions to get the name of an ol_flag Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 07/13] testpmd: fix use of offload flags in testpmd Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 08/13] testpmd: rework csum forward engine Olivier Matz
2014-11-26 20:02         ` Ananyev, Konstantin
2014-11-27  8:26           ` Liu, Jijiang
2014-11-27  9:10           ` Olivier MATZ
2014-11-27 11:02             ` Ananyev, Konstantin
2014-11-28  8:54               ` Liu, Jijiang
2014-11-28  9:54                 ` Olivier MATZ
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 09/13] mbuf: introduce new checksum API Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 10/13] mbuf: generic support for TCP segmentation offload Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 11/13] ixgbe: support " Olivier Matz
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 12/13] testpmd: support TSO in csum forward engine Olivier Matz
2014-11-26 21:23         ` Ananyev, Konstantin
2014-11-26 15:04       ` [dpdk-dev] [PATCH v4 13/13] testpmd: add a verbose mode " Olivier Matz
2014-11-26 18:30       ` [dpdk-dev] [PATCH v4 00/13] add TSO support Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5461D50B.6050201@6wind.com \
    --to=olivier.matz@6wind.com \
    --cc=dev@dpdk.org \
    --cc=jigsaw@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).