event/sw: fix xstats reset value
authorGage Eads <gage.eads@intel.com>
Tue, 27 Aug 2019 21:34:59 +0000 (16:34 -0500)
committerJerin Jacob <jerinj@marvell.com>
Sat, 5 Oct 2019 13:39:31 +0000 (15:39 +0200)
The sw PMD implements xstats reset by having the xstat get operations
return a value to the statistic's value at the last reset. The value at the
last reset is maintained in the per-xstat reset_value field, but the PMD
was setting reset_value = current - reset_value instead of reset_value =
current.

Fixes: c1ad03df7ad5 ("event/sw: support xstats")
Cc: stable@dpdk.org
Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
drivers/event/sw/sw_evdev_xstats.c

index 7a6caa6..9066490 100644 (file)
@@ -491,7 +491,7 @@ sw_xstats_update(struct sw_evdev *sw, enum rte_event_dev_xstats_mode mode,
                        values[xidx] = val;
 
                if (xs->reset_allowed && reset)
-                       xs->reset_value = val;
+                       xs->reset_value += val;
 
                xidx++;
        }
@@ -544,8 +544,7 @@ sw_xstats_reset_range(struct sw_evdev *sw, uint32_t start, uint32_t num)
                if (!xs->reset_allowed)
                        continue;
 
-               uint64_t val = xs->fn(sw, xs->obj_idx, xs->stat, xs->extra_arg)
-                                       - xs->reset_value;
+               uint64_t val = xs->fn(sw, xs->obj_idx, xs->stat, xs->extra_arg);
                xs->reset_value = val;
        }
 }