laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-e1d/+/27848 )
Change subject: octoi: Fix frame_rifo_depth() function ...................................................................... octoi: Fix frame_rifo_depth() function We use the 'correct' math in frame_rifo_depth now so the count is accurate down to zero. We need to fixup the logic that drags the 'write pointer' (last_in_fn) along when reading from an empty FIFO. We also need proper init (which was missing alltogether beforehand). Change-Id: I088f181e74358eb2c96a7aab7a7c875b9276d980 Signed-off-by: Sylvain Munaut <[email protected]> --- M src/octoi/frame_rifo.c M src/octoi/frame_rifo.h 2 files changed, 6 insertions(+), 4 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/src/octoi/frame_rifo.c b/src/octoi/frame_rifo.c index 94758e9..876f023 100644 --- a/src/octoi/frame_rifo.c +++ b/src/octoi/frame_rifo.c @@ -97,6 +97,7 @@ memset(rifo->buf, 0xff, sizeof(rifo->buf)); rifo->next_out = rifo->buf; rifo->next_out_fn = 0; + rifo->last_in_fn = -1; memset(rifo->bitvec, 0, sizeof(rifo->bitvec)); } @@ -151,10 +152,11 @@ if (rifo->next_out >= RIFO_BUF_END(rifo)) rifo->next_out -= sizeof(rifo->buf); + /* if we're empty we 'drag' last_in along to avoid overflows */ + if (frame_rifo_depth(rifo) == 0) + rifo->last_in_fn += 1; + rifo->next_out_fn += 1; - /* make sure that frame_rifo_depth() doing last_in - next_out won't overflow */ - if (rifo->next_out_fn == rifo->last_in_fn + 1) - rifo->last_in_fn = rifo->next_out_fn; return rc; } diff --git a/src/octoi/frame_rifo.h b/src/octoi/frame_rifo.h index 401e873..ac97506 100644 --- a/src/octoi/frame_rifo.h +++ b/src/octoi/frame_rifo.h @@ -24,7 +24,7 @@ /* current depth of RIFO */ static inline unsigned int frame_rifo_depth(struct frame_rifo *rifo) { - return rifo->last_in_fn - rifo->next_out_fn; + return rifo->last_in_fn - rifo->next_out_fn + 1; } void frame_rifo_init(struct frame_rifo *rifo); -- To view, visit https://gerrit.osmocom.org/c/osmo-e1d/+/27848 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-e1d Gerrit-Branch: master Gerrit-Change-Id: I088f181e74358eb2c96a7aab7a7c875b9276d980 Gerrit-Change-Number: 27848 Gerrit-PatchSet: 3 Gerrit-Owner: laforge <[email protected]> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <[email protected]> Gerrit-Reviewer: manawyrm <[email protected]> Gerrit-Reviewer: roox <[email protected]> Gerrit-Reviewer: tnt <[email protected]> Gerrit-MessageType: merged
