From 566de3dd20df4a4d7d68091e934f59a8849e678c Mon Sep 17 00:00:00 2001 From: Szymon Sliwa Date: Wed, 31 Jan 2018 14:51:23 +0100 Subject: [PATCH 3/4] [HACK] enable inline in dpdk pktio Added simple lines which enable IPsec inline mode on RX using dpdk pktio. The changes are not intended to be pushed to main odp repository - these are only minimal changes to make use of the functionality. Signed-off-by: Szymon Sliwa --- platform/linux-generic/pktio/dpdk.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 54fd0bd..ce835d8 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -1285,6 +1286,8 @@ static void dpdk_init_capability(pktio_entry_t *pktio_entry, capa->config.pktout.bit.udp_chksum; capa->config.pktout.bit.tcp_chksum_ena = capa->config.pktout.bit.tcp_chksum; + capa->config.inbound_ipsec = 1; + capa->config.outbound_ipsec = 1; } static int dpdk_open(odp_pktio_t id ODP_UNUSED, @@ -1566,6 +1569,19 @@ static int dpdk_recv(pktio_entry_t *pktio_entry, int index, else nb_rx = mbuf_to_pkt(pktio_entry, pkt_table, rx_mbufs, nb_rx, ts); + + /* Try IPsec inline processing */ + for (i = 0; i < nb_rx; i++) { + odp_packet_t pkt = pkt_table[i]; + odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt); + + packet_parse_layer(pkt_hdr, ODP_PROTO_LAYER_L4); + + if(odp_packet_has_ipsec(pkt_table[i])) + _odp_ipsec_try_inline(pkt_table[i]); + + } + } return nb_rx; -- 2.7.4