diff options
-rw-r--r-- | include/osmo-bts/bts_model.h | 3 | ||||
-rw-r--r-- | include/osmo-bts/rsl.h | 2 | ||||
-rw-r--r-- | src/common/rsl.c | 6 | ||||
-rw-r--r-- | src/osmo-bts-litecell15/lc15bts_vty.c | 3 | ||||
-rw-r--r-- | src/osmo-bts-litecell15/oml.c | 7 | ||||
-rw-r--r-- | src/osmo-bts-octphy/l1_oml.c | 7 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/oml.c | 7 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/sysmobts_vty.c | 3 | ||||
-rw-r--r-- | src/osmo-bts-trx/l1_if.c | 24 | ||||
-rw-r--r-- | tests/handover/handover_test.c | 2 | ||||
-rw-r--r-- | tests/stubs.c | 2 |
11 files changed, 45 insertions, 21 deletions
diff --git a/include/osmo-bts/bts_model.h b/include/osmo-bts/bts_model.h index 7e2d0887..7a87d786 100644 --- a/include/osmo-bts/bts_model.h +++ b/include/osmo-bts/bts_model.h @@ -45,6 +45,9 @@ int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan); int bts_model_l1sap_down(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap); +int bts_model_lchan_deactivate(struct gsm_lchan *lchan); +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan); + void bts_model_abis_close(struct gsm_bts *bts); int bts_model_ctrl_cmds_install(struct gsm_bts *bts); diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h index 4311ffdc..d542ff62 100644 --- a/include/osmo-bts/rsl.h +++ b/include/osmo-bts/rsl.h @@ -26,6 +26,8 @@ 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_hando_det(struct gsm_lchan *lchan, uint8_t *ho_delay); +int lchan_deactivate(struct gsm_lchan *lchan); + /* call-back for LAPDm code, called when it wants to send msgs UP */ int lapdm_rll_tx_cb(struct msgb *msg, struct lapdm_entity *le, void *ctx); diff --git a/src/common/rsl.c b/src/common/rsl.c index 6c8f5cc2..880136cd 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -2448,6 +2448,12 @@ static int rsl_rx_ipaccess(struct gsm_bts_trx *trx, struct msgb *msg) return ret; } +int lchan_deactivate(struct gsm_lchan *lchan) +{ + lchan->ciph_state = 0; + return bts_model_lchan_deactivate(lchan); +} + int down_rsl(struct gsm_bts_trx *trx, struct msgb *msg) { struct abis_rsl_common_hdr *rslh = msgb_l2(msg); diff --git a/src/osmo-bts-litecell15/lc15bts_vty.c b/src/osmo-bts-litecell15/lc15bts_vty.c index c5d404cc..0ffe6634 100644 --- a/src/osmo-bts-litecell15/lc15bts_vty.c +++ b/src/osmo-bts-litecell15/lc15bts_vty.c @@ -46,15 +46,14 @@ #include <osmo-bts/gsm_data.h> #include <osmo-bts/phy_link.h> #include <osmo-bts/logging.h> +#include <osmo-bts/bts_model.h> #include <osmo-bts/vty.h> #include "lc15bts.h" #include "l1_if.h" #include "utils.h" - extern int lchan_activate(struct gsm_lchan *lchan); -extern int lchan_deactivate(struct gsm_lchan *lchan); #define TRX_STR "Transceiver related commands\n" "TRX number\n" diff --git a/src/osmo-bts-litecell15/oml.c b/src/osmo-bts-litecell15/oml.c index 689ba70c..8afa2a2f 100644 --- a/src/osmo-bts-litecell15/oml.c +++ b/src/osmo-bts-litecell15/oml.c @@ -1656,10 +1656,9 @@ static void enqueue_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -int lchan_deactivate(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) { lchan_set_state(lchan, LCHAN_S_REL_REQ); - lchan->ciph_state = 0; /* FIXME: do this in common/\*.c */ enqueue_rel_marker(lchan); return 0; } @@ -1674,7 +1673,7 @@ static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -static int lchan_deactivate_sacch(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) { enqueue_sacch_rel_marker(lchan); return 0; @@ -1858,7 +1857,7 @@ int l1if_rsl_deact_sacch(struct gsm_lchan *lchan) /* Only de-activate the SACCH if the lchan is active */ if (lchan->state != LCHAN_S_ACTIVE) return 0; - return lchan_deactivate_sacch(lchan); + return bts_model_lchan_deactivate_sacch(lchan); } int bts_model_trx_deact_rf(struct gsm_bts_trx *trx) diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c index db416bad..58656256 100644 --- a/src/osmo-bts-octphy/l1_oml.c +++ b/src/osmo-bts-octphy/l1_oml.c @@ -884,7 +884,7 @@ static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -static int lchan_deactivate_sacch(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) { enqueue_sacch_rel_marker(lchan); return 0; @@ -895,7 +895,7 @@ int l1if_rsl_deact_sacch(struct gsm_lchan *lchan) /* Only de-activate the SACCH if the lchan is active */ if (lchan->state != LCHAN_S_ACTIVE) return 0; - return lchan_deactivate_sacch(lchan); + return bts_model_lchan_deactivate_sacch(lchan); } @@ -913,10 +913,9 @@ static void enqueue_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -static int lchan_deactivate(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) { lchan_set_state(lchan, LCHAN_S_REL_REQ); - lchan->ciph_state = 0; /* FIXME: do this in common *.c */ enqueue_rel_marker(lchan); return 0; } diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c index ed02c745..b23d9924 100644 --- a/src/osmo-bts-sysmo/oml.c +++ b/src/osmo-bts-sysmo/oml.c @@ -1676,10 +1676,9 @@ static void enqueue_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -int lchan_deactivate(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) { lchan_set_state(lchan, LCHAN_S_REL_REQ); - lchan->ciph_state = 0; /* FIXME: do this in common/\*.c */ enqueue_rel_marker(lchan); return 0; } @@ -1694,7 +1693,7 @@ static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan) queue_sapi_command(lchan, cmd); } -static int lchan_deactivate_sacch(struct gsm_lchan *lchan) +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) { enqueue_sacch_rel_marker(lchan); return 0; @@ -1878,7 +1877,7 @@ int l1if_rsl_deact_sacch(struct gsm_lchan *lchan) /* Only de-activate the SACCH if the lchan is active */ if (lchan->state != LCHAN_S_ACTIVE) return 0; - return lchan_deactivate_sacch(lchan); + return bts_model_lchan_deactivate_sacch(lchan); } int bts_model_trx_deact_rf(struct gsm_bts_trx *trx) diff --git a/src/osmo-bts-sysmo/sysmobts_vty.c b/src/osmo-bts-sysmo/sysmobts_vty.c index c829c497..e67d8be0 100644 --- a/src/osmo-bts-sysmo/sysmobts_vty.c +++ b/src/osmo-bts-sysmo/sysmobts_vty.c @@ -42,15 +42,14 @@ #include <osmo-bts/gsm_data.h> #include <osmo-bts/phy_link.h> #include <osmo-bts/logging.h> +#include <osmo-bts/bts_model.h> #include <osmo-bts/vty.h> #include "femtobts.h" #include "l1_if.h" #include "utils.h" - extern int lchan_activate(struct gsm_lchan *lchan); -extern int lchan_deactivate(struct gsm_lchan *lchan); #define TRX_STR "Transceiver related commands\n" "TRX number\n" diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c index 202a05e1..3d5f52e9 100644 --- a/src/osmo-bts-trx/l1_if.c +++ b/src/osmo-bts-trx/l1_if.c @@ -144,6 +144,23 @@ int check_transceiver_availability(struct gsm_bts *bts, int avail) return 0; } +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) +{ + struct phy_instance *pinst = trx_phy_instance(lchan->ts->trx); + struct trx_l1h *l1h = pinst->u.osmotrx.hdl; + + /* set lchan inactive */ + lchan_set_state(lchan, LCHAN_S_NONE); + + return trx_sched_set_lchan(&l1h->l1s, lchan->nr, LID_DEDIC, 0); +} + +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) +{ + struct phy_instance *pinst = trx_phy_instance(lchan->ts->trx); + struct trx_l1h *l1h = pinst->u.osmotrx.hdl; + return trx_sched_set_lchan(&l1h->l1s, lchan->nr, LID_SACCH, 0); +} /* * transceiver provisioning @@ -646,16 +663,13 @@ int bts_model_l1sap_down(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap) break; } /* deactivate associated channel */ - trx_sched_set_lchan(&l1h->l1s, chan_nr, LID_SACCH, 0); + bts_model_lchan_deactivate_sacch(lchan); if (!l1sap->u.info.u.act_req.sacch_only) { - /* set lchan inactive */ - lchan_set_state(lchan, LCHAN_S_NONE); /* deactivate dedicated channel */ - trx_sched_set_lchan(&l1h->l1s, chan_nr, LID_DEDIC, 0); + lchan_deactivate(lchan); /* confirm only on dedicated channel */ mph_info_chan_confirm(l1h, chan_nr, PRIM_INFO_DEACTIVATE, 0); - lchan->ciph_state = 0; /* FIXME: do this in common/\*.c */ } break; default: diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index d1dc34ad..a7a66d06 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -275,3 +275,5 @@ void trx_get_hlayer1(void) {} int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan) { return 0; } int bts_model_ts_disconnect(struct gsm_bts_trx_ts *ts) { return 0; } int bts_model_ts_connect(struct gsm_bts_trx_ts *ts, enum gsm_phys_chan_config as_pchan) { return 0; } +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) { return 0; } +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) { return 0; } diff --git a/tests/stubs.c b/tests/stubs.c index c680db04..f969cb3c 100644 --- a/tests/stubs.c +++ b/tests/stubs.c @@ -40,6 +40,8 @@ int bts_model_oml_estab(struct gsm_bts *bts) int l1if_set_txpower(struct femtol1_hdl *fl1h, float tx_power) { return 0; } +int bts_model_lchan_deactivate(struct gsm_lchan *lchan) { return 0; } +int bts_model_lchan_deactivate_sacch(struct gsm_lchan *lchan) { return 0; } int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan) { return 0; } |