From: Lin Huang <linhu...@ruijie.com.cn> Currently srtcm_policer free packet one by one, if packets are exceed rate limit. This patch change srtcm_policer to free pkts by bulk using rte_pktmbuf_free_bulk().
Signed-off-by: Lin Huang <linhu...@ruijie.com.cn> --- lib/netdev-dpdk.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 8f1361e21..7e3020a7d 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -2542,10 +2542,11 @@ srtcm_policer_run_single_packet(struct rte_meter_srtcm *meter, struct rte_mbuf **pkts, int pkt_cnt, bool should_steal) { - int i = 0; int cnt = 0; + int i = 0, n = 0; struct rte_mbuf *pkt = NULL; uint64_t current_time = rte_rdtsc(); + struct rte_mbuf *batch[NETDEV_MAX_BURST] = {0}; for (i = 0; i < pkt_cnt; i++) { pkt = pkts[i]; @@ -2557,12 +2558,14 @@ srtcm_policer_run_single_packet(struct rte_meter_srtcm *meter, } cnt++; } else { - if (should_steal) { - rte_pktmbuf_free(pkt); - } + batch[n++] = pkt; } } + if (should_steal && n) { + rte_pktmbuf_free_bulk(batch, n); + } + return cnt; } -- 2.39.3 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev