4199fdea60
Some of the NICs supported by DPDK have a possibility to accelerate TCP traffic by using segmentation offload. The application prepares a packet with valid TCP header with size up to 64K and deleguates the segmentation to the NIC. Implement the generic part of TCP segmentation offload in rte_mbuf. It introduces 2 new fields in rte_mbuf: l4_len (length of L4 header in bytes) and tso_segsz (MSS of packets). To delegate the TCP segmentation to the hardware, the user has to: - set the PKT_TX_TCP_SEG flag in mbuf->ol_flags (this flag implies PKT_TX_TCP_CKSUM) - set the flag PKT_TX_IPV4 or PKT_TX_IPV6 - set PKT_TX_IP_CKSUM if it's IPv4, and set the IP checksum to 0 in the packet - fill the mbuf offload information: l2_len, l3_len, l4_len, tso_segsz - calculate the pseudo header checksum without taking ip_len in account, and set it in the TCP header, for instance by using rte_ipv4_phdr_cksum(ip_hdr, ol_flags) The API is inspired from ixgbe hardware (the next commit adds the support for ixgbe), but it seems generic enough to be used for other hw/drivers in the future. This commit also reworks the way l2_len and l3_len are used in igb and ixgbe drivers as the l2_l3_len is not available anymore in mbuf. Signed-off-by: Mirek Walukiewicz <miroslaw.walukiewicz@intel.com> Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> |
||
---|---|---|
.. | ||
cmdline | ||
distributor | ||
dpdk_qat | ||
exception_path | ||
helloworld | ||
ip_fragmentation | ||
ip_pipeline | ||
ip_reassembly | ||
ipv4_multicast | ||
kni | ||
l2fwd | ||
l2fwd-ivshmem | ||
l3fwd | ||
l3fwd-acl | ||
l3fwd-power | ||
l3fwd-vf | ||
link_status_interrupt | ||
load_balancer | ||
multi_process | ||
netmap_compat | ||
qos_meter | ||
qos_sched | ||
quota_watermark | ||
skeleton | ||
timer | ||
vhost | ||
vhost_xen | ||
vm_power_manager | ||
vmdq | ||
vmdq_dcb | ||
Makefile |