lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

April 2023

  • 1 participants
  • 2252 discussions
[S] Change in osmo-bts[master]: Fix octet 2 of NM GPRS Cell
by pespin 05 Apr '23

05 Apr '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/32221 ) Change subject: Fix octet 2 of NM GPRS Cell ...................................................................... Fix octet 2 of NM GPRS Cell Octet 2 should contain the address of the GPRS cell in the GPRS NSE object. Since there's 1 GPRS Cell per BTS and we have only 1 BTS in osmo-bts, then this address should be 0. Otherwise, osmo-bts answers sometimes using (0x00, 0xff,0xff) instead of requested (0x00, 0x00, 0xff), for instance when ACKing an Admin Unlock. This is kinda still fine since value 0xff has the meaning of "all" addresses, and that means the only one available. Still, it's not the proper way to identify the object, so this patch fixes it. Change-Id: I2ea05778f5b5ac335c75f3958324664553da7f0d --- M src/common/bts.c 1 file changed, 20 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/21/32221/1 diff --git a/src/common/bts.c b/src/common/bts.c index 051f41b..29f0c56 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -280,7 +280,7 @@ memcpy(&bts->gprs.cell.timer, bts_cell_timer_default, sizeof(bts->gprs.cell.timer)); gsm_mo_init(&bts->gprs.cell.mo, bts, NM_OC_GPRS_CELL, - bts->nr, 0xff, 0xff); + bts->nr, 0, 0xff); memcpy(&bts->gprs.cell.rlc_cfg, &rlc_cfg_default, sizeof(bts->gprs.cell.rlc_cfg)); -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32221 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I2ea05778f5b5ac335c75f3958324664553da7f0d Gerrit-Change-Number: 32221 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[L] Change in osmo-bts[master]: Introduce NM FSM for GPRS Cell object
by pespin 05 Apr '23

05 Apr '23
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/32222 ) Change subject: Introduce NM FSM for GPRS Cell object ...................................................................... Introduce NM FSM for GPRS Cell object Change-Id: I5fd1d17da09a5f0eee3d69fcb4788c106a240e21 Related: OS#5994 --- M include/osmo-bts/bts.h M include/osmo-bts/nm_common_fsm.h M src/common/Makefile.am M src/common/bts.c A src/common/nm_gprs_cell_fsm.c M src/common/nm_gprs_nse_fsm.c M src/common/oml.c M src/osmo-bts-lc15/oml.c M src/osmo-bts-oc2g/oml.c M src/osmo-bts-octphy/l1_oml.c M src/osmo-bts-omldummy/bts_model.c M src/osmo-bts-sysmo/oml.c M src/osmo-bts-trx/l1_if.c M src/osmo-bts-virtual/bts_model.c 14 files changed, 327 insertions(+), 32 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/22/32222/1 diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h index bbf5dc4..c5a0709 100644 --- a/include/osmo-bts/bts.h +++ b/include/osmo-bts/bts.h @@ -143,6 +143,14 @@ uint8_t timer[7]; }; +/* GPRS CELL; ip.access specific NM Object */ +struct gsm_gprs_cell { + struct gsm_abis_mo mo; + uint16_t bvci; + uint8_t timer[11]; + struct gprs_rlc_cfg rlc_cfg; +}; + /* Struct that holds one OML-Address (Address of the BSC) */ struct bsc_oml_host { struct llist_head list; @@ -232,12 +240,7 @@ /* Not entirely sure how ip.access specific this is */ struct { struct gsm_gprs_nse nse; - struct { - struct gsm_abis_mo mo; - uint16_t bvci; - uint8_t timer[11]; - struct gprs_rlc_cfg rlc_cfg; - } cell; + struct gsm_gprs_cell cell; struct gsm_bts_gprs_nsvc nsvc[2]; uint8_t rac; } gprs; @@ -404,6 +407,11 @@ return (struct gsm_bts *)container_of(nse, struct gsm_bts, gprs.nse); } +static inline struct gsm_bts *gsm_gprs_cell_get_bts(struct gsm_gprs_cell *cell) +{ + return (struct gsm_bts *)container_of(cell, struct gsm_bts, gprs.cell); +} + struct gsm_bts *gsm_bts_alloc(void *talloc_ctx, uint8_t bts_num); struct gsm_bts *gsm_bts_num(const struct gsm_network *net, int num); diff --git a/include/osmo-bts/nm_common_fsm.h b/include/osmo-bts/nm_common_fsm.h index 9264eea..c599a21 100644 --- a/include/osmo-bts/nm_common_fsm.h +++ b/include/osmo-bts/nm_common_fsm.h @@ -103,3 +103,12 @@ NM_GPRS_NSE_ST_OP_ENABLED, }; extern struct osmo_fsm nm_gprs_nse_fsm; + +/* GPRS CELL */ +enum nm_gprs_cell_op_fsm_states { + NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED, + NM_GPRS_CELL_ST_OP_DISABLED_DEPENDENCY, + NM_GPRS_CELL_ST_OP_DISABLED_OFFLINE, + NM_GPRS_CELL_ST_OP_ENABLED, +}; +extern struct osmo_fsm nm_gprs_cell_fsm; diff --git a/src/common/Makefile.am b/src/common/Makefile.am index cb5ff50..d904ab1 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -61,6 +61,7 @@ nm_bts_fsm.c \ nm_bb_transc_fsm.c \ nm_channel_fsm.c \ + nm_gprs_cell_fsm.c \ nm_gprs_nse_fsm.c \ nm_radio_carrier_fsm.c \ probes.d \ diff --git a/src/common/bts.c b/src/common/bts.c index 29f0c56..5845fb2 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -271,18 +271,20 @@ memcpy(&bts->gprs.nse.timer, bts_nse_timer_default, sizeof(bts->gprs.nse.timer)); + /* NM GPRS CELL */ + bts->gprs.cell.mo.fi = osmo_fsm_inst_alloc(&nm_gprs_cell_fsm, bts, &bts->gprs.cell, + LOGL_INFO, NULL); + osmo_fsm_inst_update_id_f(bts->gprs.cell.mo.fi, "gprs_cell%d-0", bts->nr); + gsm_mo_init(&bts->gprs.cell.mo, bts, NM_OC_GPRS_CELL, bts->nr, 0, 0xff); + memcpy(&bts->gprs.cell.rlc_cfg, &rlc_cfg_default, sizeof(bts->gprs.cell.rlc_cfg)); + memcpy(&bts->gprs.cell.timer, bts_cell_timer_default, sizeof(bts->gprs.cell.timer)); + for (i = 0; i < ARRAY_SIZE(bts->gprs.nsvc); i++) { bts->gprs.nsvc[i].bts = bts; bts->gprs.nsvc[i].id = i; gsm_mo_init(&bts->gprs.nsvc[i].mo, bts, NM_OC_GPRS_NSVC, bts->nr, i, 0xff); } - memcpy(&bts->gprs.cell.timer, bts_cell_timer_default, - sizeof(bts->gprs.cell.timer)); - gsm_mo_init(&bts->gprs.cell.mo, bts, NM_OC_GPRS_CELL, - bts->nr, 0, 0xff); - memcpy(&bts->gprs.cell.rlc_cfg, &rlc_cfg_default, - sizeof(bts->gprs.cell.rlc_cfg)); /* create our primary TRX. It will be initialized during bts_init() */ bts->c0 = gsm_bts_trx_alloc(bts); @@ -379,9 +381,9 @@ oml_mo_state_init(&bts->site_mgr.mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED); oml_mo_state_init(&bts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED); oml_mo_state_init(&bts->gprs.nse.mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED); + oml_mo_state_init(&bts->gprs.cell.mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED); /* set BTS attr to dependency */ - oml_mo_state_init(&bts->gprs.cell.mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY); oml_mo_state_init(&bts->gprs.nsvc[0].mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY); oml_mo_state_init(&bts->gprs.nsvc[1].mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY); @@ -458,7 +460,6 @@ osmo_fsm_inst_dispatch(bts->gprs.nse.mo.fi, NM_EV_SW_ACT, NULL); /* those should all be in DEPENDENCY */ - oml_tx_state_changed(&bts->gprs.cell.mo); oml_tx_state_changed(&bts->gprs.nsvc[0].mo); oml_tx_state_changed(&bts->gprs.nsvc[1].mo); diff --git a/src/common/nm_gprs_cell_fsm.c b/src/common/nm_gprs_cell_fsm.c new file mode 100644 index 0000000..036df3e --- /dev/null +++ b/src/common/nm_gprs_cell_fsm.c @@ -0,0 +1,258 @@ +/* NM GPRS Cell FSM */ + +/* (C) 2023 by sysmocom - s.m.f.c. GmbH <info(a)sysmocom.de> + * Author: Pau Espin Pedrol <pespin(a)sysmocom.de> + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public Licecell as published by + * the Free Software Foundation; either version 3 of the Licecell, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public Licecell for more details. + * + * You should have received a copy of the GNU Affero General Public Licecell + * along with this program. If not, see <http://www.gnu.org/licecells/>. + * + */ + +#include <errno.h> +#include <unistd.h> +#include <inttypes.h> + +#include <osmocom/core/fsm.h> +#include <osmocom/core/tdef.h> +#include <osmocom/gsm/protocol/gsm_12_21.h> + +#include <osmo-bts/logging.h> +#include <osmo-bts/gsm_data.h> +#include <osmo-bts/bts_model.h> +#include <osmo-bts/bts.h> +#include <osmo-bts/rsl.h> +#include <osmo-bts/nm_common_fsm.h> + +#define X(s) (1 << (s)) + +#define nm_gprs_cell_fsm_state_chg(fi, NEXT_STATE) \ + osmo_fsm_inst_state_chg(fi, NEXT_STATE, 0, 0) + +/* Can the GPRS Cell be enabled (OPSTARTed)? aka should it stay in "Disabled Dependency" state? */ +static bool gprs_cell_can_be_enabled(struct gsm_gprs_cell *cell) +{ + struct gsm_bts *bts = gsm_gprs_cell_get_bts(cell); + return bts->gprs.nse.mo.nm_state.operational == NM_OPSTATE_ENABLED; +} + + +////////////////////////// +// FSM STATE ACTIONS +////////////////////////// + +static void st_op_disabled_notinstalled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + /* Reset state here: */ + + cell->mo.setattr_success = false; + cell->mo.opstart_success = false; + oml_mo_state_chg(&cell->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED); +} + +static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + + switch (event) { + case NM_EV_SW_ACT: + oml_mo_tx_sw_act_rep(&cell->mo); + if (gprs_cell_can_be_enabled(cell)) + nm_gprs_cell_fsm_state_chg(fi, NM_GPRS_CELL_ST_OP_DISABLED_OFFLINE); + else + nm_gprs_cell_fsm_state_chg(fi, NM_GPRS_CELL_ST_OP_DISABLED_DEPENDENCY); + return; + default: + OSMO_ASSERT(0); + } +} + +static void st_op_disabled_dependency_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + cell->mo.setattr_success = false; + cell->mo.opstart_success = false; + oml_mo_state_chg(&cell->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY, -1); +} + +static void st_op_disabled_dependency(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + struct gsm_bts *bts = gsm_gprs_cell_get_bts(cell); + struct nm_fsm_ev_setattr_data *setattr_data; + int rc; + + switch (event) { + case NM_EV_RX_SETATTR: + setattr_data = (struct nm_fsm_ev_setattr_data *)data; + rc = bts_model_apply_oml(bts, setattr_data->msg, + &cell->mo, cell); + cell->mo.setattr_success = rc == 0; + oml_fom_ack_nack_copy_msg(setattr_data->msg, rc); + break; + case NM_EV_RX_OPSTART: + if (!cell->mo.setattr_success) { + oml_mo_opstart_nack(&cell->mo, NM_NACK_CANT_PERFORM); + return; + } + bts_model_opstart(bts, &cell->mo, cell); + break; + case NM_EV_OPSTART_ACK: + cell->mo.opstart_success = true; + oml_mo_opstart_ack(&cell->mo); + nm_gprs_cell_fsm_state_chg(fi, NM_CHAN_ST_OP_ENABLED); + return; + case NM_EV_OPSTART_NACK: + cell->mo.opstart_success = false; + oml_mo_opstart_nack(&cell->mo, (int)(intptr_t)data); + return; + default: + OSMO_ASSERT(0); + } +} + +static void st_op_disabled_offline_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + cell->mo.opstart_success = false; + oml_mo_state_chg(&cell->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1); +} + +static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + struct gsm_bts *bts = gsm_gprs_cell_get_bts(cell); + struct nm_fsm_ev_setattr_data *setattr_data; + int rc; + + switch (event) { + case NM_EV_RX_SETATTR: + setattr_data = (struct nm_fsm_ev_setattr_data *)data; + rc = bts_model_apply_oml(bts, setattr_data->msg, &cell->mo, bts); + cell->mo.setattr_success = rc == 0; + oml_fom_ack_nack_copy_msg(setattr_data->msg, rc); + break; + case NM_EV_RX_OPSTART: + if (!cell->mo.setattr_success) { + oml_mo_opstart_nack(&cell->mo, NM_NACK_CANT_PERFORM); + return; + } + bts_model_opstart(bts, &cell->mo, bts); + break; + case NM_EV_OPSTART_ACK: + cell->mo.opstart_success = true; + oml_mo_opstart_ack(&cell->mo); + nm_gprs_cell_fsm_state_chg(fi, NM_GPRS_CELL_ST_OP_ENABLED); + break; /* check statechg below */ + case NM_EV_OPSTART_NACK: + cell->mo.opstart_success = false; + oml_mo_opstart_nack(&cell->mo, (int)(intptr_t)data); + return; + default: + OSMO_ASSERT(0); + } +} + +static void st_op_enabled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + oml_mo_state_chg(&cell->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); +} + +static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ +} + +static void nm_gprs_cell_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_gprs_cell *cell = (struct gsm_gprs_cell *)fi->priv; + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&cell->mo, -1, -1, NM_STATE_SHUTDOWN); + break; + case NM_EV_SHUTDOWN_FINISH: + nm_gprs_cell_fsm_state_chg(fi, NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED); + break; + default: + OSMO_ASSERT(false); + } +} + +static struct osmo_fsm_state nm_gprs_cell_fsm_states[] = { + [NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED] = { + .in_event_mask = + X(NM_EV_SW_ACT), + .out_state_mask = + X(NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED) | + X(NM_GPRS_CELL_ST_OP_DISABLED_DEPENDENCY) | + X(NM_GPRS_CELL_ST_OP_DISABLED_OFFLINE), + .name = "DISABLED_NOTINSTALLED", + .onenter = st_op_disabled_notinstalled_on_enter, + .action = st_op_disabled_notinstalled, + }, + [NM_GPRS_CELL_ST_OP_DISABLED_DEPENDENCY] = { + .in_event_mask = + X(NM_EV_RX_SETATTR) | + X(NM_EV_RX_OPSTART) | /* backward compatibility, buggy BSC */ + X(NM_EV_OPSTART_ACK) | /* backward compatibility, buggy BSC */ + X(NM_EV_OPSTART_NACK), /* backward compatibility, buggy BSC */ + .out_state_mask = + X(NM_CHAN_ST_OP_DISABLED_NOTINSTALLED) | + X(NM_CHAN_ST_OP_DISABLED_OFFLINE) | + X(NM_CHAN_ST_OP_ENABLED), /* backward compatibility, buggy BSC */ + .name = "DISABLED_DEPENDENCY", + .onenter = st_op_disabled_dependency_on_enter, + .action = st_op_disabled_dependency, + }, + [NM_GPRS_CELL_ST_OP_DISABLED_OFFLINE] = { + .in_event_mask = + X(NM_EV_RX_SETATTR) | + X(NM_EV_RX_OPSTART) | + X(NM_EV_OPSTART_ACK) | + X(NM_EV_OPSTART_NACK), + .out_state_mask = + X(NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED) | + X(NM_GPRS_CELL_ST_OP_ENABLED), + .name = "DISABLED_OFFLINE", + .onenter = st_op_disabled_offline_on_enter, + .action = st_op_disabled_offline, + }, + [NM_GPRS_CELL_ST_OP_ENABLED] = { + .in_event_mask = 0, + .out_state_mask = + X(NM_GPRS_CELL_ST_OP_DISABLED_NOTINSTALLED), + .name = "ENABLED", + .onenter = st_op_enabled_on_enter, + .action = st_op_enabled, + }, +}; + +struct osmo_fsm nm_gprs_cell_fsm = { + .name = "NM_GPRS_CELL_OP", + .states = nm_gprs_cell_fsm_states, + .num_states = ARRAY_SIZE(nm_gprs_cell_fsm_states), + .event_names = nm_fsm_event_names, + .allstate_action = nm_gprs_cell_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), + .log_subsys = DOML, +}; + +static __attribute__((constructor)) void nm_gprs_cell_fsm_init(void) +{ + OSMO_ASSERT(osmo_fsm_register(&nm_gprs_cell_fsm) == 0); +} diff --git a/src/common/nm_gprs_nse_fsm.c b/src/common/nm_gprs_nse_fsm.c index b658828..ba956fd 100644 --- a/src/common/nm_gprs_nse_fsm.c +++ b/src/common/nm_gprs_nse_fsm.c @@ -44,10 +44,10 @@ static void ev_dispatch_children(struct gsm_gprs_nse *nse, uint32_t event) { - /* TODO: once we have FSMs for GPRS Cell and GPRS NSVC: */ -#if 0 struct gsm_bts *bts = gsm_gprs_nse_get_bts(nse); osmo_fsm_inst_dispatch(bts->gprs.cell.mo.fi, event, NULL); + /* TODO: once we have FSMs for GPRS Cell and GPRS NSVC: */ +#if 0 if (bts->gprs.nsvc[0].fi) osmo_fsm_inst_dispatch(bts->gprs.nsvc[0].fi, event, NULL); if (bts->gprs.nsvc[1].fi) @@ -84,6 +84,7 @@ switch (event) { case NM_EV_SW_ACT: oml_mo_tx_sw_act_rep(&nse->mo); + ev_dispatch_children(nse, event); if (nse_can_be_enabled(nse)) nm_gprs_nse_fsm_state_chg(fi, NM_GPRS_NSE_ST_OP_DISABLED_OFFLINE); else diff --git a/src/common/oml.c b/src/common/oml.c index 5e8f0ad..56da427 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -1096,7 +1096,7 @@ if (!mo->fi) { /* Some NM objets still don't have FSMs implemented, such as - * NM_OC_GPRS_CELL or NM_OC_GPRS_NSVC. For those, don't go through FSM: + * NM_OC_GPRS_NSVC. For those, don't go through FSM: */ return bts_model_opstart(bts, mo, obj); } @@ -1292,10 +1292,15 @@ return 0; } -static int oml_ipa_mo_set_attr_cell(void *obj, const struct tlv_parsed *tp) +static int oml_ipa_mo_set_attr_cell(void *obj, + const struct msgb *msg, + const struct tlv_parsed *tp) { - struct gsm_bts *bts = container_of(obj, struct gsm_bts, gprs.cell); - struct gprs_rlc_cfg *rlcc = &bts->gprs.cell.rlc_cfg; + struct gsm_gprs_cell *gprs_cell = obj; + struct gsm_bts *bts = gsm_gprs_cell_get_bts(gprs_cell); + struct gprs_rlc_cfg *rlcc = &gprs_cell->rlc_cfg; + struct nm_fsm_ev_setattr_data ev_data; + int rc; const uint8_t *cur; uint16_t _cur_s; @@ -1309,8 +1314,7 @@ } if (TLVP_PRES_LEN(tp, NM_ATT_IPACC_BVCI, 2)) - bts->gprs.cell.bvci = - ntohs(tlvp_val16_unal(tp, NM_ATT_IPACC_BVCI)); + gprs_cell->bvci = ntohs(tlvp_val16_unal(tp, NM_ATT_IPACC_BVCI)); if (TLVP_PRES_LEN(tp, NM_ATT_IPACC_RLC_CFG, 9)) { cur = TLVP_VAL(tp, NM_ATT_IPACC_RLC_CFG); @@ -1357,6 +1361,10 @@ rlcc->initial_mcs = *TLVP_VAL(tp, NM_ATT_IPACC_RLC_CFG_3); } + rc = osmo_fsm_inst_dispatch(gprs_cell->mo.fi, NM_EV_RX_SETATTR, &ev_data); + if (rc < 0) + return NM_NACK_CANT_PERFORM; + osmo_signal_dispatch(SS_GLOBAL, S_NEW_CELL_ATTR, bts); return 0; @@ -1464,7 +1472,7 @@ rc = oml_ipa_mo_set_attr_nse(obj, msg, &tp); break; case NM_OC_GPRS_CELL: - rc = oml_ipa_mo_set_attr_cell(obj, &tp); + rc = oml_ipa_mo_set_attr_cell(obj, msg, &tp); break; case NM_OC_GPRS_NSVC: rc = oml_ipa_mo_set_attr_nsvc(obj, &tp); @@ -1485,8 +1493,7 @@ mo->nm_attr = tp_merged; /* These are not yet handled through NM FSM: */ - if (mo->obj_class == NM_OC_GPRS_CELL || - mo->obj_class == NM_OC_GPRS_NSVC) + if (mo->obj_class == NM_OC_GPRS_NSVC) return oml_fom_ack_nack(msg, rc); return rc; } diff --git a/src/osmo-bts-lc15/oml.c b/src/osmo-bts-lc15/oml.c index d6b3e77..34f107d 100644 --- a/src/osmo-bts-lc15/oml.c +++ b/src/osmo-bts-lc15/oml.c @@ -1872,6 +1872,7 @@ case NM_OC_BTS: case NM_OC_BASEB_TRANSC: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; case NM_OC_RADIO_CARRIER: @@ -1882,7 +1883,6 @@ ts = (struct gsm_bts_trx_ts*) obj; rc = ts_opstart(ts); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-oc2g/oml.c b/src/osmo-bts-oc2g/oml.c index d200263..3625f72 100644 --- a/src/osmo-bts-oc2g/oml.c +++ b/src/osmo-bts-oc2g/oml.c @@ -1877,6 +1877,7 @@ case NM_OC_BTS: case NM_OC_BASEB_TRANSC: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; case NM_OC_RADIO_CARRIER: @@ -1887,7 +1888,6 @@ ts = (struct gsm_bts_trx_ts*) obj; rc = ts_opstart(ts); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c index ef25a27..543fef0 100644 --- a/src/osmo-bts-octphy/l1_oml.c +++ b/src/osmo-bts-octphy/l1_oml.c @@ -1776,6 +1776,7 @@ case NM_OC_BTS: case NM_OC_BASEB_TRANSC: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; case NM_OC_RADIO_CARRIER: @@ -1786,7 +1787,6 @@ ts = (struct gsm_bts_trx_ts*) obj; rc = ts_connect_as(ts, ts->pchan, pchan_act_compl_cb, NULL); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-omldummy/bts_model.c b/src/osmo-bts-omldummy/bts_model.c index 04c4ab9..d85d9cd 100644 --- a/src/osmo-bts-omldummy/bts_model.c +++ b/src/osmo-bts-omldummy/bts_model.c @@ -129,9 +129,9 @@ case NM_OC_RADIO_CARRIER: case NM_OC_CHANNEL: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c index 87d849d..bcd70b5 100644 --- a/src/osmo-bts-sysmo/oml.c +++ b/src/osmo-bts-sysmo/oml.c @@ -1752,6 +1752,7 @@ case NM_OC_BTS: case NM_OC_BASEB_TRANSC: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; case NM_OC_RADIO_CARRIER: @@ -1762,7 +1763,6 @@ ts = (struct gsm_bts_trx_ts*) obj; rc = ts_opstart(ts); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c index bf8393c..af7d034 100644 --- a/src/osmo-bts-trx/l1_if.c +++ b/src/osmo-bts-trx/l1_if.c @@ -585,6 +585,7 @@ case NM_OC_BASEB_TRANSC: case NM_OC_CHANNEL: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; case NM_OC_RADIO_CARRIER: @@ -592,7 +593,6 @@ trx = (struct gsm_bts_trx *) obj; rc = trx_init(trx); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); diff --git a/src/osmo-bts-virtual/bts_model.c b/src/osmo-bts-virtual/bts_model.c index a69e1d8..d758a82 100644 --- a/src/osmo-bts-virtual/bts_model.c +++ b/src/osmo-bts-virtual/bts_model.c @@ -164,9 +164,9 @@ case NM_OC_BASEB_TRANSC: case NM_OC_CHANNEL: case NM_OC_GPRS_NSE: + case NM_OC_GPRS_CELL: rc = osmo_fsm_inst_dispatch(mo->fi, NM_EV_OPSTART_ACK, NULL); break; - case NM_OC_GPRS_CELL: case NM_OC_GPRS_NSVC: oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1); rc = oml_mo_opstart_ack(mo); -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32222 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I5fd1d17da09a5f0eee3d69fcb4788c106a240e21 Gerrit-Change-Number: 32222 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[L] Change in osmo-bts[master]: Introduce NM FSM for GPRS NSE object
by pespin 05 Apr '23

05 Apr '23
Attention is currently required from: fixeria. Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bts/+/32213 to look at the new patch set (#7). Change subject: Introduce NM FSM for GPRS NSE object ...................................................................... Introduce NM FSM for GPRS NSE object Related: OS#5994 Change-Id: I01eadc63214a2eb5e1bce455c7e5b62bd41905ea --- M include/osmo-bts/bts.h M include/osmo-bts/nm_common_fsm.h M src/common/Makefile.am M src/common/bts.c M src/common/nm_bts_sm_fsm.c A src/common/nm_gprs_nse_fsm.c M src/common/oml.c M src/osmo-bts-lc15/oml.c M src/osmo-bts-oc2g/oml.c M src/osmo-bts-octphy/l1_oml.c M src/osmo-bts-omldummy/bts_model.c M src/osmo-bts-sysmo/oml.c M src/osmo-bts-trx/l1_if.c M src/osmo-bts-virtual/bts_model.c 14 files changed, 378 insertions(+), 56 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/13/32213/7 -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32213 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I01eadc63214a2eb5e1bce455c7e5b62bd41905ea Gerrit-Change-Number: 32213 Gerrit-PatchSet: 7 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: MGCP_Test: add new testcases for oa/bwe conversion
by Jenkins Builder 05 Apr '23

05 Apr '23
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220 ) Change subject: MGCP_Test: add new testcases for oa/bwe conversion ...................................................................... Patch Set 1: (2 comments) File mgw/MGCP_Test.ttcn: Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5757): https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220/comment/b753d3d5_bb42… PS1, Line 2455: "octet-align=0", ''O); /* We expect to see NO bandwith efficient packets! */ 'bandwith' may be misspelled - perhaps 'bandwidth'? Robot Comment from checkpatch (run ID jenkins-gerrit-lint-5757): https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220/comment/ee312482_615e… PS1, Line 2460: "octet-align=0", ''O, /* We expect to see NO bandwith efficient packets! */ 'bandwith' may be misspelled - perhaps 'bandwidth'? -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I2b2d7ef7fb4fe31111aa8665c4d4295425502451 Gerrit-Change-Number: 32220 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-CC: Jenkins Builder Gerrit-Comment-Date: Wed, 05 Apr 2023 12:28:41 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: MGCP_Test: support multiple codecs
by dexter 05 Apr '23

05 Apr '23
Attention is currently required from: pespin. dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153 ) Change subject: MGCP_Test: support multiple codecs ...................................................................... Patch Set 5: (3 comments) File library/RTP_Emulation.ttcn: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153/comment/f8c85b0a_26f2… PS4, Line 364: private function f_check_fixed_rx_payloads(octetstring rtp_data, INT7b rtp_payload_type) runs on RTP_Emulation_CT { > it feels a bit strange having the rtp_Data before the rtp_payload_type, but not criticial. Done https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153/comment/b57944c0_fdcf… PS4, Line 376: if (rtp_data == g_cfg.rx_payloads[i].fixed_payload and rtp_payload_type == g_cfg.rx_payloads[i].payload_type) { > split into 2 lines? Done https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153/comment/d085a2fe_0ba1… PS4, Line 388: if (payload_present and payload_error) { > This function implementation seem overcmplex with all those bool vars. […] Since we now have to match multiple payload type numbers with multiple optional defined payloads the matching got more complicated. I have now revisited this function and added comments so now it is hopefully better to understand. -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I8422313fccad1bfcee52c933f643068bebdaf2d5 Gerrit-Change-Number: 32153 Gerrit-PatchSet: 5 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Apr 2023 12:28:06 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: MGCP_Test: add new testcases for oa/bwe conversion
by dexter 05 Apr '23

05 Apr '23
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220 ) Change subject: MGCP_Test: add new testcases for oa/bwe conversion ...................................................................... MGCP_Test: add new testcases for oa/bwe conversion The octet aligned to bandwith efficient conversion is currently only tested in scenarios where only one codec is assigned on both sides. However, there may be call agents that will assign bandwith efficient and octet aligned on one side for compatibility reasons. If this is the case, then OsmoMGW should always chose the format that requires no conversation. Related: OS#5461 Change-Id: I2b2d7ef7fb4fe31111aa8665c4d4295425502451 --- M mgw/MGCP_Test.ttcn 1 file changed, 71 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/20/32220/1 diff --git a/mgw/MGCP_Test.ttcn b/mgw/MGCP_Test.ttcn index 73d7be2..01945bf 100644 --- a/mgw/MGCP_Test.ttcn +++ b/mgw/MGCP_Test.ttcn @@ -2351,7 +2351,9 @@ /* create two local RTP emulations; create two connections on MGW EP, see if * exchanged data is converted between AMR octet-aligned and bandwith * efficient-mode */ - function f_TC_amr_x_x_rtp_conversion(octetstring pl0, octetstring pl1, charstring fmtp0, charstring fmtp1) runs on dummy_CT { + function f_TC_amr_x_x_rtp_conversion(charstring fmtp0, octetstring pl0, + charstring fmtp1a, octetstring pl1a, + charstring fmtp1b, octetstring pl1b) runs on dummy_CT { var RtpFlowData flow[2]; var RtpemStats stats[2]; var MgcpResponse resp; @@ -2372,13 +2374,25 @@ f_flow_create(RTPEM[0], ep, call_id, "sendrecv", flow[0]); /* Connection #1 (Bidirectional) */ - flow[1] := valueof(t_RtpFlow(mp_local_ipv4, mp_remote_ipv4, 112, "AMR/8000", fmtp1)); + flow[1] := valueof(t_RtpFlow(mp_local_ipv4, mp_remote_ipv4, 112, "AMR/8000", fmtp1a)); flow[1].em.portnr := 20000; flow[1].rtp_cfg := c_RtpemDefaultCfg; - flow[1].rtp_cfg.rx_payloads[0].payload_type := flow[1].codec_descr[0].pt; - flow[1].rtp_cfg.tx_payloads[0].payload_type := flow[1].codec_descr[0].pt; - flow[1].rtp_cfg.rx_payloads[0].fixed_payload := pl1; - flow[1].rtp_cfg.tx_payloads[0].fixed_payload := pl1; + flow[1].rtp_cfg.rx_payloads := {}; + flow[1].rtp_cfg.tx_payloads := {}; + if (pl1a != ''O) { + flow[1].rtp_cfg.rx_payloads := flow[1].rtp_cfg.rx_payloads & {{112, pl1a}}; + flow[1].rtp_cfg.tx_payloads := flow[1].rtp_cfg.tx_payloads & {{112, pl1a}}; + } + + /* The second fmtp parameter is to simulate a call agent that offers the transmission both modes. */ + if (fmtp1b != "") { + flow[1].codec_descr := flow[1].codec_descr & {{113, "AMR/8000", fmtp1b}}; + if (pl1b != ''O) { + flow[1].rtp_cfg.rx_payloads := flow[1].rtp_cfg.rx_payloads & {{113, pl1b}}; + flow[1].rtp_cfg.tx_payloads := flow[1].rtp_cfg.tx_payloads & {{113, pl1b}}; + } + } + f_flow_create(RTPEM[1], ep, call_id, "sendrecv", flow[1]); /* Send RTP packets to connection #0, receive on connection #1 */ @@ -2421,16 +2435,41 @@ const octetstring rtp_amr_5_15k_oa := '100c4e9ba850e30d5d53d04de41e7c'O; const octetstring rtp_amr_5_15k_bwe := '10d3a6ea1438c35754f41379079f'O; + /* Only one codec on each side */ testcase TC_amr_oa_bwe_rtp_conversion() runs on dummy_CT { - f_TC_amr_x_x_rtp_conversion(rtp_amr_5_90k_oa, rtp_amr_5_90k_bwe, "octet-align=1", "octet-align=0"); + f_TC_amr_x_x_rtp_conversion("octet-align=1", rtp_amr_5_90k_oa, "octet-align=0", rtp_amr_5_90k_bwe, "", ''O); } - testcase TC_amr_oa_oa_rtp_conversion() runs on dummy_CT { - f_TC_amr_x_x_rtp_conversion(rtp_amr_5_15k_oa, rtp_amr_5_15k_oa, "octet-align=1", "octet-align=1"); + f_TC_amr_x_x_rtp_conversion("octet-align=1", rtp_amr_5_15k_oa, "octet-align=1", rtp_amr_5_15k_oa, "", ''O); + } + testcase TC_amr_bwe_bwe_rtp_conversion() runs on dummy_CT { + f_TC_amr_x_x_rtp_conversion("octet-align=0", rtp_amr_5_15k_bwe, "octet-align=0", rtp_amr_5_15k_bwe, "", ''O); } - testcase TC_amr_bwe_bwe_rtp_conversion() runs on dummy_CT { - f_TC_amr_x_x_rtp_conversion(rtp_amr_5_15k_bwe, rtp_amr_5_15k_bwe, "octet-align=0", "octet-align=0"); + /* Only one codec on one side, two codecs (compatibility) on other side. The payloads are the same on both + * sides, so the expectation is that conversion must not be performed. Each test is done with both formats in + * two different configurations.*/ + testcase TC_amr_oa_oa_no_bwe_rtp_conversion() runs on dummy_CT { + f_TC_amr_x_x_rtp_conversion("octet-align=1", rtp_amr_5_15k_oa, + "octet-align=1", rtp_amr_5_15k_oa, + "octet-align=0", ''O); /* We expect to see NO bandwith efficient packets! */ + } + testcase TC_amr_oa_no_bwe_oa_rtp_conversion() runs on dummy_CT { + /* (Same as above but flipped on the opposite side) */ + f_TC_amr_x_x_rtp_conversion("octet-align=1", rtp_amr_5_15k_oa, + "octet-align=0", ''O, /* We expect to see NO bandwith efficient packets! */ + "octet-align=1", rtp_amr_5_15k_oa); + } + testcase TC_amr_bwe_bwe_no_oa_rtp_conversion() runs on dummy_CT { + f_TC_amr_x_x_rtp_conversion("octet-align=0", rtp_amr_5_15k_bwe, + "octet-align=0", rtp_amr_5_15k_bwe, + "octet-align=1", ''O); /* We expect to see NO octet aligned packets! */ + } + testcase TC_amr_bwe_no_oa_bwe_rtp_conversion() runs on dummy_CT { + /* (Same as above but flipped on the opposite side) */ + f_TC_amr_x_x_rtp_conversion("octet-align=0", rtp_amr_5_15k_bwe, + "octet-align=1", ''O, /* We expect to see NO octet aligned packets! */ + "octet-align=0", rtp_amr_5_15k_bwe); } /* TODO: Double-DLCX (no retransmission) */ @@ -3028,6 +3067,10 @@ execute(TC_amr_oa_bwe_rtp_conversion()); execute(TC_amr_oa_oa_rtp_conversion()); execute(TC_amr_bwe_bwe_rtp_conversion()); + execute(TC_amr_oa_oa_no_bwe_rtp_conversion()); + execute(TC_amr_oa_no_bwe_oa_rtp_conversion()); + execute(TC_amr_bwe_bwe_no_oa_rtp_conversion()); + execute(TC_amr_bwe_no_oa_bwe_rtp_conversion()); execute(TC_conn_timeout()); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32220 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I2b2d7ef7fb4fe31111aa8665c4d4295425502451 Gerrit-Change-Number: 32220 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[L] Change in osmo-ttcn3-hacks[master]: MGCP_Test: support multiple codecs
by dexter 05 Apr '23

05 Apr '23
Attention is currently required from: pespin. Hello Jenkins Builder, laforge, pespin, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153 to look at the new patch set (#5). Change subject: MGCP_Test: support multiple codecs ...................................................................... MGCP_Test: support multiple codecs At the moment The RTP emulation and MGCP_Test only allow to specify one codec and one set of RX/TX fixed payload octet strings to verify against. This is quite limiting since it might be necessary to test against different types and formats of payloads simultaneously in order to see if osmo-mgw converts or forwards them correctly. Let's extend this to support multiple codecs on MGCP/SDP level plus support for multiple RTP payloads on RTP emulation level. Related: OS#5461 Change-Id: I8422313fccad1bfcee52c933f643068bebdaf2d5 --- M bts/BTS_Tests.ttcn M hnodeb/HNBGW_ConnectionHandler.ttcn M library/RTP_Emulation.ttcn M mgw/MGCP_Test.ttcn 4 files changed, 216 insertions(+), 98 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/53/32153/5 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32153 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I8422313fccad1bfcee52c933f643068bebdaf2d5 Gerrit-Change-Number: 32153 Gerrit-PatchSet: 5 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[L] Change in osmo-mgw[master]: mgcp_codec: fix codec decision
by dexter 05 Apr '23

05 Apr '23
Attention is currently required from: dexter. Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-mgw/+/32218 to look at the new patch set (#2). Change subject: mgcp_codec: fix codec decision ...................................................................... mgcp_codec: fix codec decision Unfortunately OsmoMGW was never really tested with multiple different codecs on either side of the connection. While OsmoMSC and OsmoBSC only assign exactly one codec on each side this has never been a problem, however it might become a problem when a call againt assigns multiple codecs on one side. This has been observed in a setup where OsmoMGW had one leg towards an external call agent. Also due to recent upgrades to the TTCN3 tests we are now able to simulate different codecs on both sides to pinpoint issues. Testing has shown that OsmoMGW has difficulties with multiple codecs. The reason for this is that the function that makes the codec decision was not fully finished. So let's finish the codec decision function and let's also use that decision when patching the payload type of outgoing RTP packets. Related: OS#5461 Change-Id: I6c3291f825488e5d8ce136aeb18450156794aeb5 --- M include/osmocom/mgcp/mgcp_codec.h M include/osmocom/mgcp/mgcp_trunk.h M src/libosmo-mgcp/mgcp_codec.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_protocol.c M src/libosmo-mgcp/mgcp_vty.c M tests/mgcp/mgcp_test.c M tests/mgcp/mgcp_test.ok 8 files changed, 277 insertions(+), 237 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/18/32218/2 -- To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/32218 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-mgw Gerrit-Branch: master Gerrit-Change-Id: I6c3291f825488e5d8ce136aeb18450156794aeb5 Gerrit-Change-Number: 32218 Gerrit-PatchSet: 2 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in osmo-bts[master]: oml.c: Remove dot character at the end of log lines
by pespin 05 Apr '23

05 Apr '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/32219 ) Change subject: oml.c: Remove dot character at the end of log lines ...................................................................... oml.c: Remove dot character at the end of log lines Change-Id: Iaf061bb752f9808a6ab31049b9e87920a6b07f3d --- M src/common/oml.c 1 file changed, 18 insertions(+), 9 deletions(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved diff --git a/src/common/oml.c b/src/common/oml.c index 5ffb6ff..5474fb1 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -217,7 +217,7 @@ add_trx_attr(out_msg, trx); break; default: - LOGP(DOML, LOGL_ERROR, "%s: O&M Get Attributes [%u], %s is unsupported by TRX.\n", + LOGP(DOML, LOGL_ERROR, "%s: O&M Get Attributes [%u], %s is unsupported by TRX\n", gsm_trx_name(trx), i, get_value_string(abis_nm_att_names, attr[i])); /* Push this tag to the list of unsupported attributes */ buf = msgb_push(out_msg, 1); @@ -256,7 +256,7 @@ add_bts_feat(out_msg, bts); break; default: - LOGP(DOML, LOGL_ERROR, "O&M Get Attributes [%u], %s is unsupported by BTS.\n", i, + LOGP(DOML, LOGL_ERROR, "O&M Get Attributes [%u], %s is unsupported by BTS\n", i, get_value_string(abis_nm_att_names, attr[i])); /* Push this tag to the list of unsupported attributes */ buf = msgb_push(out_msg, 1); @@ -450,13 +450,13 @@ /* alter message type */ if (cause) { - LOGPFOH(DOML, LOGL_NOTICE, foh, "Sending FOM NACK with cause %s.\n", + LOGPFOH(DOML, LOGL_NOTICE, foh, "Sending FOM NACK with cause %s\n", abis_nm_nack_cause_name(cause)); foh->msg_type += 2; /* nack */ /* add cause */ msgb_tv_put(msg, NM_ATT_NACK_CAUSES, cause); } else { - LOGPFOH(DOML, LOGL_DEBUG, foh, "Sending FOM ACK.\n"); + LOGPFOH(DOML, LOGL_DEBUG, foh, "Sending FOM ACK\n"); foh->msg_type++; /* ack */ } @@ -566,7 +566,7 @@ oml_tx_failure_event_rep(&bts->mo, NM_SEVER_MAJOR, OSMO_EVT_WARN_SW_WARN, "Given ARFCN %u is not supported", arfcn); - LOGPFOH(DOML, LOGL_ERROR, foh, "Given ARFCN %u is not supported.\n", arfcn); + LOGPFOH(DOML, LOGL_ERROR, foh, "Given ARFCN %u is not supported\n", arfcn); return oml_fom_ack_nack(msg, NM_NACK_FREQ_NOTAVAIL); } } @@ -697,7 +697,7 @@ if (TLVP_PRES_LEN(&tp, NM_ATT_BTS_AIR_TIMER, 1)) { uint8_t t3105 = *TLVP_VAL(&tp, NM_ATT_BTS_AIR_TIMER); if (t3105 == 0) { - LOGPFOH(DOML, LOGL_NOTICE, foh, "T3105 must have a value != 0.\n"); + LOGPFOH(DOML, LOGL_NOTICE, foh, "T3105 must have a value != 0\n"); return oml_fom_ack_nack(msg, NM_NACK_PARAM_RANGE); } bts->t3105_ms = t3105 * 10; @@ -824,7 +824,7 @@ if (arfcn >= 1024) { /* 0 .. 1023 (1024 channels total) */ oml_tx_failure_event_rep(&trx->bts->mo, NM_SEVER_MAJOR, OSMO_EVT_WARN_SW_WARN, "Given ARFCN %u is unsupported", arfcn); - LOGPFOH(DOML, LOGL_NOTICE, foh, "Given ARFCN %u is unsupported.\n", arfcn); + LOGPFOH(DOML, LOGL_NOTICE, foh, "Given ARFCN %u is unsupported\n", arfcn); return oml_fom_ack_nack(msg, NM_NACK_FREQ_NOTAVAIL); } trx->arfcn = arfcn; @@ -940,7 +940,7 @@ /* Check frequency hopping parameters (HSN, MAIO, ARFCN list) */ if (TLVP_PRESENT(&tp, NM_ATT_HSN) || TLVP_PRESENT(&tp, NM_ATT_MAIO)) { if (!osmo_bts_has_feature(bts->features, BTS_FEAT_HOPPING)) { - LOGPFOH(DOML, LOGL_ERROR, foh, "SET CHAN ATTR: Frequency hopping not supported.\n"); + LOGPFOH(DOML, LOGL_ERROR, foh, "SET CHAN ATTR: Frequency hopping not supported\n"); return oml_fom_ack_nack(msg, NM_NACK_SPEC_IMPL_NOTSUPP); } @@ -974,7 +974,7 @@ /* 9.4.52 Starting Time */ if (TLVP_PRESENT(&tp, NM_ATT_START_TIME)) { - LOGPFOH(DOML, LOGL_NOTICE, foh, "SET CHAN ATTR: Starting time not supported.\n"); + LOGPFOH(DOML, LOGL_NOTICE, foh, "SET CHAN ATTR: Starting time not supported\n"); return oml_fom_ack_nack(msg, NM_NACK_SPEC_IMPL_NOTSUPP); } -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32219 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Iaf061bb752f9808a6ab31049b9e87920a6b07f3d Gerrit-Change-Number: 32219 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: bsc: add TC_mscpool_sccp_n_pcstate_attaches_msc
by pespin 05 Apr '23

05 Apr '23
Attention is currently required from: neels, fixeria. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32217 ) Change subject: bsc: add TC_mscpool_sccp_n_pcstate_attaches_msc ...................................................................... Patch Set 1: (1 comment) File bsc/BSC_Tests.ttcn: https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32217/comment/17a88740_f531… PS1, Line 9190: pars1.mscpool.l3_info := valueof(ts_LU_REQ(LU_Type_IMSI_Attach, valueof(ts_MI_IMSI_LV('001010420000001'H)), '00F110'O)); > Gerrit used to highlight only specific parts being changed, but now this appears to be broken. […] ok, so why is the IMSI being changed in this commit? -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32217 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ib4a5330df30a73e744c316898817b2fa3271d75e Gerrit-Change-Number: 32217 Gerrit-PatchSet: 1 Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 05 Apr 2023 12:12:34 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de> Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • ...
  • 226
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.