fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bts/+/27777 )


Change subject: osmo-bts-trx: amr_loop: trigger the loop unconditionally
......................................................................

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
---
M include/osmo-bts/scheduler.h
M src/osmo-bts-trx/amr_loop.c
M src/osmo-bts-trx/sched_lchan_tchf.c
3 files changed, 1 insertion(+), 30 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/77/27777/1

diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h
index eab904c..cdfb17f 100644
--- a/include/osmo-bts/scheduler.h
+++ b/include/osmo-bts/scheduler.h
@@ -120,7 +120,6 @@
        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 1771d7a..6194beb 100644
--- a/src/osmo-bts-trx/amr_loop.c
+++ b/src/osmo-bts-trx/amr_loop.c
@@ -40,10 +40,6 @@
        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;
-
        /* wait for MS to use the requested codec */
        if (mi != chan_state->dl_cmr)
                return;
@@ -109,16 +105,3 @@
        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 fb19dd2..24a8d6d 100644
--- a/src/osmo-bts-trx/sched_lchan_tchf.c
+++ b/src/osmo-bts-trx/sched_lchan_tchf.c
@@ -424,7 +424,7 @@
        if (!msg_facch && 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;
@@ -456,22 +456,11 @@
                                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);

--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/27777
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I09b649973d4269c4082a4fafa493c37825f95a9c
Gerrit-Change-Number: 27777
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <[email protected]>
Gerrit-MessageType: newchange

Reply via email to