aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2022-06-23 16:02:54 +0300
committerMatias Elo <matias.elo@nokia.com>2022-06-30 16:53:06 +0300
commit3f7e35f89ff349d531542d73ba854de9695568f4 (patch)
tree1d8ffcc8573670792ec788fd4a006103ff5e8a8e
parent6038d366393a89f75783297d6f5c3e15ee3bd69e (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.c18
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;
}