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/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. Change subject: dyn ts, bts_ipaccess_nanobts.c: init PDCH on Chan OPSTART ACK ...................................................................... dyn ts, bts_ipaccess_nanobts.c: init PDCH on Chan OPSTART ACK Sending PDCH activation upon RSL bootstrap is too early. Introduce OPSTART ACK handling to call dyn_ts_init() only when the dynamic timeslot is indeed ready to receive a PDCH activation. Related: OS#3205 Change-Id: Icf6e25ff068e8a2600562d52726ead65e864ec02 --- M include/osmocom/bsc/signal.h M src/libbsc/abis_nm.c M src/libbsc/bsc_init.c M src/libbsc/bts_ipaccess_nanobts.c 4 files changed, 54 insertions(+), 2 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/include/osmocom/bsc/signal.h b/include/osmocom/bsc/signal.h index 9c0d5a3..1dde267 100644 --- a/include/osmocom/bsc/signal.h +++ b/include/osmocom/bsc/signal.h @@ -71,6 +71,7 @@ S_NM_STATECHG_OPER, /* Operational State changed*/ S_NM_STATECHG_ADM, /* Administrative State changed */ S_NM_OM2K_CONF_RES, /* OM2K Configuration Result */ + S_NM_OPSTART_ACK, /* Received OPSTART ACK, arg is struct abis_om_fom_hdr* */ }; /* SS_LCHAN signals */ diff --git a/src/libbsc/abis_nm.c b/src/libbsc/abis_nm.c index e3c4408..b2cfa53 100644 --- a/src/libbsc/abis_nm.c +++ b/src/libbsc/abis_nm.c @@ -678,6 +678,14 @@ return 0; } +static int abis_nm_rx_opstart_ack(struct msgb *mb) +{ + struct abis_om_fom_hdr *foh = msgb_l3(mb); + DEBUGPFOH(DNM, foh, "Opstart ACK\n"); + osmo_signal_dispatch(SS_NM, S_NM_OPSTART_ACK, foh); + return 0; +} + bool all_trx_rsl_connected_unlocked(const struct gsm_bts *bts) { const struct gsm_bts_trx *trx; @@ -802,7 +810,7 @@ ret = abis_nm_rx_lmt_event(mb); break; case NM_MT_OPSTART_ACK: - DEBUGPFOH(DNM, foh, "Opstart ACK\n"); + abis_nm_rx_opstart_ack(mb); break; case NM_MT_SET_CHAN_ATTR_ACK: DEBUGPFOH(DNM, foh, "Set Channel Attributes ACK\n"); @@ -1896,6 +1904,7 @@ if (bts->type == GSM_BTS_TYPE_BS11) msgb_tlv_put(msg, 0x59, 1, &zero); + DEBUGPFOH(DNM, foh, "%s(): sending %s\n", __func__, msgb_hexdump(msg)); return abis_nm_sendmsg(bts, msg); } diff --git a/src/libbsc/bsc_init.c b/src/libbsc/bsc_init.c index 429d3c7..92b8c27 100644 --- a/src/libbsc/bsc_init.c +++ b/src/libbsc/bsc_init.c @@ -354,7 +354,6 @@ for (i = 0; i < ARRAY_SIZE(trx->ts); i++) { generate_ma_for_ts(&trx->ts[i]); - dyn_ts_init(&trx->ts[i]); } } diff --git a/src/libbsc/bts_ipaccess_nanobts.c b/src/libbsc/bts_ipaccess_nanobts.c index d94a878..3eb7e0e 100644 --- a/src/libbsc/bts_ipaccess_nanobts.c +++ b/src/libbsc/bts_ipaccess_nanobts.c @@ -294,6 +294,46 @@ return 0; } +static struct gsm_bts_trx_ts *gsm_bts_trx_ts(struct gsm_network *net, + int bts_nr, int trx_nr, int ts_nr) +{ + struct gsm_bts *bts; + struct gsm_bts_trx *trx; + bts = gsm_bts_num(net, bts_nr); + if (!bts) + return NULL; + trx = gsm_bts_trx_by_nr(bts, trx_nr); + if (!trx) + return NULL; + if (ts_nr < 0 || ts_nr > ARRAY_SIZE(trx->ts)) + return NULL; + return &trx->ts[ts_nr]; +} + +static void nm_rx_opstart_ack_chan(struct abis_om_fom_hdr *foh) +{ + struct gsm_bts_trx_ts *ts; + ts = gsm_bts_trx_ts(bsc_gsmnet, foh->obj_inst.bts_nr, foh->obj_inst.trx_nr, foh->obj_inst.ts_nr); + if (!ts) { + LOGP(DNM, LOGL_ERROR, "%s Channel OPSTART ACK for non-existent TS\n", + abis_nm_dump_foh(foh)); + return; + } + + dyn_ts_init(ts); +} + +static void nm_rx_opstart_ack(struct abis_om_fom_hdr *foh) +{ + switch (foh->obj_class) { + case NM_OC_CHANNEL: + nm_rx_opstart_ack_chan(foh); + break; + default: + break; + } +} + /* Callback function to be called every time we receive a signal from NM */ static int bts_ipa_nm_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) @@ -307,6 +347,9 @@ case S_NM_STATECHG_OPER: case S_NM_STATECHG_ADM: return nm_statechg_event(signal, signal_data); + case S_NM_OPSTART_ACK: + nm_rx_opstart_ack(signal_data); + return 0; default: break; } -- To view, visit https://gerrit.osmocom.org/8041 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: Icf6e25ff068e8a2600562d52726ead65e864ec02 Gerrit-PatchSet: 1 Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder