numam-dpdk/lib
Jiayu Hu 119583797b gso: support TCP/IPv4 GSO
This patch adds GSO support for TCP/IPv4 packets. Supported packets
may include a single VLAN tag. TCP/IPv4 GSO doesn't check if input
packets have correct checksums, and doesn't update checksums for
output packets (the responsibility for this lies with the application).
Additionally, TCP/IPv4 GSO doesn't process IP fragmented packets.

TCP/IPv4 GSO uses two chained MBUFs, one direct MBUF and one indrect
MBUF, to organize an output packet. Note that we refer to these two
chained MBUFs as a two-segment MBUF. The direct MBUF stores the packet
header, while the indirect mbuf simply points to a location within the
original packet's payload. Consequently, use of the GSO library requires
multi-segment MBUF support in the TX functions of the NIC driver.

If a packet is GSO'd, TCP/IPv4 GSO reduces its MBUF refcnt by 1. As a
result, when all of its GSOed segments are freed, the packet is freed
automatically.

Signed-off-by: Jiayu Hu <jiayu.hu@intel.com>
Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Lei Yao <lei.a.yao@intel.com>
2017-10-12 01:36:57 +01:00
..
librte_acl lib: remove duplicate includes 2017-07-16 17:30:06 +02:00
librte_bitratestats ethdev: increase port id range 2017-10-06 18:23:25 +02:00
librte_cfgfile cfgfile: rework load function 2017-10-09 00:50:48 +02:00
librte_cmdline cmdline: fix compilation with -Og 2017-10-06 02:49:50 +02:00
librte_compat fix typos using codespell utility 2017-06-14 23:54:13 +02:00
librte_cryptodev cryptodev: fix C11 extensions in exported header 2017-08-05 01:18:21 +02:00
librte_distributor lib: remove duplicate includes 2017-07-16 17:30:06 +02:00
librte_eal gso: support TCP/IPv4 GSO 2017-10-12 01:36:57 +01:00
librte_efd update Cavium Inc copyright headers 2017-07-08 17:43:49 +02:00
librte_ether xen: remove dependency in libraries 2017-10-09 01:52:08 +02:00
librte_eventdev eventdev: add eth Rx adapter implementation 2017-10-10 18:34:09 +02:00
librte_gro gro: fix typo in map file 2017-08-31 23:02:54 +02:00
librte_gso gso: support TCP/IPv4 GSO 2017-10-12 01:36:57 +01:00
librte_hash hash: optimize Toeplitz RSS computation 2017-10-07 13:50:43 +02:00
librte_ip_frag ip_frag: rename map file to standardized name 2017-08-31 23:02:57 +02:00
librte_jobstats jobstats: fix a doxygen comment 2017-10-08 22:22:08 +02:00
librte_kni ethdev: increase port id range 2017-10-06 18:23:25 +02:00
librte_kvargs mk: optimize directory dependencies 2017-03-27 23:28:43 +02:00
librte_latencystats ethdev: increase port id range 2017-10-06 18:23:25 +02:00
librte_lpm lib: remove duplicate includes 2017-07-16 17:30:06 +02:00
librte_mbuf eal: allow user to override default mempool driver 2017-10-06 20:48:22 +02:00
librte_member member: add AVX for HT mode 2017-10-09 00:02:45 +02:00
librte_mempool mem: remove API to get physical address in dom0 2017-10-09 01:52:37 +02:00
librte_meter mk: optimize directory dependencies 2017-03-27 23:28:43 +02:00
librte_metrics metrics: fix compilation with -Og 2017-10-06 02:49:50 +02:00
librte_net net: fix inner L2 length in packet type parser 2017-10-05 23:34:45 +02:00
librte_pdump ethdev: increase port id range 2017-10-06 18:23:25 +02:00
librte_pipeline mk: optimize directory dependencies 2017-03-27 23:28:43 +02:00
librte_port ethdev: increase port id range 2017-10-06 18:23:25 +02:00
librte_power power: add send channel msg function to map file 2017-10-12 00:46:11 +01:00
librte_reorder fix typos using codespell utility 2017-06-14 23:54:13 +02:00
librte_ring ring: increase maximum ring size 2017-10-05 23:23:12 +02:00
librte_sched sched: remove check for SSE4 2017-07-04 14:39:18 +02:00
librte_table update Cavium Inc copyright headers 2017-07-08 17:43:49 +02:00
librte_timer timer: use 64-bit specific code on more platforms 2017-10-11 22:59:31 +02:00
librte_vhost vhost: fix false-positive warning from clang 5 2017-10-11 13:56:34 +02:00
Makefile gso: support TCP/IPv4 GSO 2017-10-12 01:36:57 +01:00