path: root/examples
AgeCommit message (Collapse)Author
2018-10-12examples/ip_pipeline: configure crypto portFan Zhang
This patch adds symmetric crypto port configuration to ip_pipeline sample application. Signed-off-by: Fan Zhang <> Acked-by: Cristian Dumitrescu <>
2018-10-12examples/ip_pipeline: add cryptodevFan Zhang
This patch adds symmetric crypto device abstraction to ip_pipeline sameple application. Signed-off-by: Fan Zhang <> Acked-by: Cristian Dumitrescu <>
2018-10-12examples/ip_pipeline: use table library headersKevin Laatz
This commit modifies the IP Pipeline application to use the new header files in librte_table. As we are now using the new header files, we can remove the old ones from the application directory. Signed-off-by: Cristian Dumitrescu <> Signed-off-by: Kevin Laatz <> Acked-by: Gavin Hu <> Acked-by: Jerin Jacob <>
2018-10-12examples/ip_pipeline: support VXLAN encapCristian Dumitrescu
Add CLI support for VXLAN encap. Signed-off-by: Cristian Dumitrescu <>
2018-10-11examples/vdpa: introduce a new sample for vDPAXiaolong Ye
The vdpa sample application creates vhost-user sockets by using the vDPA backend. vDPA stands for vhost Data Path Acceleration which utilizes virtio ring compatible devices to serve virtio driver directly to enable datapath acceleration. As vDPA driver can help to set up vhost datapath, this application doesn't need to launch dedicated worker threads for vhost enqueue/dequeue operations. Signed-off-by: Xiaolong Ye <> Acked-by: Xiao Wang <> Reviewed-by: Maxime Coquelin <>
2018-10-11net/i40e: config flow director automaticallyXiaoyun Li
I40e driver needed users to config exact fdir mode to create rte_flow rules but it shouldn't. This patch allows users to create rte_flow rules without configuring fdir mode and let the driver config fdir automatically. And remove the workaround in flow filtering example. Signed-off-by: Xiaoyun Li <> Acked-by: Beilei Xing <>
2018-10-01examples/eventdev_pipeline: support Tx adapterPavan Nikhilesh
Redo the worker pipelines and offload transmission to service cores seamlessly through Tx adapter. Signed-off-by: Pavan Nikhilesh <> Reviewed-by: Nikhil Rao <> Tested-by: Nikhil Rao <>
2018-09-25examples/ipsec-secgw: fix wrong session sizeAnoob Joseph
Crypto devices, which support lookaside protocol, exposes security session size in addition to the crypto private symmetric session data size. For applications using the security capabilities, both these sizes need to be considered. Fixes: ec17993a145a ("examples/ipsec-secgw: support security offload") Cc: Signed-off-by: Anoob Joseph <> Signed-off-by: Archana Muniganti <> Acked-by: Akhil Goyal <>
2018-09-25examples/ipsec-secgw: increase number of dev mappingsAnoob Joseph
Increasing the number of cdev mappings to accommodate usage of crypto devices with larger number of capabilities, with higher number of cores. Required mappings : ([no of ciphers] * [no of auth] + [aead algos]) * [no of cores] Signed-off-by: Ankur Dwivedi <> Signed-off-by: Anoob Joseph <> Acked-by: Akhil Goyal <>
2018-08-30examples/ipsec-secgw: support 3DES-CBCHemant Agrawal
Signed-off-by: Hemant Agrawal <> Acked-by: Akhil Goyal <>
2018-09-14ethdev: make default behavior CRC strip on RxFerruh Yigit
Removed DEV_RX_OFFLOAD_CRC_STRIP offload flag. Without any specific Rx offload flag, default behavior by PMDs is to strip CRC. PMDs that support keeping CRC should advertise DEV_RX_OFFLOAD_KEEP_CRC Rx offload capability. Applications that require keeping CRC should check PMD capability first and if it is supported can enable this feature by setting DEV_RX_OFFLOAD_KEEP_CRC in Rx offload flag in rte_eth_dev_configure() Signed-off-by: Ferruh Yigit <> Acked-by: Tomasz Duszynski <> Acked-by: Shahaf Shuler <> Reviewed-by: Maxime Coquelin <> Acked-by: Jan Remes <> Acked-by: Jerin Jacob <> Acked-by: Hyong Youb Kim <>
2018-09-14examples/vhost_crypto: support multi-coreFan Zhang
Originally vhost_crypto sample application only supports single core. This patch adds the multi-core support with more flexible options. Signed-off-by: Fan Zhang <> Reviewed-by: Maxime Coquelin <>
2018-09-12examples/vhost: remove unnecessary constantRami Rosen
This patch removes an unnecessary definition of MAX_PRINT_BUFF in examples/vhost/main.c, since it is no longer being used. Fixes: 68363d85857d ("examples/vhost: remove the non-working zero copy code") Cc: Signed-off-by: Rami Rosen <> Reviewed-by: Tiwei Bie <>
2018-08-09examples/performance-thread: convert to SPDX tagsPablo de Lara
Convert dual license headers with Intel and Dmitry Vyukov names to SPDX. Signed-off-by: Pablo de Lara <> Acked-by: Dmitry Vyukov <>
2018-08-07examples/ip_pipeline: fix RSSCristian Dumitrescu
After adding RSS hash offload checks, flags that are not supported by the current device result in RSS configuration failing as opposed to unsupported flags being silently discarded. This fix is making sure that only device supported flags are passed to RSS configuration. Fixes: aa1a6d87f15d ("ethdev: force RSS offload rules again") Signed-off-by: Cristian Dumitrescu <> Acked-by: Fan Zhang <> Acked-by: Konstantin Ananyev <> Tested-by: Yuan Peng <>
2018-08-06meter: remove experimental tag from profile APIKevin Traynor
As per guideline that new APIs must be experimental for at least one release, it is now possible to remove the experimental tag from: rte_meter_srtcm_profile_config() rte_meter_trtcm_profile_config() Signed-off-by: Kevin Traynor <> Acked-by: Cristian Dumitrescu <>
2018-08-05examples/flow_filtering: add flow director config for i40eRosen Xu
Rte_fdir_conf of rte_eth_conf should be initialized before port initialization. It is a workaround solution when working with Intel I40e. Fixes: 4a3ef59a10c8 ("examples/flow_filtering: add simple demo of flow API") Cc: Signed-off-by: Rosen Xu <> Acked-by: Ori Kam <> Reviewed-by: Ferruh Yigit <>
2018-08-05examples/multi_process: remove l2fwd fork exampleGage Eads
l2fwd_fork relies on a multiprocess model that DPDK does not support (calling rte_eal_init() before fork()), in particular in light of recent EAL changes like the multiproess communication channel. This example can mislead users into thinking this is a supported multiprocess model; hence, this commit removes this example and the corresponding user guide documentation as well. This patch was made following this mailing list discussion: Signed-off-by: Gage Eads <>
2018-07-26examples/l3fwd: remove useless includeRami Rosen
This patch removes unneeded include of rte_mempool.h in two modules in examples/l3fwd. Fixes: 268888b5b020 ("examples/l3fwd: modularize") Cc: Signed-off-by: Rami Rosen <>
2018-07-26examples/exception_path: fix out-of-bounds readBruce Richardson
When printing out stats from the exception_path app, all possible lcore_ids are iterated. However, the app only supports up to 64 cores. To prevent possible errors, and to remove coverity warnings, explicitly check for out-of-range lcore ids before printing. Coverity issue: 268335 Fixes: af75078fece3 ("first public release") Cc: Signed-off-by: Bruce Richardson <>
2018-07-26examples/ip_pipeline: add example script for RSSCristian Dumitrescu
Add example script to demonstrate Receive Side Scaling (RSS). Signed-off-by: Cristian Dumitrescu <>
2018-07-25examples/ip_pipeline: add help commandKevin Laatz
Add a help to the existing application cli. This will enable users to display the usage help with descriptions within the cli. Signed-off-by: Kevin Laatz <> Acked-by: Cristian Dumitrescu <>
2018-07-26build: remove duplicate checks for cflagsBruce Richardson
There is no need to check for each library, driver and example whether certain cflags are supported. Instead of checking inside the loop, do so outside and reuse the value. Signed-off-by: Bruce Richardson <>
2018-07-25examples/ipsec-secgw: fix bypass rule processingKonstantin Ananyev
For outbound ports BYPASS rule is erroneously treated as PROTECT one with SA idx zero. Fixes: 2a5106af132b ("examples/ipsec-secgw: fix corner case for SPI value") Cc: Signed-off-by: Konstantin Ananyev <> Acked-by: Akhil Goyal <>
2018-07-24examples/l2fwd-crypto: remove duplicated capability checkPablo de Lara
Now that device capabilities are checked separately, before setting the xform parameters, it is not required to do the check again, leaving only the xform setting with the device configuration. Signed-off-by: Pablo de Lara <> Acked-by: Fiona Trahe <>
2018-07-24examples/l2fwd-crypto: fix session mempool sizePablo de Lara
The session mempool size for this application depends on the number of crypto devices that are capable of performing the operation given by the parameters on the app. However, previously this calculation was done before all devices were checked, resulting in an incorrect number of sessions required. Now the calculation of the devices to be used is done first (checking the capabilities of the enabled devices), followed by the creation of the session pool, resulting in a correct number of objects needed for the sessions to be created. Fixes: e3bcb99a5e13 ("examples/l2fwd-crypto: limit number of sessions") Signed-off-by: Pablo de Lara <> Acked-by: Fiona Trahe <>
2018-07-24examples/l2fwd-crypto: separate IV check from xform settingPablo de Lara
IV_param_check() function was checking if the IV size provided was supported by device and setting the IV size in the xform structure. Instead of this, the function should only do the parameter check and outside the IV size on the xform is set. Signed-off-by: Pablo de Lara <> Acked-by: Fiona Trahe <>
2018-07-24examples/l2fwd-crypto: skip device not supporting operationPablo de Lara
When a crypto device does not support an algorithm, it is skipped and not used. However, when it does support it, but not the rest of the parameters (IV, key, AAD sizes...), application stops. Instead, the device should be skipped and the search of a suitable device should continue. Fixes: a061e50a0d97 ("examples/l2fwd-crypto: fix ambiguous input key size") Cc: Signed-off-by: Pablo de Lara <> Acked-by: Fiona Trahe <>
2018-07-24examples/l2fwd-crypto: check return value on IV size checkPablo de Lara
IV size parameter is checked through a function, but its return value was not checked. Fixes: 0fbd75a99fc9 ("cryptodev: move IV parameters to session") Fixes: acf8616901b5 ("cryptodev: add auth IV") Fixes: 2661f4fbe93d ("examples/l2fwd-crypto: add AEAD parameters") Cc: Signed-off-by: Pablo de Lara <> Acked-by: Fiona Trahe <>
2018-07-24examples/l2fwd-crypto: fix digest with AEAD algoPablo de Lara
When performing authentication verification (both for AEAD algorithms, such as AES-GCM, or for authentication algorithms, such as SHA1-HMAC), the digest address is calculated based on the packet size and the algorithm used (substracting digest size and IP header to the packet size). However, for AEAD algorithms, this was not calculated correctly, since the digest size was not being substracted. Bugzilla ID: 44 Fixes: 2661f4fbe93d ("examples/l2fwd-crypto: add AEAD parameters") Cc: Reported-by: Ankur Dwivedi <> Signed-off-by: Pablo de Lara <> Tested-by: Ankur Dwivedi <>
2018-07-24examples/ipsec-secgw: fix IPv4 checksum at TxKonstantin Ananyev
For ESP transport and BYPASS mode the app might generate output packets with invalid IPv4 header checksum. At least such behavior was observed on few Intel NICs. The reason is that the app didn't set ipv4 header checksum to zero before passing it to the HW. Fixes: 906257e965b7 ("examples/ipsec-secgw: support IPv6") Cc: Signed-off-by: Konstantin Ananyev <> Acked-by: Radu Nicolau <>
2018-07-21examples/vm_power: make branch ratio configurableDavid Hunt
For different workloads and poll loops, the theshold may be different for when you want to scale up and down. This patch allows changing of the default branch ratio by using the -b command line argument (or --branch-ratio=) Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-21examples/vm_power: add options to guest appDavid Hunt
Add new command line arguments to the guest app to make testing and validation of the policy usage easier. These arguments are mainly around setting up the power management policy that is sent from the guest vm to to the vm_power_manager in the host New command line parameters: -n or --vm-name sets the name of the vm to be used by the host OS. -b or --busy-hours sets the list of hours that are predicted to be busy -q or --quiet-hours sets the list of hours that are predicted to be quiet -l or --vcpu-list sets the list of vcpus to monitor -p or --port-list sets the list of posts to monitor when using a workload policy. -o or --policy sets the default policy type TIME WORKLOAD TRAFFIC BRANCH_RATIO The format of the hours or list paramers is a comma-separated list of integers, which can take the form of a. x e.g. --vcpu-list=1 b. x,y e.g. --quiet-hours=3,4 c. x-y e.g. --busy-hours=9-12 d. combination of above (e.g. --busy-hours=4,5-7,9) Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add branch ratio policy typeDavid Hunt
Add the capability for the vm_power_manager to receive a policy of type BRANCH_RATIO. This will add any vcpus in the policy to the oob monitoring thread. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add --port-list optionDavid Hunt
add in the long form of -p, which is --port-list Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add thread for oob core monitorDavid Hunt
Change the app to now require three cores, as the third core will be used to run the oob montoring thread. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: allow greater than 64 coresDavid Hunt
To facilitate more info per core, change the global_cpu_mask from a uint64_t to an array. This also removes the limit on 64 cores, allocing the aray at run-time based on the number of cores found in the system. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add oob monitoring functionsDavid Hunt
This patch introduces the out-of-band (oob) core monitoring functions. The functions are similar to the channel manager functions. There are function to add and remove cores from the list of cores being monitored. There is a function to initialise the monitor setup, run the monitor thread, and exit the monitor. The monitor thread runs in it's own lcore, and is separate functionality to the channel monitor which is epoll based. THis thread is timer based. It loops through all monitored cores, calculates the branch ratio, scales up or down the core, then sleeps for an interval (~250 uS). The method it uses to read the branch counters is a pread on the /dev/cpu/x/msr file, so the 'msr' kernel module needs to be loaded. Also, since the msr.h file has been made unavailable in recent kernels, we have #defines for the relevant MSRs included in the code. The makefile has a switch for x86 and non-x86 platforms, and compiles stub function for non-x86 platforms. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add core list parameterDavid Hunt
Add in the '-l' command line parameter (also --core-list) So the user can now pass --corelist=4,6,8-10 and it will expand out to 4,6,8,9,10 using the parse function provided in parse.c (parse_set). This list of cores is then used to enable out-of-band monitoring to scale up and down these cores based on the ratio of branch hits versus branch misses. The ratio will be low when a poll loop is spinning with no packets being received, so the frequency will be scaled down. Also , as part of this change, we introduce a core_info struct which keeps information on each core in the system, and whether we're doing out of band monitoring on them. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-20examples/vm_power: add check for port countDavid Hunt
If we don't pass any ports to the app, we don't need to create any mempools, and we don't need to init any ports. Signed-off-by: David Hunt <> Acked-by: Radu Nicolau <>
2018-07-13examples/ipsec-secgw: use function to access mbuf privateDan Gora
Update get_priv() to use rte_mbuf_to_priv() to access the private area in the mbuf. In inbound_sa_check(), use the application's get_priv() function to access the private area in the mbuf. Signed-off-by: Dan Gora <>
2018-07-12examples/l3fwd-power: add high/regular perf cores optionsRadu Nicolau
Added high/regular performance core pinning configuration options that can be used in place of the existing 'config' option. '--high-perf-cores CORELIST' option allow the user to specify a high performance cores list; if this option is not used and the 'perf-config' option is used, the application will query the system using the rte_power library in order to get a list of available high performance cores. The cores that are considered high performance are the cores that have turbo enabled. '--perf-config (port,queue,hi_perf,lcore_index)' option is similar to the existing config option, the cores are specified as indices for bins containing high or regular performance cores. Example: l3fwd-power -l 6,7 -- -p 0xff \ --high-perf-cores 6 --perf-config="(0,0,0,0),(1,0,1,0)" cores 6 and 7 are used, core 6 is specified as a high performance core. port 0 queue 0 will use a regular performance core, index 0 (core 7) port 1 queue 0 will use a high performance core, index 0 (core 6) Signed-off-by: Radu Nicolau <> Acked-by: David Hunt <>
2018-07-12examples/ip_pipeline: remove commands restrictionJasvinder Singh
Currently, some CLI commands (for examples- add or delete pipeline table entries, add meter profile etc.) fails to execute when application pipeline threads are not running. Therefore, command for enabling pipeline on the thread is required to be executed first or specified in the script file before any of such commands. This patch removes above restriction and adds support for executing all CLI commands regardless of the pipeline thread state. Signed-off-by: Cristian Dumitrescu <> Signed-off-by: Jasvinder Singh <>
2018-07-12examples/ip_pipeline: add link commandKevin Laatz
Add the functionality to track links in the application. This enables the user to print the name, mac address and statistics for each link in the application. Signed-off-by: Kevin Laatz <> Acked-by: Cristian Dumitrescu <>
2018-07-12examples/kni: fix dependency check for meson buildBruce Richardson
Rather than hard-coding the example app to be built only when a set of conditions are met, we can simplify things by having the app built when KNI library itself is available. That saves us duplicating the same set of restrictions on both library and example app. Fixes: 89f0711f9ddf ("examples: build some samples with meson") Signed-off-by: Bruce Richardson <> Acked-by: Hemant Agrawal <> Acked-by: Ferruh Yigit <>
2018-07-12examples: make Linux environment check consistentThomas Monjalon
Some Makefiles are using CONFIG_RTE_EXEC_ENV and others are using CONFIG_RTE_EXEC_ENV_LINUXAPP. Use the latter one for consistency. We could remove CONFIG_RTE_EXEC_ENV later if considered useless. Signed-off-by: Thomas Monjalon <>
2018-07-11build: fix for host clang and cross gccGavin Hu
The following error hits if host cc compiler is clang(default one in most linux distributions) and the cross compiler is gcc. The root cause is: the hybride compilers add the warning options to the meson project as project arguments, which apply for both host compiling and cross compiling. But some options such as '-Wno-format-truncation' are not supported nor recognized by clang, so they have to be removed from the project arguments for the host compiler to run smoothily and added back as cflags for the cross compiler to compile for cross source files. The fix is remove unrecognized warning options from the meson project arguments shared by gcc and clang, as add them specifically for gcc or clang as cflags. [265/893] Compiling C object 'buildtools/pmdinfogen/pmdinfogen@exe/pmdinfogen.c.o'. warning: unknown warning option '-Wno-format-truncation' [-Wunknown-warning-option] Fixes: a55277a788 ("devtools: add test script for meson builds") Cc: Signed-off-by: Gavin Hu <> Reviewed-by: Phil Yang <> Reviewed-by: Song Zhu <> Reviewed-by: Steve Capper <> Acked-by: Bruce Richardson <>
2018-07-11examples/multi_process: build l2fwd_fork appEmma Kenny
l2fwd_fork is not complied by default, this will make it compile Fixes: 95e8005a56e8 ("examples/l2fwd_fork: new app") Signed-off-by: Emma Kenny <> Acked-by: Ferruh Yigit <>
2018-07-11examples/multi_process: fix buildEmma Kenny
Fix bug with undeclared variable name and calling a variable that is not member of struct. CC main.o l2fwd_fork/main.c: In function ‘main’: l2fwd_fork/main.c:1043:33: error: ‘dev_info’ undeclared (first use in this function) rte_eth_dev_info_get(portid, &dev_info); l2fwd_fork/main.c:1043:33: note: each undeclared identifier is reported only once for each function it appears in l2fwd_fork/main.c:1077:11: error: ‘struct rte_eth_txconf’ has no member named ‘tx_offloads’ txq_conf.tx_offloads = local_port_conf.txmode.offloads; Fixes: f8c02ca878af ("examples/multi_process: convert to new ethdev offloads API") Cc: Signed-off-by: Emma Kenny <> Acked-by: Ferruh Yigit <> Acked-by: Shahaf Shuler <>
2018-07-11cryptodev: define value for unlimited sessionsPablo de Lara
Currently, the info structure contains the maximum number of sessions that a device can manage. This field was useful when the session mempool was created inside each device, but now it is created at the application level. Most PMDs do not have a limitation on the sessions managed, but a few do, therefore this field must remain in the structure. However, a new value, 0, can be used to indicate that a device does not have an actual maximum of sessions. Signed-off-by: Pablo de Lara <> Acked-by: Akhil Goyal <>