diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-04-14 01:19:43 +0300 |
---|---|---|
committer | fixeria <vyanitskiy@sysmocom.de> | 2022-08-08 05:43:20 +0000 |
commit | 541b7525aee81fbeed23be9cddf909ebcca6ed6d (patch) | |
tree | 1c91a513b3393278ba1c18787d466bbfbb7a2802 | |
parent | a5a150c7eeb8dfa2a620bce42d10b858313e35d1 (diff) |
osmo-bts-trx: amr_loop: trigger the loop unconditionally
The logic responsible for enabling and disabling the loop appears
to be broken: during my experiments trx_loop_amr_set() was never
called with loop=1. It's not clear what's the motivation behind
this breaker, so I propose to rip it out for now. This patch
finally makes the loop work (confirmed with a TEMS phone).
Change-Id: I09b649973d4269c4082a4fafa493c37825f95a9c
Related: SYS#5917, OS#4984
-rw-r--r-- | include/osmo-bts/scheduler.h | 1 | ||||
-rw-r--r-- | src/osmo-bts-trx/amr_loop.c | 17 | ||||
-rw-r--r-- | src/osmo-bts-trx/sched_lchan_tchf.c | 13 |
3 files changed, 1 insertions, 30 deletions
diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h index ec31eab9..c96b70b4 100644 --- a/include/osmo-bts/scheduler.h +++ b/include/osmo-bts/scheduler.h @@ -119,7 +119,6 @@ struct l1sched_chan_state { uint8_t dl_ft; /* current downlink FT index */ uint8_t ul_cmr; /* current uplink CMR index */ uint8_t dl_cmr; /* current downlink CMR index */ - uint8_t amr_loop; /* if AMR loop is enabled */ uint8_t amr_last_dtx; /* last received dtx frame type */ /* TCH/H */ diff --git a/src/osmo-bts-trx/amr_loop.c b/src/osmo-bts-trx/amr_loop.c index ce89091a..859f39bf 100644 --- a/src/osmo-bts-trx/amr_loop.c +++ b/src/osmo-bts-trx/amr_loop.c @@ -40,10 +40,6 @@ void trx_loop_amr_input(struct l1sched_chan_state *chan_state, const uint8_t mi = chan_state->ul_ft; /* mode index 0..3 */ int lqual_cb = meas_set->ci_cb; /* cB (centibel) */ - /* check if loop is enabled */ - if (!chan_state->amr_loop) - return; - /* count per-block C/I samples for further averaging */ if (lchan->type == GSM_LCHAN_TCH_H) { chan_state->lqual_cb_num += 2; @@ -109,16 +105,3 @@ void trx_loop_amr_input(struct l1sched_chan_state *chan_state, LOGPLCHAN(lchan, DLOOP, LOGL_DEBUG, "Keeping the current AMR codec " "mode[%u]=%u\n", mi, cfg->mode[mi].mode); } - -void trx_loop_amr_set(struct l1sched_chan_state *chan_state, int loop) -{ - if (chan_state->amr_loop == loop) - return; - if (!chan_state->amr_loop) { - /* reset the link quality measurements */ - chan_state->lqual_cb_num = 0; - chan_state->lqual_cb_sum = 0; - } - - chan_state->amr_loop = loop; -} diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c index 6a90327b..b530d25d 100644 --- a/src/osmo-bts-trx/sched_lchan_tchf.c +++ b/src/osmo-bts-trx/sched_lchan_tchf.c @@ -384,7 +384,7 @@ struct msgb *tch_dl_dequeue(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br if (msg_tch) { int len; uint8_t cmr_codec; - int cmr, ft, i; + int ft, i; enum osmo_amr_type ft_codec; enum osmo_amr_quality bfi; int8_t sti, cmi; @@ -416,22 +416,11 @@ struct msgb *tch_dl_dequeue(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br LOGL1SB(DL1P, LOGL_ERROR, l1ts, br, "Cannot send invalid AMR payload\n"); goto free_bad_msg; } - cmr = -1; ft = -1; for (i = 0; i < chan_state->codecs; i++) { - if (chan_state->codec[i] == cmr_codec) - cmr = i; if (chan_state->codec[i] == ft_codec) ft = i; } - if (cmr >= 0) { /* new request */ - chan_state->dl_cmr = cmr; - /* disable AMR loop */ - trx_loop_amr_set(chan_state, 0); - } else { - /* enable AMR loop */ - trx_loop_amr_set(chan_state, 1); - } if (ft < 0) { LOGL1SB(DL1P, LOGL_ERROR, l1ts, br, "Codec (FT = %d) of RTP frame not in list\n", ft_codec); |