[PATCH] osmo-pcu[master]: TBF: make UL ack state internal
Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5863 to look at the new patch set (#3). TBF: make UL ack state internal * add functions/macros for setting TBF's UL ack state * add functions for checking TBF's UL ack state N. B: this should not be confused with TBF-UL state. Change-Id: I144483447d4b0b93e775da0e926ee45eb8ab39f3 Related: OS#1539 --- M src/gprs_rlcmac_sched.cpp M src/tbf.cpp M src/tbf.h M src/tbf_ul.cpp M tests/tbf/TbfTest.cpp 5 files changed, 38 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/63/5863/3 diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp index a87217f..3f9fcb1 100644 --- a/src/gprs_rlcmac_sched.cpp +++ b/src/gprs_rlcmac_sched.cpp @@ -52,7 +52,7 @@ if (ul_tbf->poll_state == GPRS_RLCMAC_POLL_SCHED && ul_tbf->poll_fn == poll_fn) *poll_tbf = ul_tbf; - if (ul_tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) + if (ul_tbf->ul_ack_state_is(GPRS_RLCMAC_UL_ACK_SEND_ACK)) *ul_ack_tbf = ul_tbf; if (ul_tbf->dl_ass_state_is(GPRS_RLCMAC_DL_ASS_SEND_ASS)) *dl_ass_tbf = ul_tbf; diff --git a/src/tbf.cpp b/src/tbf.cpp index 0cb54bc..b99c521 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -60,6 +60,13 @@ { 0, NULL } }; +const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[] = { + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_NONE), + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_SEND_ACK), /* send acknowledge on next RTS */ + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_WAIT_ACK), /* wait for PACKET CONTROL ACK */ + { 0, NULL } +}; + static const struct value_string tbf_timers_names[] = { OSMO_VALUE_STRING(T0), OSMO_VALUE_STRING(T3169), @@ -165,7 +172,6 @@ first_ts(0), first_common_ts(0), control_ts(0xff), - ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), poll_state(GPRS_RLCMAC_POLL_NONE), poll_fn(0), poll_ts(0), @@ -185,6 +191,7 @@ state(GPRS_RLCMAC_NULL), dl_ass_state(GPRS_RLCMAC_DL_ASS_NONE), ul_ass_state(GPRS_RLCMAC_UL_ASS_NONE), + ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), m_list(this), m_ms_list(this), m_egprs_enabled(false) diff --git a/src/tbf.h b/src/tbf.h index 2d51945..2828772 100644 --- a/src/tbf.h +++ b/src/tbf.h @@ -87,6 +87,8 @@ GPRS_RLCMAC_UL_ACK_WAIT_ACK, /* wait for PACKET CONTROL ACK */ }; +extern const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[]; + enum gprs_rlcmac_tbf_direction { GPRS_RLCMAC_DL_TBF, GPRS_RLCMAC_UL_TBF @@ -183,6 +185,7 @@ #define TBF_SET_STATE(t, st) do { t->set_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_DL(t, st) do { t->set_ass_state_dl(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_UL(t, st) do { t->set_ass_state_ul(st, __FILE__, __LINE__); } while(0) +#define TBF_SET_ACK_STATE(t, st) do { t->set_ack_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_ON(t, fl, chk) do { t->set_assigned_on(fl, chk, __FILE__, __LINE__); } while(0) struct gprs_rlcmac_tbf { @@ -195,9 +198,11 @@ bool state_is_not(enum gprs_rlcmac_tbf_state rhs) const; bool dl_ass_state_is(enum gprs_rlcmac_tbf_dl_ass_state rhs) const; bool ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const; + bool ul_ack_state_is(enum gprs_rlcmac_tbf_ul_ack_state rhs) const; void set_state(enum gprs_rlcmac_tbf_state new_state, const char *file, int line); void set_ass_state_dl(enum gprs_rlcmac_tbf_dl_ass_state new_state, const char *file, int line); void set_ass_state_ul(enum gprs_rlcmac_tbf_ul_ass_state new_state, const char *file, int line); + void set_ack_state(enum gprs_rlcmac_tbf_ul_ack_state new_state, const char *file, int line); void check_pending_ass(); bool check_n_clear(uint8_t state_flag); void set_assigned_on(uint8_t state_flag, bool check_ccch, const char *file, int line); @@ -279,8 +284,6 @@ gprs_llc m_llc; - enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; - enum gprs_rlcmac_tbf_poll_state poll_state; uint32_t poll_fn; /* frame number to poll */ uint8_t poll_ts; /* TS to poll */ @@ -343,6 +346,7 @@ enum gprs_rlcmac_tbf_state state; enum gprs_rlcmac_tbf_dl_ass_state dl_ass_state; enum gprs_rlcmac_tbf_ul_ass_state ul_ass_state; + enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; LListHead m_list; LListHead m_ms_list; bool m_egprs_enabled; @@ -383,6 +387,11 @@ inline bool gprs_rlcmac_tbf::ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const { return ul_ass_state == rhs; +} + +inline bool gprs_rlcmac_tbf::ul_ack_state_is(enum gprs_rlcmac_tbf_ul_ack_state rhs) const +{ + return ul_ack_st
[PATCH] osmo-pcu[master]: TBF: make UL ack state internal
Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5863 to look at the new patch set (#2). TBF: make UL ack state internal * add functions/macros for setting TBF's UL ack state * add functions for checking TBF's UL ack state * update TBF test output due to extended state transition logging N. B: this should not be confused with TBF-UL state. Change-Id: I144483447d4b0b93e775da0e926ee45eb8ab39f3 Related: OS#1539 --- M src/gprs_rlcmac_sched.cpp M src/tbf.cpp M src/tbf.h M src/tbf_ul.cpp M tests/tbf/TbfTest.cpp M tests/tbf/TbfTest.err 6 files changed, 49 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/63/5863/2 diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp index a87217f..3f9fcb1 100644 --- a/src/gprs_rlcmac_sched.cpp +++ b/src/gprs_rlcmac_sched.cpp @@ -52,7 +52,7 @@ if (ul_tbf->poll_state == GPRS_RLCMAC_POLL_SCHED && ul_tbf->poll_fn == poll_fn) *poll_tbf = ul_tbf; - if (ul_tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) + if (ul_tbf->ul_ack_state_is(GPRS_RLCMAC_UL_ACK_SEND_ACK)) *ul_ack_tbf = ul_tbf; if (ul_tbf->dl_ass_state_is(GPRS_RLCMAC_DL_ASS_SEND_ASS)) *dl_ass_tbf = ul_tbf; diff --git a/src/tbf.cpp b/src/tbf.cpp index 0cb54bc..b99c521 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -60,6 +60,13 @@ { 0, NULL } }; +const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[] = { + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_NONE), + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_SEND_ACK), /* send acknowledge on next RTS */ + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_WAIT_ACK), /* wait for PACKET CONTROL ACK */ + { 0, NULL } +}; + static const struct value_string tbf_timers_names[] = { OSMO_VALUE_STRING(T0), OSMO_VALUE_STRING(T3169), @@ -165,7 +172,6 @@ first_ts(0), first_common_ts(0), control_ts(0xff), - ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), poll_state(GPRS_RLCMAC_POLL_NONE), poll_fn(0), poll_ts(0), @@ -185,6 +191,7 @@ state(GPRS_RLCMAC_NULL), dl_ass_state(GPRS_RLCMAC_DL_ASS_NONE), ul_ass_state(GPRS_RLCMAC_UL_ASS_NONE), + ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), m_list(this), m_ms_list(this), m_egprs_enabled(false) diff --git a/src/tbf.h b/src/tbf.h index 2d51945..2828772 100644 --- a/src/tbf.h +++ b/src/tbf.h @@ -87,6 +87,8 @@ GPRS_RLCMAC_UL_ACK_WAIT_ACK, /* wait for PACKET CONTROL ACK */ }; +extern const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[]; + enum gprs_rlcmac_tbf_direction { GPRS_RLCMAC_DL_TBF, GPRS_RLCMAC_UL_TBF @@ -183,6 +185,7 @@ #define TBF_SET_STATE(t, st) do { t->set_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_DL(t, st) do { t->set_ass_state_dl(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_UL(t, st) do { t->set_ass_state_ul(st, __FILE__, __LINE__); } while(0) +#define TBF_SET_ACK_STATE(t, st) do { t->set_ack_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_ON(t, fl, chk) do { t->set_assigned_on(fl, chk, __FILE__, __LINE__); } while(0) struct gprs_rlcmac_tbf { @@ -195,9 +198,11 @@ bool state_is_not(enum gprs_rlcmac_tbf_state rhs) const; bool dl_ass_state_is(enum gprs_rlcmac_tbf_dl_ass_state rhs) const; bool ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const; + bool ul_ack_state_is(enum gprs_rlcmac_tbf_ul_ack_state rhs) const; void set_state(enum gprs_rlcmac_tbf_state new_state, const char *file, int line); void set_ass_state_dl(enum gprs_rlcmac_tbf_dl_ass_state new_state, const char *file, int line); void set_ass_state_ul(enum gprs_rlcmac_tbf_ul_ass_state new_state, const char *file, int line); + void set_ack_state(enum gprs_rlcmac_tbf_ul_ack_state new_state, const char *file, int line); void check_pending_ass(); bool check_n_clear(uint8_t state_flag); void set_assigned_on(uint8_t state_flag, bool check_ccch, const char *file, int line); @@ -279,8 +284,6 @@ gprs_llc m_llc; - enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; - enum gprs_rlcmac_tbf_poll_state poll_state; uint32_t poll_fn; /* frame number to poll */ uint8_t poll_ts; /* TS to poll */ @@ -343,6 +346,7 @@ enum gprs_rlcmac_tbf_state state; enum gprs_rlcmac_tbf_dl_ass_state dl_ass_state; enum gprs_rlcmac_tbf_ul_ass_state ul_ass_state; + enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; LListHead m_list; LListHead m_ms_list; bool m_egprs_enabled; @@ -383,6 +387,11 @@ inline bool gprs_rlcmac_tbf::ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const { return ul_ass_state == rhs; +} + +inline bool gprs_rlcmac_tbf:
[PATCH] osmo-pcu[master]: TBF: make UL ack state internal
Review at https://gerrit.osmocom.org/5863 TBF: make UL ack state internal * add functions/macros for setting TBF's UL ack state * add functions for checking TBF's UL ack state * update TBF test output due to extended state transition logging N. B: this should not be confused with TBF-UL state. Change-Id: I144483447d4b0b93e775da0e926ee45eb8ab39f3 Related: OS#1539 --- M src/gprs_rlcmac_sched.cpp M src/tbf.cpp M src/tbf.h M src/tbf_ul.cpp M tests/tbf/TbfTest.cpp M tests/tbf/TbfTest.err 6 files changed, 49 insertions(+), 13 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/63/5863/1 diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp index a87217f..3f9fcb1 100644 --- a/src/gprs_rlcmac_sched.cpp +++ b/src/gprs_rlcmac_sched.cpp @@ -52,7 +52,7 @@ if (ul_tbf->poll_state == GPRS_RLCMAC_POLL_SCHED && ul_tbf->poll_fn == poll_fn) *poll_tbf = ul_tbf; - if (ul_tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) + if (ul_tbf->ul_ack_state_is(GPRS_RLCMAC_UL_ACK_SEND_ACK)) *ul_ack_tbf = ul_tbf; if (ul_tbf->dl_ass_state_is(GPRS_RLCMAC_DL_ASS_SEND_ASS)) *dl_ass_tbf = ul_tbf; diff --git a/src/tbf.cpp b/src/tbf.cpp index 6ebe77e..ef78820 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -60,6 +60,13 @@ { 0, NULL } }; +const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[] = { + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_NONE), + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_SEND_ACK), /* send acknowledge on next RTS */ + OSMO_VALUE_STRING(GPRS_RLCMAC_UL_ACK_WAIT_ACK), /* wait for PACKET CONTROL ACK */ + { 0, NULL } +}; + static const struct value_string tbf_timers_names[] = { OSMO_VALUE_STRING(T0), OSMO_VALUE_STRING(T3169), @@ -165,7 +172,6 @@ first_ts(0), first_common_ts(0), control_ts(0xff), - ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), poll_state(GPRS_RLCMAC_POLL_NONE), poll_fn(0), poll_ts(0), @@ -185,6 +191,7 @@ state(GPRS_RLCMAC_NULL), dl_ass_state(GPRS_RLCMAC_DL_ASS_NONE), ul_ass_state(GPRS_RLCMAC_UL_ASS_NONE), + ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE), m_list(this), m_ms_list(this), m_egprs_enabled(false) diff --git a/src/tbf.h b/src/tbf.h index 7cc0587..19aa41a 100644 --- a/src/tbf.h +++ b/src/tbf.h @@ -87,6 +87,8 @@ GPRS_RLCMAC_UL_ACK_WAIT_ACK, /* wait for PACKET CONTROL ACK */ }; +extern const struct value_string gprs_rlcmac_tbf_ul_ack_state_names[]; + enum gprs_rlcmac_tbf_direction { GPRS_RLCMAC_DL_TBF, GPRS_RLCMAC_UL_TBF @@ -183,6 +185,7 @@ #define TBF_SET_STATE(t, st) do { t->set_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_DL(t, st) do { t->set_ass_state_dl(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_STATE_UL(t, st) do { t->set_ass_state_ul(st, __FILE__, __LINE__); } while(0) +#define TBF_SET_ACK_STATE(t, st) do { t->set_ack_state(st, __FILE__, __LINE__); } while(0) #define TBF_SET_ASS_ON(t, fl, chk) do { t->set_assigned_on(fl, chk, __FILE__, __LINE__); } while(0) struct gprs_rlcmac_tbf { @@ -195,9 +198,11 @@ bool state_is_not(enum gprs_rlcmac_tbf_state rhs) const; bool dl_ass_state_is(enum gprs_rlcmac_tbf_dl_ass_state rhs) const; bool ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const; + bool ul_ack_state_is(enum gprs_rlcmac_tbf_ul_ack_state rhs) const; void set_state(enum gprs_rlcmac_tbf_state new_state, const char *file, int line); void set_ass_state_dl(enum gprs_rlcmac_tbf_dl_ass_state new_state, const char *file, int line); void set_ass_state_ul(enum gprs_rlcmac_tbf_ul_ass_state new_state, const char *file, int line); + void set_ack_state(enum gprs_rlcmac_tbf_ul_ack_state new_state, const char *file, int line); void check_pending_ass(); bool check_n_clear(uint8_t state_flag); void set_assigned_on(uint8_t state_flag, bool check_ccch, const char *file, int line); @@ -279,8 +284,6 @@ gprs_llc m_llc; - enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; - enum gprs_rlcmac_tbf_poll_state poll_state; uint32_t poll_fn; /* frame number to poll */ uint8_t poll_ts; /* TS to poll */ @@ -343,6 +346,7 @@ enum gprs_rlcmac_tbf_state state; enum gprs_rlcmac_tbf_dl_ass_state dl_ass_state; enum gprs_rlcmac_tbf_ul_ass_state ul_ass_state; + enum gprs_rlcmac_tbf_ul_ack_state ul_ack_state; LListHead m_list; LListHead m_ms_list; bool m_egprs_enabled; @@ -383,6 +387,11 @@ inline bool gprs_rlcmac_tbf::ul_ass_state_is(enum gprs_rlcmac_tbf_ul_ass_state rhs) const { return ul_ass_state == rhs; +} + +inline bool gprs_rlcmac_tbf::ul_ack_state_is(enum gprs_rlcmac_tbf_ul_ack_state rhs) const +{ + return ul_ack_state == rhs;