aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/odp/odp_packet.h
AgeCommit message (Collapse)AuthorFilesLines
2018-02-21plugins: odp: Cosmetic changes in the IPsec implementationSzymon Sliwa1-1/+1
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: Add support for IPsec inline operationSzymon Sliwa1-0/+1
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 Sliwa1-0/+2
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-05plugins: odp: Add ODP-IPsec nodeSzymon Sliwa1-0/+1
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-01-11plugins: odp: Add support for free list of buffersMichal Mazur1-2/+2
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>
2017-12-27Fix and improve Rx Scheduler modeMichal Mazur1-2/+6
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 Mazur1-3/+30
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 Mazur1-5/+24
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 Mazur1-1/+9
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-14Create worker threads using ODP API (direct in/out mode)Michal Mazur1-0/+5
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 Mazur1-1/+1
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 Mazur1-2/+12
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-11-15Fix style of ODP plugin and add Linaro copyrightsMichal Mazur1-16/+5
Change-Id: I5c86cd0a1150ba2e915ce3413c67c504740356b3 Signed-off-by: Michal Mazur <mkm@semihalf.com>
2017-07-03Introducing ODP plugin nodeSachin Saxena1-0/+74
Change-Id: I364fa14ade5282ec828662894041f9cc784ace7c Signed-off-by: srsurend <srsurend@cisco.com> Signed-off-by: sachin saxena <sachin.saxena@nxp.com>