[1/2] pdump: use rte_pktmbuf_free bulk

Message ID 20201227033335.85145-2-stephen@networkplumber.org (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series pdump: small enhancements |

Checks

Context Check Description
ci/checkpatch warning coding style issues

Commit Message

Stephen Hemminger Dec. 27, 2020, 3:33 a.m. UTC
  Use rte_pktmbuf_free_bulk instead of loop when freeing
packets.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 app/pdump/main.c             | 8 ++++----
 lib/librte_pdump/rte_pdump.c | 6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)
  

Comments

Morten Brørup Dec. 29, 2020, 5:40 a.m. UTC | #1
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Stephen Hemminger
> Sent: Sunday, December 27, 2020 4:34 AM
> 
> Use rte_pktmbuf_free_bulk instead of loop when freeing
> packets.
> 
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
>  app/pdump/main.c             | 8 ++++----
>  lib/librte_pdump/rte_pdump.c | 6 +++---
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/app/pdump/main.c b/app/pdump/main.c
> index b34bf335317b..f986c7e9d67e 100644
> --- a/app/pdump/main.c
> +++ b/app/pdump/main.c
> @@ -477,10 +477,10 @@ pdump_rxtx(struct rte_ring *ring, uint16_t
> vdev_id, struct pdump_stats *stats)
>  		stats->tx_pkts += nb_in_txd;
> 
>  		if (unlikely(nb_in_txd < nb_in_deq)) {
> -			do {
> -				rte_pktmbuf_free(rxtx_bufs[nb_in_txd]);
> -				stats->freed_pkts++;
> -			} while (++nb_in_txd < nb_in_deq);
> +			unsigned int drops = nb_in_deq - nb_in_txd;
> +
> +			rte_pktmbuf_free_bulk(&rxtx_bufs[nb_in_txd], drops);
> +			stats->freed_pkts += drops;;

One semicolon should be enough.

And shouldn't checkpatch find typos like this?

>  		}
>  	}
>  }
> diff --git a/lib/librte_pdump/rte_pdump.c
> b/lib/librte_pdump/rte_pdump.c
> index b3c8d5ce4384..3c11bd795bc1 100644
> --- a/lib/librte_pdump/rte_pdump.c
> +++ b/lib/librte_pdump/rte_pdump.c
> @@ -93,11 +93,11 @@ pdump_copy(struct rte_mbuf **pkts, uint16_t
> nb_pkts, void *user_params)
> 
>  	ring_enq = rte_ring_enqueue_burst(ring, (void *)dup_bufs, d_pkts,
> NULL);
>  	if (unlikely(ring_enq < d_pkts)) {
> +		unsigned int drops = d_pkts - ring_enq;
> +
>  		PDUMP_LOG(DEBUG,
>  			"only %d of packets enqueued to ring\n", ring_enq);
> -		do {
> -			rte_pktmbuf_free(dup_bufs[ring_enq]);
> -		} while (++ring_enq < d_pkts);
> +		rte_pktmbuf_free_bulk(&dup_bufs[ring_enq], drops);
>  	}
>  }
> 
> --
> 2.29.2
> 

Acked-by: Morten Brørup <mb@smartsharesystems.com>
  

Patch

diff --git a/app/pdump/main.c b/app/pdump/main.c
index b34bf335317b..f986c7e9d67e 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -477,10 +477,10 @@  pdump_rxtx(struct rte_ring *ring, uint16_t vdev_id, struct pdump_stats *stats)
 		stats->tx_pkts += nb_in_txd;
 
 		if (unlikely(nb_in_txd < nb_in_deq)) {
-			do {
-				rte_pktmbuf_free(rxtx_bufs[nb_in_txd]);
-				stats->freed_pkts++;
-			} while (++nb_in_txd < nb_in_deq);
+			unsigned int drops = nb_in_deq - nb_in_txd;
+
+			rte_pktmbuf_free_bulk(&rxtx_bufs[nb_in_txd], drops);
+			stats->freed_pkts += drops;;
 		}
 	}
 }
diff --git a/lib/librte_pdump/rte_pdump.c b/lib/librte_pdump/rte_pdump.c
index b3c8d5ce4384..3c11bd795bc1 100644
--- a/lib/librte_pdump/rte_pdump.c
+++ b/lib/librte_pdump/rte_pdump.c
@@ -93,11 +93,11 @@  pdump_copy(struct rte_mbuf **pkts, uint16_t nb_pkts, void *user_params)
 
 	ring_enq = rte_ring_enqueue_burst(ring, (void *)dup_bufs, d_pkts, NULL);
 	if (unlikely(ring_enq < d_pkts)) {
+		unsigned int drops = d_pkts - ring_enq;
+
 		PDUMP_LOG(DEBUG,
 			"only %d of packets enqueued to ring\n", ring_enq);
-		do {
-			rte_pktmbuf_free(dup_bufs[ring_enq]);
-		} while (++ring_enq < d_pkts);
+		rte_pktmbuf_free_bulk(&dup_bufs[ring_enq], drops);
 	}
 }