Review at  https://gerrit.osmocom.org/6387

Generate the S_L_INP_TEI_UP signal earlier.

The S_L_INP_TEI_UP signal was generated when the first message from a BTS
arrives on the OML/RSL link, rather than when the OML/RSL link comes up.
Instead, generate this signal when the link is brought up, so we
intitialize state regardless of how a particular BTS behaves.

Tested with osmo-bts-virtual and virtphy/mobile programs.

Change-Id: I3b76ae6b00043e706dddc78209311e00ace85bb7
Related: OS#2719
---
M src/libbsc/bts_ipaccess_nanobts.c
1 file changed, 12 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/6387/1

diff --git a/src/libbsc/bts_ipaccess_nanobts.c 
b/src/libbsc/bts_ipaccess_nanobts.c
index 03bb708..e72e6a5 100644
--- a/src/libbsc/bts_ipaccess_nanobts.c
+++ b/src/libbsc/bts_ipaccess_nanobts.c
@@ -438,6 +438,11 @@
                                                bts->oml_tei, 0);
                rc = clock_gettime(CLOCK_MONOTONIC, &tp);
                bts->uptime = (rc < 0) ? 0 : tp.tv_sec; /* we don't need 
sub-second precision for uptime */
+               if (!(sign_link->trx->bts->ip_access.flags & OML_UP)) {
+                       e1inp_event(sign_link->ts, S_L_INP_TEI_UP,
+                                       sign_link->tei, sign_link->sapi);
+                       sign_link->trx->bts->ip_access.flags |= OML_UP;
+               }
                break;
        case E1INP_SIGN_RSL: {
                struct e1inp_ts *ts;
@@ -458,6 +463,13 @@
                                e1inp_sign_link_create(ts, E1INP_SIGN_RSL,
                                                       trx, trx->rsl_tei, 0);
                trx->rsl_link->ts->sign.delay = 0;
+               if (!(sign_link->trx->bts->ip_access.flags &
+                                       (RSL_UP << sign_link->trx->nr))) {
+                       e1inp_event(sign_link->ts, S_L_INP_TEI_UP,
+                                       sign_link->tei, sign_link->sapi);
+                       sign_link->trx->bts->ip_access.flags |=
+                                       (RSL_UP << sign_link->trx->nr);
+               }
                break;
        }
        default:
@@ -486,25 +498,12 @@
 {
        int ret = 0;
        struct e1inp_sign_link *link = msg->dst;
-       struct e1inp_ts *e1i_ts = link->ts;
 
        switch (link->type) {
        case E1INP_SIGN_RSL:
-               if (!(link->trx->bts->ip_access.flags &
-                                       (RSL_UP << link->trx->nr))) {
-                       e1inp_event(e1i_ts, S_L_INP_TEI_UP,
-                                       link->tei, link->sapi);
-                       link->trx->bts->ip_access.flags |=
-                                       (RSL_UP << link->trx->nr);
-               }
                ret = abis_rsl_rcvmsg(msg);
                break;
        case E1INP_SIGN_OML:
-               if (!(link->trx->bts->ip_access.flags & OML_UP)) {
-                       e1inp_event(e1i_ts, S_L_INP_TEI_UP,
-                                       link->tei, link->sapi);
-                       link->trx->bts->ip_access.flags |= OML_UP;
-               }
                ret = abis_nm_rcvmsg(msg);
                break;
        default:

-- 
To view, visit https://gerrit.osmocom.org/6387
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b76ae6b00043e706dddc78209311e00ace85bb7
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Stefan Sperling <ssperl...@sysmocom.de>

Reply via email to