cosmetic: dyn ts init: undup logging for gprs = none

Reshuffle the decision not to activate PDCH when GPRS is off:
Even though all current callers should avoid passing a PDCH activation in case
GPRS is off, it's a better idea to not assert on it and crash osmo-bsc.

Move the decision to omit PDCH activation and logging about it into the actual
functions that do PDCH activation. If PDCH activation is skipped, the lchan
then just stays as it was, and that's what it should anyway be doing.

Change-Id: Ib26642f08044d71a2469e6dbabf1e6fbcb02044d
This commit is contained in:
Neels Hofmeyr 2018-05-07 23:26:34 +02:00 committed by Neels Hofmeyr
parent d16732f693
commit 5deea620dc
2 changed files with 20 additions and 22 deletions

View File

@ -2495,6 +2495,16 @@ int rsl_ipacc_mdcx(struct gsm_lchan *lchan, uint32_t ip, uint16_t port,
return abis_rsl_sendmsg(msg);
}
static bool check_gprs_enabled(struct gsm_bts_trx_ts *ts)
{
if (ts->trx->bts->gprs.mode == BTS_GPRS_NONE) {
LOGP(DRSL, LOGL_NOTICE, "%s: GPRS mode is 'none': not activating PDCH.\n",
gsm_ts_and_pchan_name(ts));
return false;
}
return true;
}
int rsl_ipacc_pdch_activate(struct gsm_bts_trx_ts *ts, int act)
{
struct msgb *msg = rsl_msgb_alloc();
@ -2512,8 +2522,9 @@ int rsl_ipacc_pdch_activate(struct gsm_bts_trx_ts *ts, int act)
}
if (act){
/* Callers should heed the GPRS mode. */
OSMO_ASSERT(ts->trx->bts->gprs.mode != BTS_GPRS_NONE);
if (!check_gprs_enabled(ts))
return -ENOTSUP;
msg_type = RSL_MT_IPAC_PDCH_ACT;
ts->flags |= TS_F_PDCH_ACT_PENDING;
} else {
@ -2647,8 +2658,6 @@ int dyn_ts_switchover_start(struct gsm_bts_trx_ts *ts,
int rc = -EIO;
OSMO_ASSERT(ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH);
DEBUGP(DRSL, "%s starting switchover to %s\n",
gsm_ts_and_pchan_name(ts), gsm_pchan_name(to_pchan));
if (ts->dyn.pchan_is != ts->dyn.pchan_want) {
LOGP(DRSL, LOGL_ERROR,
@ -2680,6 +2689,12 @@ int dyn_ts_switchover_start(struct gsm_bts_trx_ts *ts,
}
}
if (to_pchan == GSM_PCHAN_PDCH && !check_gprs_enabled(ts))
return -ENOTSUP;
DEBUGP(DRSL, "%s starting switchover to %s\n",
gsm_ts_and_pchan_name(ts), gsm_pchan_name(to_pchan));
/* Record that we're busy switching. */
ts->dyn.pchan_want = to_pchan;

View File

@ -27,31 +27,14 @@ void tchf_pdch_ts_init(struct gsm_bts_trx_ts *ts)
{
int rc;
if (ts->trx->bts->gprs.mode == BTS_GPRS_NONE) {
LOGP(DRSL, LOGL_NOTICE, "%s: GPRS mode is 'none':"
" not activating PDCH.\n",
gsm_ts_and_pchan_name(ts));
return;
}
LOGP(DRSL, LOGL_DEBUG, "%s: trying to PDCH ACT\n",
gsm_ts_and_pchan_name(ts));
rc = rsl_ipacc_pdch_activate(ts, 1);
if (rc != 0)
if (rc != 0 && rc != -ENOTSUP)
LOGP(DRSL, LOGL_ERROR, "%s %s: PDCH ACT failed\n",
gsm_ts_name(ts), gsm_pchan_name(ts->pchan));
}
void tchf_tchh_pdch_ts_init(struct gsm_bts_trx_ts *ts)
{
if (ts->trx->bts->gprs.mode == BTS_GPRS_NONE) {
LOGP(DRSL, LOGL_NOTICE, "%s: GPRS mode is 'none':"
" not activating PDCH.\n",
gsm_ts_and_pchan_name(ts));
return;
}
dyn_ts_switchover_start(ts, GSM_PCHAN_PDCH);
}