This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "The OpenBSC GSM Base Station Controller (+MSC/HLR/SGSN)".
The branch, neels/dyn_stability has been created at 8d2b33d0832be51a24cad82ff0be682a1888ab08 (commit)
- Log ----------------------------------------------------------------- http://cgit.osmocom.org/openbsc/commit/?id=8d2b33d0832be51a24cad82ff0be682a1...
commit 8d2b33d0832be51a24cad82ff0be682a1888ab08 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 17:02:19 2016 +0200
log: rsl notice: tiny tweak for readability
Change-Id: I57c3b7d27d857c96e3fa3dacf7b766bc43100fc3
http://cgit.osmocom.org/openbsc/commit/?id=761413754b50e2f1f0801dad1ca0be6f5...
commit 761413754b50e2f1f0801dad1ca0be6f523062b9 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 16:48:00 2016 +0200
log: improve for rsl_lchan_mark_broken()
In rsl_lchan_mark_broken(), call rsl_lchan_set_state() so the state transition gets logged in the debug log.
Remove logging for the broken channel at the callers, instead log the error actually in rsl_lchan_mark_broken() itself, with the reason message passed by the caller anyway. (Removes code dup and ensures it's always logged.)
Change-Id: I54ae9bbd3f193bae7b1bda1fef3e33e62b353bf5
http://cgit.osmocom.org/openbsc/commit/?id=4af1e8c272e246b17a62294fe1d52c3d3...
commit 4af1e8c272e246b17a62294fe1d52c3d3ccc5684 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 14:48:39 2016 +0200
dyn TS: debug log: if still in use, also log lchan type and state
Change-Id: Ifbf31cde24b2d1022b7a472966c17959c96e6dda
http://cgit.osmocom.org/openbsc/commit/?id=c5f08776f2108b9bb8611faa0d887412e...
commit c5f08776f2108b9bb8611faa0d887412ef290f3a Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 14:42:58 2016 +0200
dyn TS: debug log 'switchover complete' only when there was a switchover
Change-Id: I7ddcb41edce1cd7b22fe91e33bdcaedb21856222
http://cgit.osmocom.org/openbsc/commit/?id=f76bdb2e66e09fd7bd23ab44d25a69372...
commit f76bdb2e66e09fd7bd23ab44d25a69372e7e8d16 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 17:02:37 2016 +0200
dyn TS: fix OS#1798: on late RF CHAN REL ACK, activate PDCH
Tested by hacking a REL ACK delay of a couple of seconds into osmo-bts' rsl.c for the first TCH_H lchan:
[[[ diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h index 093e9cb..b35c3bb 100644 --- a/include/osmo-bts/rsl.h +++ b/include/osmo-bts/rsl.h @@ -22,6 +22,7 @@ int rsl_tx_est_ind(struct gsm_lchan *lchan, uint8_t link_id, uint8_t *data, int int rsl_tx_chan_act_acknack(struct gsm_lchan *lchan, uint8_t cause); int rsl_tx_conn_fail(struct gsm_lchan *lchan, uint8_t cause); int rsl_tx_rf_rel_ack(struct gsm_lchan *lchan); +int rsl_tx_rf_rel_ack_later(struct gsm_lchan *lchan); int rsl_tx_hando_det(struct gsm_lchan *lchan, uint8_t *ho_delay);
/* call-back for LAPDm code, called when it wants to send msgs UP */ diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 3802e25..1f92b0d 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -491,7 +491,16 @@ static int l1sap_info_rel_cnf(struct gsm_bts_trx *trx,
lchan = get_lchan_by_chan_nr(trx, info_act_cnf->chan_nr);
- rsl_tx_rf_rel_ack(lchan); + static int yyy = 0; + + DEBUGP(DRSL, "%s YYYYYYYYYYYYYYYYYYYYY %d %s\n", + gsm_lchan_name(lchan), yyy, gsm_lchant_name(lchan->type)); + + if (lchan->type == GSM_LCHAN_TCH_H && !yyy) { + yyy ++; + rsl_tx_rf_rel_ack_later(lchan); + } else + rsl_tx_rf_rel_ack(lchan);
/* During PDCH DEACT, this marks the deactivation of the PDTCH as * requested by the PCU. Next up, we disconnect the TS completely and diff --git a/src/common/rsl.c b/src/common/rsl.c index 3c97af9..7926f21 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -534,6 +534,22 @@ int rsl_tx_rf_rel_ack(struct gsm_lchan *lchan) return abis_bts_rsl_sendmsg(msg); }
+struct osmo_timer_list yyy_timer; + +static void yyy_timer_cb(void *data) +{ + rsl_tx_rf_rel_ack(data); +} + +int rsl_tx_rf_rel_ack_later(struct gsm_lchan *lchan) +{ + yyy_timer.cb = yyy_timer_cb; + yyy_timer.data = lchan; + osmo_timer_schedule(&yyy_timer, 10, 0); + return 0; +} + + /* 8.4.2 sending CHANnel ACTIVation ACKnowledge */ static int rsl_tx_chan_act_ack(struct gsm_lchan *lchan) { ]]]
Change-Id: I87e07e1d54882f8f3d667fa300c6e3679f5c920d Fixes: OS#1798
http://cgit.osmocom.org/openbsc/commit/?id=888c29032a10888139e3462014cab186e...
commit 888c29032a10888139e3462014cab186eeb8e8d5 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 16:57:31 2016 +0200
dyn TS: fix: properly run an lchan activation timeout
Actually schedule an activation timer for the activation part of a dyn TS switchover. It needs to be restarted because the channel release procedure in the first part of a switchover actually removes the activation timer.
Change-Id: Ibf50d13ba10298464a8b07e34716763161438990
http://cgit.osmocom.org/openbsc/commit/?id=e0d4cceb3cd31dfef2c5e32d589746609...
commit e0d4cceb3cd31dfef2c5e32d5897466094efd92a Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 16:57:31 2016 +0200
dyn TS: clearly use lchan[0], fixing minor confusion
The dyn_ts_switchover_*() functions made the impression that they act on a specific lchan of a timeslot. The assumption that we would remember to use e.g. lchan[1] across a PDCH deactivation is brain damaged to begin with; and factually we always use lchan[0] anyway (the only case for using lchan[1] would be when switching to TCH/H, but the channel allocator will always return lchan[0] for that).
Instead of the brain damaged lchan args, use a ts arg across all dyn_ts_switchover_*() functions, with one exception: The dyn_ts_switchover_complete() actually receives an RSL activation ack message on a specific lchan and needs to evaluate its lchan type. This will always be lchan[0] as it is now, but we should stick with the lchan the message was sent for.
For PDCH, a check to use lchan[0] already existed, when composing the ACT message in rsl_chan_activate_lchan_as_pdch(). Replace with an assertion.
Adjust all callers to pass ts instead of lchan.
In dyn_ts_switchover_start(), there was a dead code check that jumps to switchover_complete() in case the pchan already matches. This never hits, because we only call dyn_ts_switchover_start() when pchans mismatch. So avoid guessing at passing lchan[0] to dyn_ts_switchover_complete() by not calling it at all but logging an error instead.
In rsl_chan_activate_lchan(), we remember some values before going into switchover from PDCH. Explicitly store them in lchan[0], because after a PDCH release we have always and will activate no other than lchan[0].
In dyn_ts_switchover_continue(), move the check for any existing lchan->rqd_ref further above, and more correctly check all lchans that were so far valid on the TS, instead of just one.
This partly prepares for a subsequent commit to fix the act_timer use for dyn TS: with the old lchan arg, we might schedule an activation timer on lchan[1] but receive an ack on lchan[0] (for PDCH), leading to an act_timer expiry.
Change-Id: I3f5d48a9bdaa49a42a1908d4a03744638c59796a
http://cgit.osmocom.org/openbsc/commit/?id=35fe0769dc1c215610b953138053de4e0...
commit 35fe0769dc1c215610b953138053de4e06ade987 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 14:45:44 2016 +0200
dyn TS: fix error recovery: switch to PDCH after lchan error state
Tested by hacking a CHAN ACT ACK delay of a couple of seconds into osmo-bts' rsl.c for the first TCH_H lchan:
[[[ diff --git a/src/common/rsl.c b/src/common/rsl.c index 3c97af9..4bfd27a 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -559,6 +559,22 @@ static int rsl_tx_chan_act_ack(struct gsm_lchan *lchan) return abis_bts_rsl_sendmsg(msg); }
+struct osmo_timer_list xxx_timer; + +static void xxx_timer_cb(void *data) +{ + rsl_tx_chan_act_ack(data); +} + +static int rsl_tx_chan_act_ack_later(struct gsm_lchan *lchan) +{ + xxx_timer.cb = xxx_timer_cb; + xxx_timer.data = lchan; + osmo_timer_schedule(&xxx_timer, 10, 0); + return 0; +} + + /* 8.4.7 sending HANDOver DETection */ int rsl_tx_hando_det(struct gsm_lchan *lchan, uint8_t *ho_delay) { @@ -614,6 +630,18 @@ int rsl_tx_chan_act_acknack(struct gsm_lchan *lchan, uint8_t cause)
if (cause) return rsl_tx_chan_act_nack(lchan, cause); + + static int xxx = 0; + + DEBUGP(DRSL, "%s XXXXXXXXXXXXXXXXXXXXX %d %s\n", + gsm_lchan_name(lchan), xxx, gsm_lchant_name(lchan->type)); + + if (lchan->type == GSM_LCHAN_TCH_H) { + if (!xxx) { + xxx ++; + return rsl_tx_chan_act_ack_later(lchan); + } + } return rsl_tx_chan_act_ack(lchan); }
]]]
Change-Id: Ie82dec9c9fefc476fdf5b5afdad2246b9d6fe304
http://cgit.osmocom.org/openbsc/commit/?id=0d1970fb4e277922f76110c1ba7073fb5...
commit 0d1970fb4e277922f76110c1ba7073fb52dbcce9 Author: Neels Hofmeyr nhofmeyr@sysmocom.de Date: Wed Aug 24 14:44:11 2016 +0200
dyn TS: move check whether to switch to PDCH to separate function
Prepares for an upcoming commit using the same check in error_timeout_cb().
Change-Id: I8abfa964631040f798212cc3e360f67f9e09b7c5
-----------------------------------------------------------------------
hooks/post-receive