Commit Graph

1689 Commits

Author SHA1 Message Date
Anatoly Burakov
4c38e5532a ip_frag: refactor IPv4 fragmentation into a proper library
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
[Thomas: add in doxygen]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-06-16 18:55:04 +02:00
Anatoly Burakov
601e279df0 ip_frag: move fragmentation/reassembly headers into a library
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-06-16 18:55:04 +02:00
Konstantin Ananyev
361b2e9559 acl: new sample l3fwd-acl
Demonstrates the use of the ACL library in the DPDK application to
implement packet classification and L3 forwarding.

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Waterman Cao <waterman.cao@intel.com>
Acked-by: Pablo de Lara Guarch <pablo.de.lara.guarch@intel.com>
[Thomas: some code-style changes]
2014-06-14 01:29:45 +02:00
Konstantin Ananyev
96ff445371 examples/l3fwd: reorganise and optimize LPM code path
With latest HW and optimised RX/TX path there is a huge gap between
tespmd iofwd and l3fwd performance results.
So there is an attempt to optimise l3fwd LPM code path and reduce the gap:
 - Instead of processing each input packet up to completion -
 divide packet processing into several stages and perform
 stage by stage for the whole burst.
 - Unroll things by the factor of 4 whenever possible.
 - Use SSE instincts for some operations (bswap, replace MAC addresses, etc).
 - Avoid TX packet buffering whenever possible.
 - Move some checks from RX/TX into setup phase.

Note that new(optimized) code path can be switched on/off by setting
ENABLE_MULTI_BUFFER_OPTIMIZE macro to 1/0.

Some performance data:
SUT: dual-socket board IVB 2.8GHz, 2x1GB pages.
4 ports on 4 NICs (all at socket 0) connected to the traffic generator.
kernel: 3.11.3-201.fc19.x86_64, gcc: 4.8.2.
64B packets, using the packet flooding method.
All 4 ports are managed by one logical core:
Optimised scalar PMD RX/TX was used.

                          DIFF % (NEW-OLD)
IPV4-CONT-BURST:               +23%
IPV6-CONT-BURST :              +13%
IPV4/IPV6-CONT-BURST:          +8%
IPV4-4STREAMSX8:               +7%
IPV4-4STREAMSX1:               -2%

Test cases description:
IPV4-CONT-BURST - IPV4 packets all packets from the one input port
are destined for the same output port.
IPV6-CONT-BURST - IPV6 packets all packets from the one input port
are destined for the same output port.
IPV4/IPV6-CONT-BURST - mix of the first 2 with interleave=1
(e.g: IPV4,IPV6,IPV4,IPV6, ...)
IPV4-4STREAMSX1 - 4 streams of IPV4 packets, where all packets
from same stream are destined for the same output port
(e.g: IPV4_DST_P0, IPV4_DST_P1,  IPV4_DST_P2, IPV4_DST_P3, IPV4_DST_P0, ...)
IPV4-4STREAMSX8 - same as above but packets for each stream
are coming in groups of 8
(e.g: IPV4_DST_P0 X 8, IPV4_DST_P1 X 8, IPV4_DST_P2 X 8, IPV4_DST_P3 X 8,
IPV4_DST_P0 X 8, ...)

Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Waterman Cao <waterman.cao@intel.com>
Acked-by: Pablo de Lara Guarch <pablo.de.lara.guarch@intel.com>
2014-06-12 12:11:54 +02:00
Bruce Richardson
3031749c2d remove trailing whitespaces
This commit removes trailing whitespace from lines in files. Almost all
files are affected, as the BSD license copyright header had trailing
whitespace on 4 lines in it [hence the number of files reporting 8 lines
changed in the diffstat].

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
[Thomas: remove spaces before tabs in libs]
[Thomas: remove more trailing spaces in non-C files]
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-06-11 00:29:34 +02:00
Ouyang Changchun
c3dfe188ba examples/vhost: zero copy mode
This patch supports user space vhost zero copy. It removes packets copying between host and guest in RX/TX.
It introduces an extra ring to store the detached mbufs. At initialization stage all mbufs will put into
this ring; when one guest starts, vhost gets the available buffer address allocated by guest for RX and
translates them into host space addresses, then attaches them to mbufs and puts the attached mbufs into
mempool.
Queue starting and DMA refilling will get mbufs from mempool and use them to set the DMA addresses.

For TX, it gets the buffer addresses of available packets to be transmitted from guest and translates
them to host space addresses, then attaches them to mbufs and puts them to TX queues.
After TX finishes, it pulls mbufs out from mempool, detaches them and puts them back into the extra ring.

Signed-off-by: Ouyang Changchun <changchun.ouyang@intel.com>
Tested-by: Waterman Cao <waterman.cao@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-28 16:00:55 +02:00
David Marchand
519f32279e config: rename "default" configurations as "native"
The "default" part in configuration filenames is misleading.
Rename this as "native", as this is the RTE_MACHINE that is set in these files.
This should make it clearer for people who build DPDK on a system then run it on
another one.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2014-05-21 16:25:06 +02:00
Neil Horman
e5ffdd1457 ethdev: remove rte_pmd_init_all function
Now that we've converted all the pmds in dpdk to use the driver registration
macro, rte_pmd_init_all has become empty.  As theres no reason to keep it around
anymore, just remove it and fix up all the eample callers.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-20 14:28:26 +02:00
Neil Horman
7b9d82208b ixgbe: convert to use of PMD_REGISTER_DRIVER and fix linking
Convert the ixgbe pmd driver to use the PMD_REGISTER_DRIVER macro.
This means that the test applications now have no reference to the ixgbe library
when building DSO's and must specify its use on the command line with the -d
option.  Static linking will still initalize the driver automatically.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-20 14:28:16 +02:00
Neil Horman
d93c252e88 igb: convert to use of PMD_REGISTER_DRIVER and fix linking
Convert the igb pmd driver to use the PMD_REGISTER_DRIVER macro.
This means that the test applications now have no reference to the igb library
when building DSO's and must specify its use on the command line with the -d
option.  Static linking will still initalize the driver automatically.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-20 14:28:16 +02:00
Stephen Hemminger
591a9d7985 add FILE argument to debug functions
The DPDK dump functions are useful for remote debugging of an
applications. But when application runs as a daemon, stdout
is typically routed to /dev/null.

Instead change all these functions to take a stdio FILE * handle
instead. An application can then use open_memstream() to capture
the output.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
[Thomas: fix quota_watermark example]
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-16 16:02:55 +02:00
Olivier Matz
d88219f588 examples/netmap_compat: fix makefile
It is not allowed to reference a an absolute file name in SRCS-y.
A VPATH has to be used, else the dependencies won't be checked
properly.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-16 16:02:55 +02:00
Olivier Matz
ea9a59b26c examples/qos_sched: fix makefile
The example does not compile as the linker complains about duplicated
symbols.

Remove -lsched from LDLIBS, it is already present in rte.app.mk and
added by the DPDK framework automatically.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-16 16:02:55 +02:00
Olivier Matz
b253525fe2 examples: add a makefile to build all examples
It is now possible to build all examples by doing the following:

  user@droids:~/dpdk.org$ cd examples
  user@droids:~/dpdk.org/examples$ make RTE_SDK=${PWD}/.. \
      RTE_TARGET=x86_64-default-linuxapp-gcc

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-16 16:02:54 +02:00
Olivier Matz
f71d637cc5 examples: use rte.extsubdir.mk to build examples with subdirectories
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2014-05-16 16:01:46 +02:00
Bruce Richardson
06371afe39 examples/netmap_compat: import netmap compatibility example
This provides a sample application and library showing how to use the
Intel(R) DPDK with basic netmap applications.

The Netmap compatibility library provides a minimal set of APIs to give the ability to
programs written against the Netmap APIs to be run with minimal changes to their
source code, using the Intel® DPDK to perform the actual packet I/O.
Since Netmap applications use regular system calls, like open(), ioctl() and
mmap() to communicate with the Netmap kernel module performing the packet I/O,
the compat_netmap library provides a set of similar APIs to use in place of those
system calls, effectively turning a Netmap application into a Intel(R) DPDK one.
The provided library is currently minimal and doesn’t support all the features that
Netmap supports, but is enough to run simple applications, such as the
bridge example included.

The application requires a single command line option:
 -i INTERFACE is the number of a valid Intel(R) DPDK port to use.
If a single -i parameter is given, the interface will send back all the traffic it
receives. If two -i parameters are given, the two interfaces form a bridge, where
traffic received on one interface is replicated and sent by the other interface.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:47:59 +01:00
Bruce Richardson
6aa4972491 examples/l2fwd-ivshmem: import sample application
This provides a new sample application which demonstrates how
the ivshmem library and EAL capabilities can be used to create
a zero-copy fast-path for packet communication between host
machine and guest vm.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:47:59 +01:00
Bruce Richardson
4796ad63ba examples/vhost: import userspace vhost application
The vhost sample application demonstrates integration of the Intel(R) Data Plane
Development Kit (Intel(R) DPDK) with the Linux KVM hypervisor by implementing the
vhost-net offload API. The sample application performs simple packet switching
between virtual machines based on Media Access Control (MAC) address or Virtual
Local Area Network (VLAN) tag. The splitting of ethernet traffic from an external switch
is performed in hardware by the Virtual Machine Device Queues (VMDQ) and Data
Center Bridging (DCB) features of the Intel(R) 82599 10 Gigabit Ethernet Controller.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:47:59 +01:00
Bruce Richardson
de40804e0d examples/dpdk-qat: various updates
Updates including support for Intel® Communications Chipset
8925 to 8955 Series.
Add support for the wireless KASUMI algorithm.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:47:59 +01:00
Bruce Richardson
13c4ebd65a examples: minor changes
A series of minor changes to example applications included in the
Intel DPDK 1.6 release.
* changes to NIC configuration flags, e.g. specifying RSS
* replacing local "DIM" macro with common "RTE_DIM" macro
* minor whitespace changes for alignment.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-26 10:47:59 +01:00
Bruce Richardson
47bd46112b xen: import xenvirt pmd and vhost_xen
This provides a para-virtualization packet switching solution, based on the
Xen hypervisor’s Grant Table, which provides simple and fast packet
switching capability between guest domains and host domain based on
MAC address or VLAN tag.

This solution is comprised of two components; a Poll Mode Driver (PMD)
as the front end in the guest domain and a switching back end in the
host domain.  XenStore is used to exchange configure information
between the PMD front end and switching back end,
including grant reference IDs for shared Virtio RX/TX rings, MAC
address, device state, and so on.

The front end PMD can be found in the Intel DPDK directory lib/
librte_pmd_xenvirt and back end example in examples/vhost_xen.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-25 21:29:19 +01:00
Bruce Richardson
148f963fb5 xen: core library changes
Core support for using the Intel DPDK with Xen Dom0 - including EAL
changes and mempool changes. These changes encompass how memory mapping
is done, including support for initializing a memory pool inside an
already-allocated block of memory.
KNI sample app updated to use KNI close function when used with Xen.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-25 21:29:19 +01:00
Bruce Richardson
e49680a87e mk: compilation fixes
Missing _GNU_SOURCE define for compilation of a number of files.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-25 21:29:18 +01:00
Bruce Richardson
764bf26873 add FreeBSD support
Changes to allow compilation and use on FreeBSD. Includes:
* contigmem and nic_uio driver for FreeBSD
* new EAL instance
* new "bsdapp" compilation target
* various compilation fixes due to differences between linux and freebsd

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-25 21:29:18 +01:00
Bruce Richardson
e9d48c0072 update Intel copyright years to 2014
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2014-02-25 21:29:14 +01:00
Intel
829dddb3a7 examples/l3fwd-vf: improve configuration
Signed-off-by: Intel
2013-11-24 21:31:36 +01:00
Intel
462ad42792 examples/exception_path: 64-bit coremasks
Signed-off-by: Intel
2013-11-24 21:31:36 +01:00
Intel
9787d22f34 examples: minor changes
Signed-off-by: Intel
2013-10-09 16:16:16 +02:00
Intel
78a94f7458 examples/qat: upgrade to CRF 1.2
Signed-off-by: Intel
2013-10-09 16:16:16 +02:00
Intel
2a6ce1afd9 examples/l3fwd: no bare metal support
Signed-off-by: Intel
2013-10-09 16:16:16 +02:00
Intel
95e8005a56 examples/l2fwd_fork: new app
Signed-off-by: Intel
2013-10-09 16:16:16 +02:00
Intel
cfd5c971e5 examples/qos_sched: add stats
Signed-off-by: Intel
2013-10-09 16:16:15 +02:00
Intel
fc8a10d852 examples/qos_meter: add color policy
Signed-off-by: Intel
2013-10-09 16:16:15 +02:00
Intel
b475eb0bc4 examples/kni: new parameters
Signed-off-by: Intel
2013-10-09 16:16:15 +02:00
Intel
d4f37b0945 examples/vmdq_dcb: new port mask parameter
Signed-off-by: Intel
2013-10-09 16:16:15 +02:00
Intel
6bb97df521 examples/vmdq: new app
Signed-off-by: Intel
2013-10-09 16:16:15 +02:00
Intel
1c1d4d7a92 doc: whitespace changes in licenses
Signed-off-by: Intel
2013-10-09 14:51:55 +02:00
Intel
595ea7dc80 examples/ip_reassembly: various updates
- postpone calls to rte_pktmbuf_free() when a mbuf is not used anymore
- add some tx statistics

Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
7e0fa599bc examples/dpdk_qat: rework port discovery
Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
624148d2b1 examples/qos_sched: minor changes
Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
e93b24a3da examples/qos_sched: add --msz for mempool size
Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
b451aa39db examples/l3fwd-power: use DD bit rather than RX queue count
Prefer use of rte_eth_rx_descriptor_done to rte_eth_rx_queue_count.

Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
835c5409a7 sched: only support TC 3 oversubscription
Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
a91c3cadb8 sched: add mtu parameter
Signed-off-by: Intel
2013-09-17 14:16:10 +02:00
Intel
1d6c3ee332 examples/quota_watermark: initial import
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
cc8f4d020c examples/ip_reassembly: initial import
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
0e8d0d8f05 examples/l3fwd-vf: release resources on SIGINT
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
997ee89068 examples/l3fwd: various updates
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
f56d08158f examples/l2fwd: if no port configured, exit
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
967b629488 examples/vmdq_dcb: display port mac address
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
15b5251cb3 examples/dpdk_qat: minor change
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
9dca67e0c5 examples/dpdk_qat: fix cross compile check
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
cdfd5dbb90 examples: work only on defined lcores
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
5c95261dbf examples: time fixes
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
1c17baf486 examples: use global RTE_MAX_ETHPORTS
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
e60f71ebd6 examples: numa updates
Signed-off-by: Intel
2013-09-17 14:16:09 +02:00
Intel
f2e7592c47 kni: fix multi-process support
Signed-off-by: Intel
2013-09-17 14:16:08 +02:00
Intel
32e7aa0b3a ethdev: update VMDq/DCB support
Signed-off-by: Intel
2013-09-17 14:16:08 +02:00
Intel
b6ea6408fb ethdev: store numa_node per device
Signed-off-by: Intel
2013-09-17 14:16:07 +02:00
Intel
e987449c9f timer: prefer TSC to HPET
Signed-off-by: Intel
2013-09-17 14:09:22 +02:00
Intel
de3cfa2c98 sched: initial import
Signed-off-by: Intel
2013-09-17 14:09:21 +02:00
Intel
e6541fdec8 meter: initial import
Signed-off-by: Intel
2013-09-17 14:09:21 +02:00
Intel
d7937e2e3d power: initial import
Signed-off-by: Intel
2013-09-17 14:09:21 +02:00
Intel
a974564b34 lib: fix various compilation warnings
Signed-off-by: Intel
2013-09-06 11:43:07 +02:00
Intel
00752cbf41 file mode changes
Signed-off-by: Intel
2013-09-06 11:43:07 +02:00
Intel
b6df9fc871 update copyright date to 2013
Signed-off-by: Intel
2013-07-25 16:07:52 +02:00
Intel
4bd1246b75 examples: various changes
Signed-off-by: Intel
2013-07-25 16:07:52 +02:00
Intel
1d8d954b80 examples/vmdq_dcb: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
d46989e0d3 examples/multi_process: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
3b95eb689b examples/load_balancer: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
0c3d715cb3 examples/link_status_interrupt: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
f68aad7904 examples/l3fwd: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
0cbac1a0a8 examples/l3fwd-vf: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
16ac9cf052 examples/l2fwd: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
6441b9f653 examples/ipv4_multicast: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
33399bcaa4 examples/ipv4_frag: update
Signed-off-by: Intel
2013-07-25 15:58:01 +02:00
Intel
3460012bcc examples/qat: update
Signed-off-by: Intel
2013-07-25 15:57:54 +02:00
Intel
48a5ba0977 examples/qat: rename config files
Signed-off-by: Intel
2013-07-25 15:57:45 +02:00
Intel
d3641ae863 examples: update link status checks
Signed-off-by: Intel
2013-07-25 15:57:45 +02:00
Intel
90dc1a670c examples: remove l2fwd-vf
Signed-off-by: Intel
2013-07-25 15:54:18 +02:00
Intel
041cdbf947 ethdev: add DCB support
Signed-off-by: Intel
2013-07-25 15:23:28 +02:00
Intel
69d22b8e66 ethdev: init all builtin drivers
Signed-off-by: Intel
2013-07-25 15:23:28 +02:00
Intel
42d7141686 mbuf: group fields in vlan_macip union
Signed-off-by: Intel
2013-07-25 15:23:27 +02:00
Intel
18d5e8d78c hash: select default hash by looking at SSE flags
Signed-off-by: Intel
2013-07-25 15:23:27 +02:00
Intel
4cdf471a06 lpm: don't use memzone for allocations
Signed-off-by: Intel
2013-07-25 15:23:26 +02:00
Intel
3fc5ca2f63 kni: initial import
Signed-off-by: Intel
2013-07-25 15:01:57 +02:00
Intel
4b2089fc9b doc: remove all pdf files
The doc location is http://dpdk.org/doc

Signed-off-by: Intel
2013-07-05 11:59:50 +02:00
Intel
dada9ef6ed remove version in all files
Signed-off-by: Intel
2013-07-05 11:59:50 +02:00
Intel
af75078fec first public release
version 1.2.3

Signed-off-by: Intel
2013-03-11 17:19:20 +01:00