This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Neels Hofmeyr gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/8035 cosmetic: dyn TS: clarify rsl_tx_rf_rel_ack() with a switch Use a switch statement and ample comments to clarify what is done and why. Cosmetically prepares for Ic06c8f0fe82ae8a06afa5defd93a685010687965. Related: OS#3235 Change-Id: I8a9953b011a4516972aae468754494f57ebc0a3f --- M src/common/rsl.c 1 file changed, 41 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/35/8035/1 diff --git a/src/common/rsl.c b/src/common/rsl.c index 9adb89a..d46a5f5 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -618,16 +618,48 @@ { struct msgb *msg; uint8_t chan_nr = gsm_lchan2chan_nr(lchan); + bool send_rel_ack; - /* - * Normally, PDCH deactivation via PCU does not ack back to the BSC. - * But for GSM_PCHAN_TCH_F_TCH_H_PDCH, send a non-standard rel ack for - * LCHAN_REL_ACT_PCU, since the rel req came from RSL initially. - */ - if (lchan->rel_act_kind != LCHAN_REL_ACT_RSL - && !(lchan->ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH - && lchan->ts->dyn.pchan_is == GSM_PCHAN_PDCH - && lchan->rel_act_kind == LCHAN_REL_ACT_PCU)) { + switch (lchan->rel_act_kind) { + case LCHAN_REL_ACT_RSL: + send_rel_ack = true; + break; + + case LCHAN_REL_ACT_PCU: + switch (lchan->ts->pchan) { + case GSM_PCHAN_TCH_F_TCH_H_PDCH: + if (lchan->ts->dyn.pchan_is != GSM_PCHAN_PDCH) { + LOGP(DRSL, LOGL_ERROR, + "%s (ss=%d) PDCH release: not in PDCH mode\n", + gsm_ts_and_pchan_name(lchan->ts), lchan->nr); + /* well, what to do about it ... carry on and hope it's fine. */ + } + /* Continue to ack the release below. (This is a non-standard rel ack invented + * specifically for GSM_PCHAN_TCH_F_TCH_H_PDCH). */ + send_rel_ack = true; + break; + case GSM_PCHAN_TCH_F_PDCH: + /* GSM_PCHAN_TCH_F_PDCH, does not require a rel ack. The caller + * l1sap_info_rel_cnf() will continue with bts_model_ts_disconnect(). */ + send_rel_ack = false; + break; + default: + LOGP(DRSL, LOGL_ERROR, "%s PCU rel ack for unexpected lchan kind\n", + gsm_lchan_name(lchan)); + /* Release certainly was not requested by the BSC via RSL, so don't ack. */ + send_rel_ack = false; + break; + } + break; + + default: + /* A rel that was not requested by the BSC via RSL, hence not sending a rel ack to the + * BSC. */ + send_rel_ack = false; + break; + } + + if (!send_rel_ack) { LOGP(DRSL, LOGL_NOTICE, "%s not sending REL ACK\n", gsm_lchan_name(lchan)); return 0; -- To view, visit https://gerrit.osmocom.org/8035 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8a9953b011a4516972aae468754494f57ebc0a3f Gerrit-PatchSet: 1 Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>