diff options
author | Matias Elo <matias.elo@nokia.com> | 2022-06-23 16:02:54 +0300 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2022-06-30 16:53:06 +0300 |
commit | 3f7e35f89ff349d531542d73ba854de9695568f4 (patch) | |
tree | 1d8ffcc8573670792ec788fd4a006103ff5e8a8e | |
parent | 6038d366393a89f75783297d6f5c3e15ee3bd69e (diff) |
linux-dpdk: pktio: optimize packet receive function
Use inlined input_pkts() function. The non-inlined _odp_input_pkts()
function is still used by eventdev.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Tuomas Taipale <tuomas.taipale@nokia.com>
-rw-r--r-- | platform/linux-dpdk/odp_packet_dpdk.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/platform/linux-dpdk/odp_packet_dpdk.c b/platform/linux-dpdk/odp_packet_dpdk.c index e04cf3da7..b0f19ea4f 100644 --- a/platform/linux-dpdk/odp_packet_dpdk.c +++ b/platform/linux-dpdk/odp_packet_dpdk.c @@ -930,7 +930,7 @@ static inline void prefetch_pkt(odp_packet_t pkt) odp_prefetch(&pkt_hdr->p); } -int _odp_input_pkts(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], int num) +static inline int input_pkts(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], int num) { pkt_dpdk_t * const pkt_dpdk = pkt_priv(pktio_entry); uint16_t i; @@ -1018,18 +1018,24 @@ int _odp_input_pkts(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], int nu return num_pkts; } +int _odp_input_pkts(pktio_entry_t *pktio_entry, odp_packet_t pkt_table[], int num) +{ + return input_pkts(pktio_entry, pkt_table, num); +} + static int recv_pkt_dpdk(pktio_entry_t *pktio_entry, int index, odp_packet_t pkt_table[], int num) { pkt_dpdk_t * const pkt_dpdk = pkt_priv(pktio_entry); uint16_t nb_rx; - uint8_t min = pkt_dpdk->min_rx_burst; + const uint16_t port_id = pkt_dpdk->port_id; + const uint8_t min = pkt_dpdk->min_rx_burst; if (!pkt_dpdk->flags.lockless_rx) odp_ticketlock_lock(&pkt_dpdk->rx_lock[index]); if (odp_likely(num >= min)) { - nb_rx = rte_eth_rx_burst(pkt_dpdk->port_id, (uint16_t)index, + nb_rx = rte_eth_rx_burst(port_id, (uint16_t)index, (struct rte_mbuf **)pkt_table, (uint16_t)num); } else { @@ -1038,7 +1044,7 @@ static int recv_pkt_dpdk(pktio_entry_t *pktio_entry, int index, ODP_DBG("PMD requires >%d buffers burst. Current %d, dropped " "%d\n", min, num, min - num); - nb_rx = rte_eth_rx_burst(pkt_dpdk->port_id, (uint16_t)index, + nb_rx = rte_eth_rx_burst(port_id, (uint16_t)index, (struct rte_mbuf **)min_burst, min); for (i = 0; i < nb_rx; i++) { @@ -1055,10 +1061,10 @@ static int recv_pkt_dpdk(pktio_entry_t *pktio_entry, int index, odp_ticketlock_unlock(&pkt_dpdk->rx_lock[index]); /* Packets may also me received through eventdev, so don't add any - * processing here. Instead, perform all processing in _odp_input_pkts() + * processing here. Instead, perform all processing in input_pkts() * which is also called by eventdev. */ if (nb_rx) - return _odp_input_pkts(pktio_entry, pkt_table, nb_rx); + return input_pkts(pktio_entry, pkt_table, nb_rx); return 0; } |