Everytime the rte_sched_port_update_subport_stats_on_drop or
rte_sched_port_update_queue_stats_on_drop functions are called the
n_pkts_dropped counter is incremented.

The n_pkts_red_dropped counter is only incremented when the function
argument red is non-zero.

Packets that are RED-dropped are not Tail-dropped, so the n_pkts_dropped
counter should not be incremented when the n_pkts_red_dropped counter is.

Signed-off-by: Alan Dewar <alan.de...@att.com>
---
 lib/librte_sched/rte_sched.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index b7cba11..c10c266 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -1108,7 +1108,7 @@ rte_sched_port_update_subport_stats_on_drop(struct 
rte_sched_port *port,
        uint32_t tc_index = (qindex >> 2) & 0x3;
        uint32_t pkt_len = pkt->pkt_len;
 
-       s->stats.n_pkts_tc_dropped[tc_index] += 1;
+       s->stats.n_pkts_tc_dropped[tc_index] += !red;
        s->stats.n_bytes_tc_dropped[tc_index] += pkt_len;
 #ifdef RTE_SCHED_RED
        s->stats.n_pkts_red_dropped[tc_index] += red;
@@ -1140,7 +1140,7 @@ rte_sched_port_update_queue_stats_on_drop(struct 
rte_sched_port *port,
        struct rte_sched_queue_extra *qe = port->queue_extra + qindex;
        uint32_t pkt_len = pkt->pkt_len;
 
-       qe->stats.n_pkts_dropped += 1;
+       qe->stats.n_pkts_dropped += !red;
        qe->stats.n_bytes_dropped += pkt_len;
 #ifdef RTE_SCHED_RED
        qe->stats.n_pkts_red_dropped += red;
-- 
2.1.4

Reply via email to