aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2018-03-02 15:02:57 +0100
committerHarald Welte <laforge@gnumonks.org>2018-03-02 14:15:23 +0000
commit383a059a123b1e0e5aab76423db47846e329f095 (patch)
tree0aad8f2296dc3c86624bbc514592f08d82c99c2d
parent3d5818a90190081bb1f7e0f56b9ba7cbcf6bd2d9 (diff)
Revert "Generate the S_L_INP_TEI_UP signal earlier."
This reverts commit faf0982ae20001519cf20c5d6345dad490a135f2, as it introduces a severe regression: No more BCCH FILL / SACCH INFO are sent upon RSL establishment to the BTS. See OS#2719 for more details Change-Id: I8a4f3be9928bc3a0b61f23dc3e41200105204651 Related: OS#2719
-rw-r--r--src/libbsc/bts_ipaccess_nanobts.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c
index 99e178d..cf85961 100644
--- a/src/libbsc/bts_ipaccess_nanobts.c
+++ b/src/libbsc/bts_ipaccess_nanobts.c
@@ -438,11 +438,6 @@ ipaccess_sign_link_up(void *unit_data, struct e1inp_line *line,
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;
@@ -463,13 +458,6 @@ ipaccess_sign_link_up(void *unit_data, struct e1inp_line *line,
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:
@@ -502,12 +490,25 @@ static int ipaccess_sign_link(struct msgb *msg)
{
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: