AgeCommit message (Collapse)AuthorFilesLines
2018-02-26odp: Update readme file and include odp patches1707Michal Mazur9-8/+588
Restore odp-linux section in readme file as it can now be build with minor modification. Required patches are included in odp directory. Slightly improve other sections. Change-Id: I2e7f8bc7802627bc15b07b81ddf2e9b4f72f5d41 Signed-off-by: Michal Mazur <mkm@semihalf.com> Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-22plugins: odp: [WA] Force inline mode of ODP timerMichal Mazur1-1/+5
This is a workaround for following VPP error: "Program terminated with signal SIGUSR1, User defined signal 1." It changes mode of timers used by ODP schedule mode. By default inline_timers is false and timer_res_init (odp_timer.c) is called to adjust timer resolution. This function uses SIGUSR1 during the process which collides with VPP as it uses the same signal for communication with clients. This patch causes inline_timers to be set and disables adjustment of timer resolution. Change-Id: Ic2225ba736f506a86832519f9c4154cee9c06056 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-02-22plugins: odp: delete aad field initializationSzymon Sliwa2-4/+0
Due to some bugs in the old odp-dpdk aad field needed to be manually initialized to 0. That is no longer true, what's more odp does not contain this field, thus making it impossible to compile. Due to above mentioned reasons, delete this. Change-Id: I5ec9278d44e49991fad741a43100da4b64823bf3 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-21plugins: odp: Add error checks in IPsec nodesSzymon Sliwa3-23/+70
Change-Id: I62cba4a845c91b208420f3f6b20781d75976c113 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-21odp: Add information about the new ipsec nodes to README.vppodpSzymon Sliwa1-1/+43
Change-Id: I7a9a436d00d04e68c36284de0897e62b838f8506 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-21plugins: odp: ipsec: fix style of crypto_inpuc.cSzymon Sliwa1-58/+73
Change-Id: I89cdac40c9f768f42443406cebf7257c3e139b47 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-21plugins: odp: Cosmetic changes in the IPsec implementationSzymon Sliwa7-48/+55
1) renamed ipsec_api to enable_odp_ipsec, for consistency 2) added crude ASSERTs to make sure the configuration is sane 3) removed passing ipsec_api as argument, as this is a global flag now 4) reorder code - put ipsec initialization before putting workers in polling mode 5) remove not used recycle vector from esp_encrypt.c/esp_decrypt.c 6) change clib_error_return to clib_error in ipsec.c, as clib_error_return silently passes when 0 is the first argument Change-Id: Id2c6da985e872f12c8409918fb9cc6113b486d10 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: rename functions and change trace contentSzymon Sliwa4-42/+48
Change-Id: I1f71fae3af5e36b710c8c978d8b9b74ea802e012 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: remove copying the ip header twiceSzymon Sliwa1-28/+6
Change-Id: Ib32d9df19bb9b0db1b3a0d30d991f1a1f11d66c7 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: Add support for IPsec inline operationSzymon Sliwa6-36/+109
To use inline mode put inline flag in the odp section of the startup.conf file, like this: odp { enable-odp-ipsec inline } Falls back to lookaside mode. Change-Id: I1292a7254b25a15b25285773a43bae112394827d Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: Add asynchronous IPsec API nodesSzymon Sliwa7-87/+374
To use asynchronous mode put async in the odp section of the startup.conf file, like this: odp { enable-odp-ipsec async } Falls back to synchronous mode. Change-Id: Iacfdc03158228f4385511e6736fb24a97284320c Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: Add new nodes using ODP IPsec APISzymon Sliwa7-12/+675
Created two new nodes for encryption/decryption, based on user preferences we can use them to accellerate IPsec by offloading it to hardware or optimized software implementations To use the new nodes two flags are needed in the odp section of the startup.conf file, like this: To use the new nodes put the enable-odp-ipsec flag to startup.conf file, like this: odp { enable-odp-ipsec } Change-Id: Ib4bbc481efad7e90d63994580b57849b74400947 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: ipsec: Fix multiple issuesSzymon Sliwa2-12/+15
1) added casts on assignment to post_crypto.next_index as the type of the field changed 2) removed checking result when crypto operation is asynchronous as it make no sense 3) fixed bug which could cause issues when some of the operations are done synchronously and some asynchronously Change-Id: I123d70402c0210b11dfc2d0fff2c72aa100ce838 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19Fixes to changes in vnet/buffer.hSzymon Sliwa1-3/+4
Change ethertype from double u8 to u16 for consistency, and next_index to u8, for consistency with next_index defined int the ipsec field of this union. Change-Id: I9315bbdd95e23290b37da53267b94a5ddacc85d7 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: ipsec: add error checkSzymon Sliwa1-5/+18
Add a check if crypto operation was successful Change-Id: Iaa7c4df89aab309a4c85300240d245b4cdb30533 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: ipsec: style changesSzymon Sliwa2-60/+78
1) add footer to check style 2) fix style 3) change the TODO note to a more descriptive one Change-Id: I232c937c13bc0d5f206ebb4426b50bebc512a192 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-19plugins: odp: ipsec: Del GRE as it was not testedSzymon Sliwa1-8/+1
In case of trying to add GRE to the IPsec implementation, be careful as the post_crypto and ipsec fields of the vnet_buffer union overlap, and both are needed for the ODP based ipsec with GRE. Change-Id: If20fa9d78f2879264c02922f21bc204fba1ab616 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-06plugins: odp: Refactor the authentication function mappingSzymon Sliwa1-16/+17
Change-Id: Ib0c3e2ceebb3b3929f3f0b96b8a40d07c896d70f Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-06plugins: odp: Add support for IPv6 IPsecSzymon Sliwa2-69/+65
Change-Id: I229128ccd88c1cf608e20507ca26752b9c0495f5 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-06plugins: odp: Add support for async crypto modeSzymon Sliwa7-21/+391
By default ipsec picks asynchronuous crypto. After the operation it may turn out that the operation was performed synchronously anyways, in such case the packet is send further by the esp_* node because there will be no notification event sent about the crypto completion. To use asynchronous mode put async in the odp section of the startup.conf file, like this: odp { async } Falls back to synchronous mode. Change-Id: I5301df5f1c93a5ccd53a9c0ed2c4cacb9ca5fdd4 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-06Add a member to vnet_buffer union for odp based cryptoSzymon Sliwa1-1/+11
Change-Id: Ib865a59c1124a50f0bd7c6e597f45190c26fa5f9 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-05plugins: odp: Add tunnel modeSzymon Sliwa2-14/+26
Change-Id: I8be5f8aa63da8fdf4b2043ba9cd048f2269e4e99 Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-05plugins: odp: Remove copying from the esp_{encrypt, decrypt}Szymon Sliwa2-195/+189
Change-Id: I5d71505e221e837c7569963fda674e970e5ee31d Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-05plugins: odp: Add ODP-IPsec nodeSzymon Sliwa9-7/+1550
Based heavily on the src/vnet/ipsec. Reuses the pure software VPP IPsec implementation CLI command. To use enable-odp-crypto needs to be present in the odp section of startup configuration, like this: odp { enable-odp-crypto } Currenlty only IPv4 is supported, and only in transport mode. Authentication headers are not supported, this limitation is inherited from VPP. Supported crypto algorithms are aes-cbc-128 for encryption, and sha-512-256, sha-256-128, sha1-96 for authentication Change-Id: I08c66f96a73d8cb4ef1095f181ddf47506abc39a Signed-off-by: Szymon Sliwa <szs@semihalf.com>
2018-02-01plugins: odp: Fix minor bugsMichal Mazur2-5/+8
1) Remove function vlib_buffer_set_known_state because it is not multi-thread safe. 2) Stop all worker threads before deleting interfaces. 3) Fix style of odp_packet_exit function. 4) Fix infinite loop in odp_config. Change-Id: I4463b4e416e440ac326ddaac8e46a95d17b202d2 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-29plugins: odp: Fix deletion of IF with more Rx queuesMichal Mazur1-1/+3
Change-Id: I5abeddbc20da4528e811537d071de96a2800e016 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-17plugins: odp: Get address range from pool infoMichal Mazur1-3/+6
Adjust ODP plugin for Caterpillar release. Address range of packet pool can be obtained using odp_pool_info API. Change-Id: I0b0175cce4d9e44ca27709d1dbca560a4a72b5a1 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-17plugins: odp: Add support for buffer recyclingMichal Mazur2-13/+54
Buffers with VLIB_BUFFER_RECYCLE flag set should not be freed. They are replicated on send and sent back to vlib for processing. Change-Id: If381884fa7c898253f35dc3a39feeb4eb1529286 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-11plugins: odp: Add support for free list of buffersMichal Mazur2-36/+275
Free lists are required by some VPP nodes e.g. IPv6. Update copyrigths as lots of code were imported from src/vlib/buffer.c Change-Id: Ie4c56d3a3104624fe77a04069fe3ba1281d3f0cb Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-11plugins: odp: Fix error when all interfaces removedMichal Mazur1-7/+20
Packet pool cannot be destroyed when last interface is deleted because it will not be reallocated on creation of a new interface. Change-Id: Iec7b03b4413fc6602a7a1493ffd706f4c4dd1309 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-08odp: Update readme fileMichal Mazur1-28/+4
Remove odp-linux from supported implementations. Change-Id: Ie83ab7314bcbd359bb3071743b9eb2b8d3df6a5e Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-08plugins: odp: Remove 'platform-params' optionMichal Mazur3-40/+3
ODP platform can now be configured using environment variable ODP_PLATFORM_PARAMS. Remove the option from startup config file. Change-Id: I9d550dabd32c691a031bb88d5453c8146d5fbce8 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2018-01-08Preserve environment variables when starting VPPMichal Mazur1-2/+2
Environment variables may contain configuration for platform drivers. They were lost when starting VPP using 'make run/debug' commands. Change-Id: I47d71b1d47a33cb8386f106bac215208e7030b1d Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-27Fix and improve Rx Scheduler modeMichal Mazur5-43/+78
Fix support of atomic mode and add two new modes: parallel and ordered. Three modes of synchronization between threads are supported now: - parallel - no synchronization between events - ordered - relative sequence of events is restored in output queues - atomic - only a single thread may process events from a single queue Change-Id: I9399aa601f0927042ac0f7f1e5f265f4d47724b8 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-18More optimizations for Tx and Rx loopsMichal Mazur5-167/+195
1) Parse multiple output packets in loop. 2) Remove checking for error flags, they are never set because ODP parser is disabled. 3) Do not call vlib_buffer_advance if not necessary. 4) Remove lock in TX path. Queues are synchronized by ODP. 5) Optimize detection of packet type. 6) Create a wrapper for call to odp_packet_user_area. Change-Id: Ib50c9be9a62d67824b58ef2cd443b7fc59471655 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-14Read ODP configuration from VPP startup configMichal Mazur7-83/+352
1) Allow to setup size of allocated memory, number of packets in the pool, number of packets in transmit burst and delay in scheduler mode from VPP startup file. More details are in template: src/vpp/conf/startup.conf 2) Separate Rx mode from Tx mode. Traffic Manager is not supported. 3) Devices defined in VPP startup are automatically created at start. Change-Id: I1f8a3c2900f56cb23ce6997d311cfe55e1c2078c Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-14Add support for multiple Rx and Tx queuesMichal Mazur6-70/+152
1) Incoming packets can be spread across multiple worker threads based on IP and TCP/UDP headers. 2) Multiple output queues are used in Burst mode if supported by hardware (checked in interface capabilities) 3) Synchronization of output traffic can be disabled due to multiple Tx queues - one for each thread. Change-Id: Ib5ee18103c860eae3b56ffc453a5953c729bb521 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-14Optimize Rx and Tx pathsMichal Mazur3-43/+199
1) Handle multiple ODP packets at once in receive loop 2) Wait to collect as many RX buffers as possible in single vector 3) Add prefetch of received and transmitted buffers 4) Disable parser, classifier and synchronization of RX queues Synchronization of Tx queues can also be disabled if 2 ports used. Change-Id: I65ed49ef2b60278022712e10a83f6ca24360694e Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-14Create worker threads using ODP API (direct in/out mode)Michal Mazur6-56/+106
This patch allows VPP to run multiple worker threads compatible with ODP. By default a single thread is assigned to each interface but this can be changed using "set interface rx-placement" command. Only Direct input/output mode without RSS is supported. Change-Id: Ia6af7e5af4950159eb28b7d56bc9c8d34b80f8d4 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-14Move odp_packet_main structure to shared memory.Michal Mazur5-18/+32
This structure contains data shared among multiple threads and must be globally accessible. Change-Id: Ibde8222e9ed3f61561f7902750a1716da5c0bd81 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-12-07Add initial support for ODP buffers.Michal Mazur6-155/+290
Based on patch from Sreejith Surendran Nair. Change-Id: I32ff73871ce0439378a7e3f0f9a93ac169e770cb Signed-off-by: Michal Mazur <mkm@semihalf.com> Signed-off-by: Sreejith Surendran Nair <srsurend@cisco.com> Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
2017-12-05vlib: Add pointer to driver data to vlib_buffer_tMichal Mazur1-1/+2
Change-Id: I97617d84eb5ba6403bc2d8f87d8c76a086413094 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-11-15Fix style of ODP plugin and add Linaro copyrightsMichal Mazur5-303/+249
Change-Id: I5c86cd0a1150ba2e915ce3413c67c504740356b3 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-07-05Merge "Introducing ODP plugin node" into 1707Sachin Saxena11-1/+1417
2017-07-03Introducing ODP plugin nodeSachin Saxena12-2/+1418
Change-Id: I364fa14ade5282ec828662894041f9cc784ace7c Signed-off-by: srsurend <srsurend@cisco.com> Signed-off-by: sachin saxena <sachin.saxena@nxp.com>
2017-06-15Updating .gitreview for current repo.odp_vppSachin Saxena1-1/+1
Change-Id: I48adc6605d97821eb3f02f10a0afa4a7ab7a8a59 Signed-off-by: Sachin Saxena <sachin.saxena@nxp.com>
2017-06-14acl-plugin: shrink the L2 classifier tables used for traffic redirectAndrew Yourtchenko1-17/+17
The previous iteration of the code used the L2 classifier tables for session storage, as a result, the table allocations were pretty big. The new ACL plugin datapath uses the tables just as a redirection mechanism, without adding any entries. Thus, the tables can be much smaller. Change-Id: Ieec4a5abf0abda6e513ab4e675f912f14d47e671 Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2017-06-14VPP-874: fix coverity warnings in tw_timer_template.cDave Barach1-4/+4
Best guess, tested carefully, should do no harm. Clang doesn't complain either way; it's not certain that this patch will make the coverity warnings in tw_timer_template.c disappear. Change-Id: I75aa0cfd8970751e823a1165df2a755e947c4cf9 Signed-off-by: Dave Barach <dave@barachs.net>
2017-06-14ETH:fix l2_len/vlan count mismatch for > 2 tagsEyal Bari3-16/+7
l2_len was not updated for the third tag as the ethernet node retracts by the vlan count after parse_header (using ethernet_buffer_header_size) it ends up pointing before the ethernet header + some minor cleanups Change-Id: I4ccaedd33928912e5d837376f146503b27071741 Signed-off-by: Eyal Bari <ebari@cisco.com>
2017-06-13Flowprobe - tests speed-upPavel Kotucek1-183/+151
Updated test to reduce tests runtime. Change-Id: I7904628fc19d349d6c26502e49d4c990cb8816ff Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>