diff options
author | Florin Coras <fcoras@cisco.com> | 2019-04-26 20:34:49 -0700 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2019-04-27 20:05:06 +0000 |
commit | de146e5d5f7e919b423feeff3159c4ecd564c353 (patch) | |
tree | 4e748c7f352e69623cda6935686067764f583a0f /src/svm/svm_fifo.h | |
parent | fdea5c6a00b74971dbb1b7ec4e25839a871006ca (diff) |
svm: fix fifo tail/head/ooo logic for u32 wrap
These were introduced with the switch to unbound tail/head size, so they
only affect master. Added unit tests to avoid future surprises.
Change-Id: I83b6c9efbe31d8092ba59b8e2ed46f4da97f35db
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/svm/svm_fifo.h')
-rw-r--r-- | src/svm/svm_fifo.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/svm/svm_fifo.h b/src/svm/svm_fifo.h index 7c84fc82198..c9370955dfb 100644 --- a/src/svm/svm_fifo.h +++ b/src/svm/svm_fifo.h @@ -527,13 +527,13 @@ svm_fifo_newest_ooo_segment_reset (svm_fifo_t * f) always_inline u32 ooo_segment_distance_from_tail (svm_fifo_t * f, u32 pos, u32 tail) { - return ((pos - tail) % f->size); + return ((f->size + pos - tail) % f->size); } always_inline u32 ooo_segment_distance_to_tail (svm_fifo_t * f, u32 pos, u32 tail) { - return ((tail - pos) % f->size); + return ((f->size + tail - pos) % f->size); } always_inline u32 |