ixgbe: support TCP segmentation offload
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 26 Nov 2014 15:04:53 +0000 (16:04 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 26 Nov 2014 18:35:56 +0000 (19:35 +0100)
commit1224decaa44b3dba58e0a524fd0383969929c575
tree892e2e6239688137deb2f937e5c61428fe88e539
parent4199fdea60c36f3ef0529a61896fd5ab0cc0ba1f
ixgbe: support TCP segmentation offload

Implement TSO (TCP segmentation offload) in ixgbe driver. The driver is
now able to use PKT_TX_TCP_SEG mbuf flag and mbuf hardware offload infos
(l2_len, l3_len, l4_len, tso_segsz) to configure the hardware support of
TCP segmentation.

In ixgbe, when doing TSO, the IP length must not be included in the TCP
pseudo header checksum. A new function ixgbe_fix_tcp_phdr_cksum() is
used to fix the pseudo header checksum of the packet before giving it to
the hardware.

In the patch, the tx_desc_cksum_flags_to_olinfo() and
tx_desc_ol_flags_to_cmdtype() functions have been reworked to make them
clearer. This should not impact performance as gcc (version 4.8 in my
case) is smart enough to convert the tests into a code that does not
contain any branch instruction.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
lib/librte_mbuf/rte_mbuf.h
lib/librte_pmd_ixgbe/ixgbe_ethdev.c
lib/librte_pmd_ixgbe/ixgbe_rxtx.c
lib/librte_pmd_ixgbe/ixgbe_rxtx.h