diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-26 23:59:09 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-06-10 16:15:35 +0200 |
commit | d37dcb9f6854a4d15dd2ba098fcbaa212251684f (patch) | |
tree | 845bbc0057d6736dd84028e4216479624230a5e6 /src/osmo-bsc/abis_rsl.c | |
parent | 43aeeaf05ad814ccab0e93227b1248a20302c8ec (diff) |
RSL: rx and tx VAMOS Channel Number cbits for VAMOS lchans
Add the Osmocom-specific extension to indicate VAMOS shadow lchans in
RSL, in lchan lookup and RSL message transmission.
Note that RR messages containing cbits (Assignment Command, Handover
Command, ...) must *not* send Osmocom specific cbits to the MS. Only the
RSL messages directed to the BTS send Osmocom specific bits.
Related: SYS#5315 OS#4940
Depends: If33c1695922d110c0d2c60d5c0136caf2587194e (libosmocore)
Change-Id: I957eff0d2c33ec795eda75a4bff21965b0179f73
Diffstat (limited to 'src/osmo-bsc/abis_rsl.c')
-rw-r--r-- | src/osmo-bsc/abis_rsl.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c index 9fb53625b..c430a1657 100644 --- a/src/osmo-bsc/abis_rsl.c +++ b/src/osmo-bsc/abis_rsl.c @@ -280,7 +280,7 @@ int rsl_sacch_info_modify(struct gsm_lchan *lchan, uint8_t type, { struct abis_rsl_dchan_hdr *dh; struct msgb *msg; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -304,7 +304,7 @@ int rsl_chan_bs_power_ctrl(struct gsm_lchan *lchan, unsigned int fpc, int db) struct abis_rsl_dchan_hdr *dh; struct msgb *msg; uint8_t bs_power_enc; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -336,7 +336,7 @@ int rsl_chan_ms_power_ctrl(struct gsm_lchan *lchan) { struct abis_rsl_dchan_hdr *dh; struct msgb *msg; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -534,7 +534,7 @@ int rsl_tx_chan_activ(struct gsm_lchan *lchan, uint8_t act_type, uint8_t ho_ref) struct rsl_ie_chan_mode cm; struct gsm48_chan_desc cd; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -554,7 +554,7 @@ int rsl_tx_chan_activ(struct gsm_lchan *lchan, uint8_t act_type, uint8_t ho_ref) } memset(&cd, 0, sizeof(cd)); - rc = gsm48_lchan2chan_desc(&cd, lchan, lchan->activate.tsc); + rc = gsm48_lchan2chan_desc(&cd, lchan, lchan->activate.tsc, true); if (rc) { LOG_LCHAN(lchan, LOGL_ERROR, "Error encoding Channel Number\n"); return rc; @@ -667,7 +667,7 @@ int rsl_chan_mode_modify_req(struct gsm_lchan *lchan) struct rsl_ie_chan_mode cm; struct gsm_bts *bts = lchan->ts->trx->bts; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -721,7 +721,7 @@ int rsl_encryption_cmd(struct msgb *msg) uint8_t l3_len = msg->len; int rc; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -753,7 +753,7 @@ int rsl_deact_sacch(struct gsm_lchan *lchan) struct abis_rsl_dchan_hdr *dh; struct msgb *msg = rsl_msgb_alloc(); - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -775,7 +775,7 @@ int rsl_tx_rf_chan_release(struct gsm_lchan *lchan) struct abis_rsl_dchan_hdr *dh; struct msgb *msg; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -914,7 +914,7 @@ int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci) struct msgb *msg; struct abis_rsl_dchan_hdr *dh; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -939,7 +939,7 @@ int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci) /* Chapter 8.3.1 */ int rsl_data_request(struct msgb *msg, uint8_t link_id) { - int chan_nr = gsm_lchan2chan_nr(msg->lchan); + int chan_nr = gsm_lchan2chan_nr(msg->lchan, true); if (chan_nr < 0) { msgb_free(msg); return chan_nr; @@ -963,7 +963,7 @@ int rsl_data_request(struct msgb *msg, uint8_t link_id) int rsl_establish_request(struct gsm_lchan *lchan, uint8_t link_id) { struct msgb *msg; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -986,7 +986,7 @@ int rsl_release_request(struct gsm_lchan *lchan, uint8_t link_id, { struct msgb *msg; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -1903,7 +1903,7 @@ int rsl_tx_imm_assignment(struct gsm_lchan *lchan) ia->proto_discr = GSM48_PDISC_RR; ia->msg_type = GSM48_MT_RR_IMM_ASS; ia->page_mode = GSM48_PM_SAME; - rc = gsm48_lchan2chan_desc(&ia->chan_desc, lchan, lchan->tsc); + rc = gsm48_lchan2chan_desc(&ia->chan_desc, lchan, lchan->tsc, true); if (rc) { LOG_LCHAN(lchan, LOGL_ERROR, "Error encoding Channel Number\n"); return rc; @@ -2349,7 +2349,7 @@ int rsl_tx_ipacc_crcx(const struct gsm_lchan *lchan) struct msgb *msg; struct abis_rsl_dchan_hdr *dh; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return chan_nr; @@ -2383,7 +2383,7 @@ struct msgb *rsl_make_ipacc_mdcx(const struct gsm_lchan *lchan, uint32_t dest_ip struct abis_rsl_dchan_hdr *dh; uint32_t *att_ip; - int chan_nr = gsm_lchan2chan_nr(lchan); + int chan_nr = gsm_lchan2chan_nr(lchan, true); if (chan_nr < 0) return NULL; @@ -2614,7 +2614,7 @@ static int send_ipacc_style_pdch_act(struct gsm_bts_trx_ts *ts, bool activate) struct msgb *msg; struct abis_rsl_dchan_hdr *dh; - int chan_nr = gsm_pchan2chan_nr(GSM_PCHAN_TCH_F, ts->nr, 0); + int chan_nr = gsm_pchan2chan_nr(GSM_PCHAN_TCH_F, ts->nr, 0, false); if (chan_nr < 0) return chan_nr; |