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

March 2023

  • 1 participants
  • 3642 discussions
[M] Change in osmo-bsc[master]: rsl_tx_ipacc_crcx/mdcx: omit speech mode for CSD
by osmith 01 Mar '23

01 Mar '23
Attention is currently required from: osmith. Hello Jenkins Builder, pespin, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bsc/+/31549 to look at the new patch set (#3). Change subject: rsl_tx_ipacc_crcx/mdcx: omit speech mode for CSD ...................................................................... rsl_tx_ipacc_crcx/mdcx: omit speech mode for CSD Omit the A-bis/IP specific RSL_IE_IPAC_SPEECH_MODE, as it doesn't make sense for circuit switched data. Related: OS#4393 Change-Id: I6641b713177276bcf798f08123e1dd2e88ffdce6 --- M src/osmo-bsc/abis_rsl.c M src/osmo-bsc/lchan_rtp_fsm.c 2 files changed, 56 insertions(+), 22 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/49/31549/3 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31549 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I6641b713177276bcf798f08123e1dd2e88ffdce6 Gerrit-Change-Number: 31549 Gerrit-PatchSet: 3 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: laforge <laforge(a)osmocom.org> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[L] Change in osmo-bsc[master]: bssmap_handle_ass_req_ct_data: implement
by osmith 01 Mar '23

01 Mar '23
Attention is currently required from: osmith. Hello Jenkins Builder, laforge, pespin, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bsc/+/31547 to look at the new patch set (#3). Change subject: bssmap_handle_ass_req_ct_data: implement ...................................................................... bssmap_handle_ass_req_ct_data: implement Handle assignment requests for CSD. In this initial version, the code for non-transparent data mode is a stub. Related: OS#5763 Change-Id: I350bea15fd2158eb6edc9bc92f2dca48930736e9 --- M TODO-RELEASE M include/osmocom/bsc/codec_pref.h A include/osmocom/bsc/data_rate_pref.h M src/osmo-bsc/Makefile.am A src/osmo-bsc/data_rate_pref.c M src/osmo-bsc/osmo_bsc_bssap.c 6 files changed, 280 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/47/31547/3 -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31547 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I350bea15fd2158eb6edc9bc92f2dca48930736e9 Gerrit-Change-Number: 31547 Gerrit-PatchSet: 3 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in osmo-bsc[master]: tests/handover: wrap functions from gsm_08_08.c
by osmith 01 Mar '23

01 Mar '23
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31621 ) Change subject: tests/handover: wrap functions from gsm_08_08.c ...................................................................... tests/handover: wrap functions from gsm_08_08.c Prepare to include gsm_08_08.h in more files in the following patch, without wrapping these functions it won't build anymore. Remove the unused stub for bsc_assign_compl() while at it. Related: OS#4393 Change-Id: I6cb84f493204e393fd719148f54b8bbc173588a4 --- M tests/handover/Makefile.am M tests/handover/handover_test.c 2 files changed, 37 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/21/31621/1 diff --git a/tests/handover/Makefile.am b/tests/handover/Makefile.am index 123fd61..b5726b6 100644 --- a/tests/handover/Makefile.am +++ b/tests/handover/Makefile.am @@ -36,6 +36,11 @@ handover_test_LDFLAGS = \ -Wl,--wrap=abis_rsl_sendmsg \ + -Wl,--wrap=bsc_cipher_mode_compl \ + -Wl,--wrap=bsc_cm_update \ + -Wl,--wrap=bsc_compl_l3 \ + -Wl,--wrap=bsc_dtap \ + -Wl,--wrap=bsc_sapi_n_reject \ -Wl,--wrap=osmo_mgcpc_ep_ci_request \ $(NULL) diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 2c54526..76ea9ed 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -1745,15 +1745,27 @@ void trau_send_frame() {} /* Stub */ int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct msgb *msg) { return 0; } -void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {} -void bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_a5_n) {} -int bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel) + +void __real_bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause); +void __wrap_bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, uint8_t dlci, enum gsm0808_cause cause) {} + +void __real_bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_a5_n); +void __wrap_bsc_cipher_mode_compl(struct gsm_subscriber_connection *conn, struct msgb *msg, uint8_t chosen_a5_n) {} + +int __real_bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel); +int __wrap_bsc_compl_l3(struct gsm_lchan *lchan, struct msgb *msg, uint16_t chosen_channel) { return 0; } -void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg) {} -void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause) {} -void bsc_cm_update(struct gsm_subscriber_connection *conn, + +void __real_bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg); +void __wrap_bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg) {} + +void __real_bsc_cm_update(struct gsm_subscriber_connection *conn, + const uint8_t *cm2, uint8_t cm2_len, + const uint8_t *cm3, uint8_t cm3_len); +void __wrap_bsc_cm_update(struct gsm_subscriber_connection *conn, const uint8_t *cm2, uint8_t cm2_len, const uint8_t *cm3, uint8_t cm3_len) {} + const char *osmo_mgcpc_ep_name(const struct osmo_mgcpc_ep *ep) { return "fake-ep"; -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31621 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I6cb84f493204e393fd719148f54b8bbc173588a4 Gerrit-Change-Number: 31621 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmo-bsc[master]: requires_voice_stream -> ch_indctr
by osmith 01 Mar '23

01 Mar '23
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31622 ) Change subject: requires_voice_stream -> ch_indctr ...................................................................... requires_voice_stream -> ch_indctr Use the full gsm0808_chan_indicator value throughout the lchan related structs (assignment_fsm_data, gsm_lchan, lchan_activate_info, lchan_modify_info) instead of reducing it to the boolean requires_voice_stream. This is needed so we don't lose the information whether an lchan was requested for data or speech (both need an rtp stream). Add a new bsc_requires_rtp_stream function and use it in conditionals like the previous requires_voice_stream. Related: OS#4393 Change-Id: I1538c1e6d5cd61559af7c1e2860afd0269dda367 --- M doc/lchan.msc M include/osmocom/bsc/gsm_08_08.h M include/osmocom/bsc/gsm_data.h M include/osmocom/bsc/lchan.h M src/osmo-bsc/assignment_fsm.c M src/osmo-bsc/bsc_vty.c M src/osmo-bsc/gsm_08_08.c M src/osmo-bsc/handover_fsm.c M src/osmo-bsc/lchan_fsm.c M src/osmo-bsc/osmo_bsc_bssap.c 10 files changed, 92 insertions(+), 56 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/22/31622/1 diff --git a/doc/lchan.msc b/doc/lchan.msc index b35c310..124037e 100644 --- a/doc/lchan.msc +++ b/doc/lchan.msc @@ -15,7 +15,7 @@ ts note ts [label="A dyn TS may be in PDCH mode and will asynchronously switch off PDCH first. A non-dynamic TS is ready immediately."]; |||; - --- [label="IF requires_voice_stream"]; + --- [label="IF requires_rtp_stream"]; lchan -> rtp [label="lchan_rtp_fsm_start()"]; rtp abox rtp [label="allocate\n LCHAN_RTP_ST_\nWAIT_MGW_ENDPOINT_\nAVAILABLE"]; --- [label="IF no endpoint-CI yet"]; @@ -29,7 +29,7 @@ rtp note mgwep [label="The CRCX OK has assigned us a new endpoint CI number"]; rtp abox rtp [label="LCHAN_RTP_ST_WAIT_LCHAN_READY"]; --- [label="END: no endpoint-CI yet"]; - --- [label="END: requires_voice_stream"]; + --- [label="END: requires_rtp_stream"]; |||; ...; ts -> lchan [label="LCHAN_EV_TS_READY"]; @@ -60,7 +60,7 @@ lchan abox lchan [label="LCHAN_ST_WAIT_\nRLL_RTP_ESTABLISH\nT3101"]; |||; |||; - --- [label="IF requires_voice_stream"]; + --- [label="IF requires_rtp_stream"]; lchan -> rtp [label="LCHAN_RTP_EV_LCHAN_READY"]; |||; --- [label="IF ip.access style BTS"]; @@ -99,7 +99,7 @@ ...; lchan -> rtp [label="LCHAN_RTP_EV_ESTABLISHED\nvia gscon_change_primary_lchan()"]; rtp abox rtp [label="LCHAN_RTP_ST_\nESTABLISHED"]; - --- [label="END: requires_voice_stream"]; + --- [label="END: requires_rtp_stream"]; |||; |||; @@ -116,7 +116,7 @@ lchan rbox lchan [label="dispatch\nHO_EV_LCHAN_ESTABLISHED\n(see Handover FSM diagrams)"]; --- [label="END"]; ...; - --- [label="IF requires_voice_stream"]; + --- [label="IF requires_rtp_stream"]; lchan rbox lchan [label="Assignment or Handover FSM:"]; lchan -> mgwep [label="CRCX/MDCX to-MSC"]; ...; @@ -125,7 +125,7 @@ lchan -> rtp [label="LCHAN_RTP_EV_ESTABLISHED"]; rtp abox rtp [label="LCHAN_RTP_ST_\nESTABLISHED"]; rtp box rtp [label="Forget any Rollback info"]; - --- [label="END: requires_voice_stream"]; + --- [label="END: requires_rtp_stream"]; ...; ...; diff --git a/include/osmocom/bsc/gsm_08_08.h b/include/osmocom/bsc/gsm_08_08.h index 07f0821..21f92a7 100644 --- a/include/osmocom/bsc/gsm_08_08.h +++ b/include/osmocom/bsc/gsm_08_08.h @@ -13,3 +13,4 @@ void bsc_cm_update(struct gsm_subscriber_connection *conn, const uint8_t *cm2, uint8_t cm2_len, const uint8_t *cm3, uint8_t cm3_len); +bool bsc_requires_rtp_stream(enum gsm0808_chan_indicator ch_indctr); diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index b77a16e..2747234 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -179,7 +179,7 @@ */ struct assignment_request req; - bool requires_voice_stream; + enum gsm0808_chan_indicator ch_indctr; struct channel_mode_and_rate selected_ch_mode_rate; struct osmo_fsm_inst *fi; diff --git a/include/osmocom/bsc/lchan.h b/include/osmocom/bsc/lchan.h index eef3140..a1eacef 100644 --- a/include/osmocom/bsc/lchan.h +++ b/include/osmocom/bsc/lchan.h @@ -122,7 +122,7 @@ struct gsm_subscriber_connection *for_conn; struct channel_mode_and_rate ch_mode_rate; struct gsm_encr encr; - bool requires_voice_stream; + enum gsm0808_chan_indicator ch_indctr; bool wait_before_switching_rtp; /*< true = requires LCHAN_EV_READY_TO_SWITCH_RTP */ uint16_t msc_assigned_cic; /* During intra-BSC handover, we keep the MGW endpoint intact and just re-route to the new lchan. This @@ -159,7 +159,7 @@ struct lchan_modify_info { enum lchan_modify_for modify_for; struct channel_mode_and_rate ch_mode_rate; - bool requires_voice_stream; + enum gsm0808_chan_indicator ch_indctr; uint16_t msc_assigned_cic; /* The TSC Set to use if 'use' is true, otherwise automatically determine the TSC Set value to use. Valid range @@ -216,6 +216,7 @@ struct channel_mode_and_rate ch_mode_rate; struct gsm48_multi_rate_conf mr_conf_filtered; + enum gsm0808_chan_indicator ch_indctr; bool activ_ack; /*< true as soon as RSL Chan Activ Ack is received */ bool immediate_assignment_sent; /*! This flag ensures that when an lchan activation has succeeded, and we have already @@ -239,6 +240,7 @@ struct channel_mode_and_rate ch_mode_rate; struct gsm48_multi_rate_conf mr_conf_filtered; + enum gsm0808_chan_indicator ch_indctr; /* Actually used TSC Set. */ int tsc_set; /* Actually used TSC. */ @@ -324,6 +326,7 @@ * channel_mode_and_rate. */ struct channel_mode_and_rate current_ch_mode_rate; struct gsm48_multi_rate_conf current_mr_conf; + enum gsm0808_chan_indicator current_ch_indctr; /* Circuit-Switched TSC Set in use, or -1 if no specific TSC Set was requested. The valid range is 1-4 as * described in the spec 3GPP TS 45.002. */ diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c index d23d726..4a26d41 100644 --- a/src/osmo-bsc/assignment_fsm.c +++ b/src/osmo-bsc/assignment_fsm.c @@ -194,8 +194,8 @@ return; } - /* Generate voice related fields */ - if (conn->assignment.requires_voice_stream) { + /* Generate rtp related fields */ + if (bsc_requires_rtp_stream(conn->assignment.ch_indctr)) { perm_spch = gsm0808_permitted_speech(lchan->type, lchan->current_ch_mode_rate.chan_mode); if (gscon_is_aoip(conn)) { @@ -238,7 +238,7 @@ return; } - if (gscon_is_aoip(conn) && conn->assignment.requires_voice_stream && + if (gscon_is_aoip(conn) && bsc_requires_rtp_stream(conn->assignment.ch_indctr) && conn->assignment.req.use_osmux) _gsm0808_ass_compl_extend_osmux(resp, osmux_cid); @@ -523,7 +523,7 @@ if (check_chan_mode_rate_against_ch_indctr(conn) < 0) return; - conn->assignment.requires_voice_stream = (req->ch_indctr != GSM0808_CHAN_SIGN); + conn->assignment.ch_indctr = req->ch_indctr; if (!req->target_lchan && reuse_existing_lchan(conn)) { /* The already existing lchan is suitable for this mode */ @@ -648,7 +648,7 @@ .for_conn = conn, .ch_mode_rate = conn->assignment.selected_ch_mode_rate, .encr = conn->lchan->encr, - .requires_voice_stream = conn->assignment.requires_voice_stream, + .ch_indctr = conn->assignment.ch_indctr, .msc_assigned_cic = req->msc_assigned_cic, .re_use_mgw_endpoint_from_lchan = conn->lchan, .ta = conn->lchan->last_ta, @@ -764,7 +764,7 @@ static void assignment_fsm_post_lchan_established(struct osmo_fsm_inst *fi) { struct gsm_subscriber_connection *conn = assignment_fi_conn(fi); - if (conn->assignment.requires_voice_stream) + if (bsc_requires_rtp_stream(conn->assignment.ch_indctr)) assignment_fsm_state_chg(ASSIGNMENT_ST_WAIT_MGW_ENDPOINT_TO_MSC); else assignment_success(conn); @@ -774,7 +774,7 @@ { struct gsm_subscriber_connection *conn = assignment_fi_conn(fi); - OSMO_ASSERT(conn->assignment.requires_voice_stream); + OSMO_ASSERT(bsc_requires_rtp_stream(conn->assignment.ch_indctr)); LOG_ASSIGNMENT(conn, LOGL_DEBUG, "Connecting MGW endpoint to the MSC's RTP port: %s:%u\n", @@ -838,7 +838,7 @@ struct lchan_modify_info modif_info = { .modify_for = MODIFY_FOR_ASSIGNMENT, .ch_mode_rate = conn->assignment.selected_ch_mode_rate, - .requires_voice_stream = conn->assignment.requires_voice_stream, + .ch_indctr = conn->assignment.ch_indctr, .msc_assigned_cic = req->msc_assigned_cic, /* keep previous training sequence code. TSC is always present, TSC Set may or may not be an explicit * value. */ diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c index 4b7f24c..8eb2e44 100644 --- a/src/osmo-bsc/bsc_vty.c +++ b/src/osmo-bsc/bsc_vty.c @@ -862,7 +862,7 @@ struct lchan_modify_info info = { .modify_for = MODIFY_FOR_VTY, .ch_mode_rate = lchan->current_ch_mode_rate, - .requires_voice_stream = (lchan->fi_rtp != NULL), + .ch_indctr = lchan->current_ch_indctr, .vamos = vamos, .tsc_set = { .present = (tsc_set >= 0), @@ -1625,7 +1625,7 @@ } info.activ_for = ACTIVATE_FOR_VTY; - info.requires_voice_stream = false; + info.ch_indctr = GSM0808_CHAN_SIGN; info.ch_mode_rate.chan_rate = chan_t_to_chan_rate(lchan_t); if (activate == 2 || lchan->vamos.is_secondary) { diff --git a/src/osmo-bsc/gsm_08_08.c b/src/osmo-bsc/gsm_08_08.c index a2bab4b..75c0cb1 100644 --- a/src/osmo-bsc/gsm_08_08.c +++ b/src/osmo-bsc/gsm_08_08.c @@ -607,3 +607,14 @@ if (rc != 0) msgb_free(resp); } + +bool bsc_requires_rtp_stream(enum gsm0808_chan_indicator ch_indctr) +{ + switch (ch_indctr) { + case GSM0808_CHAN_SPEECH: + case GSM0808_CHAN_DATA: + return true; + default: + return false; + } +} diff --git a/src/osmo-bsc/handover_fsm.c b/src/osmo-bsc/handover_fsm.c index 251ea5b..2c74e20 100644 --- a/src/osmo-bsc/handover_fsm.c +++ b/src/osmo-bsc/handover_fsm.c @@ -409,7 +409,7 @@ .for_conn = conn, .ch_mode_rate = conn->lchan->current_ch_mode_rate, .encr = conn->lchan->encr, - .requires_voice_stream = conn->lchan->mgw_endpoint_ci_bts ? true : false, + .ch_indctr = conn->lchan->current_ch_indctr, .msc_assigned_cic = conn->ho.inter_bsc_in.msc_assigned_cic, .re_use_mgw_endpoint_from_lchan = conn->lchan, .wait_before_switching_rtp = true, @@ -630,18 +630,6 @@ return true; } -static bool chan_mode_is_tch(enum gsm48_chan_mode mode) -{ - switch (gsm48_chan_mode_to_non_vamos(mode)) { - case GSM48_CMODE_SPEECH_V1: - case GSM48_CMODE_SPEECH_EFR: - case GSM48_CMODE_SPEECH_AMR: - return true; - default: - return false; - } -} - void handover_start_inter_bsc_in(struct gsm_subscriber_connection *conn, struct msgb *ho_request_msg) { @@ -739,7 +727,7 @@ .activ_for = ACTIVATE_FOR_HANDOVER, .for_conn = conn, .ch_mode_rate = ch_mode_rate, - .requires_voice_stream = chan_mode_is_tch(ch_mode_rate.chan_mode), + .ch_indctr = req->ct.ch_indctr, .msc_assigned_cic = req->msc_assigned_cic, }; @@ -943,7 +931,7 @@ ho_perf_params.chosen_encr_alg = ALG_A5_NR_TO_BSSAP(lchan->encr.alg_a5_n); ho_perf_params.chosen_encr_alg_present = true; - if (ho->new_lchan->activate.info.requires_voice_stream) { + if (bsc_requires_rtp_stream(ho->new_lchan->activate.info.ch_indctr)) { /* Speech Version (chosen) 3.2.2.51 */ ho_perf_params.speech_version_chosen = gsm0808_permitted_speech(lchan->type, lchan->current_ch_mode_rate.chan_mode); @@ -1129,7 +1117,7 @@ * So create an MSC side endpoint CI only if a voice lchan is established for an incoming inter-BSC * handover on AoIP. Otherwise go on to send a Handover Command and wait for the Detect. */ - if (ho->new_lchan->activate.info.requires_voice_stream + if (bsc_requires_rtp_stream(ho->new_lchan->activate.info.ch_indctr) && (ho->scope & HO_INTER_BSC_IN) && gscon_is_aoip(conn)) ho_fsm_state_chg(HO_ST_WAIT_MGW_ENDPOINT_TO_MSC); diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c index ab3fbdd..297a94a 100644 --- a/src/osmo-bsc/lchan_fsm.c +++ b/src/osmo-bsc/lchan_fsm.c @@ -35,6 +35,7 @@ #include <osmocom/bsc/abis_rsl.h> #include <osmocom/bsc/bsc_rll.h> #include <osmocom/bsc/gsm_04_08_rr.h> +#include <osmocom/bsc/gsm_08_08.h> #include <osmocom/bsc/assignment_fsm.h> #include <osmocom/bsc/handover_fsm.h> #include <osmocom/bsc/bsc_msc_data.h> @@ -692,6 +693,8 @@ return -EINVAL; } } + + lchan->activate.ch_indctr = lchan->activate.info.ch_indctr; return 0; } @@ -720,6 +723,7 @@ struct gsm_lchan *old_lchan = lchan->activate.info.re_use_mgw_endpoint_from_lchan; struct lchan_activate_info *info = &lchan->activate.info; int ms_power_dbm = bts->ms_max_power; + bool requires_rtp_stream; if (lchan->release.requested) { lchan_fail("Release requested while activating"); @@ -763,12 +767,13 @@ lchan->activate.tsc = lchan->activate.info.tsc.present ? lchan->activate.info.tsc.val : gsm_ts_tsc(lchan->ts); use_mgwep_ci = lchan_use_mgw_endpoint_ci_bts(lchan); + requires_rtp_stream = bsc_requires_rtp_stream(lchan->activate.info.ch_indctr); LOG_LCHAN(lchan, LOGL_INFO, - "Activation requested: %s voice=%s MGW-ci=%s type=%s tch-mode=%s encr-alg=A5/%u ck=%s\n", + "Activation requested: %s rtp=%s MGW-ci=%s type=%s tch-mode=%s encr-alg=A5/%u ck=%s\n", lchan_activate_mode_name(lchan->activate.info.activ_for), - lchan->activate.info.requires_voice_stream ? "yes" : "no", - lchan->activate.info.requires_voice_stream ? + requires_rtp_stream ? "yes" : "no", + requires_rtp_stream ? (use_mgwep_ci ? osmo_mgcpc_ep_ci_name(use_mgwep_ci) : "new") : "none", gsm_chan_t_name(lchan->type), @@ -782,7 +787,7 @@ osmo_fsm_inst_dispatch(lchan->ts->fi, TS_EV_LCHAN_REQUESTED, lchan); /* Prepare an MGW endpoint CI if appropriate. */ - if (lchan->activate.info.requires_voice_stream) + if (requires_rtp_stream) lchan_rtp_fsm_start(lchan); if (lchan->activate.info.imm_ass_time == IMM_ASS_TIME_PRE_TS_ACK) { @@ -941,6 +946,7 @@ { lchan->current_ch_mode_rate = lchan->activate.ch_mode_rate; lchan->current_mr_conf = lchan->activate.mr_conf_filtered; + lchan->current_ch_indctr = lchan->activate.ch_indctr; lchan->vamos.enabled = lchan->activate.info.vamos; lchan->tsc_set = lchan->activate.tsc_set; lchan->tsc = lchan->activate.tsc; @@ -1022,16 +1028,17 @@ static void lchan_fsm_wait_rll_rtp_establish_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct gsm_lchan *lchan = lchan_fi_lchan(fi); + bool requires_rtp_stream = bsc_requires_rtp_stream(lchan->activate.info.ch_indctr); + if (lchan->fi_rtp) osmo_fsm_inst_dispatch(lchan->fi_rtp, LCHAN_RTP_EV_LCHAN_READY, 0); /* Prepare an MGW endpoint CI if appropriate (late). */ - else if (lchan->activate.info.requires_voice_stream) + else if (requires_rtp_stream) lchan_rtp_fsm_start(lchan); /* When activating a channel for VTY, skip waiting for activity from - * lchan_rtp_fsm, but only if no voice stream is required. */ - if (lchan->activate.info.activ_for == ACTIVATE_FOR_VTY && - !lchan->activate.info.requires_voice_stream) { + * lchan_rtp_fsm, but only if no rtp stream is required. */ + if (lchan->activate.info.activ_for == ACTIVATE_FOR_VTY && !requires_rtp_stream) { lchan_fsm_state_chg(LCHAN_ST_ESTABLISHED); } } @@ -1039,14 +1046,15 @@ static void lchan_fsm_wait_rll_rtp_establish(struct osmo_fsm_inst *fi, uint32_t event, void *data) { struct gsm_lchan *lchan = lchan_fi_lchan(fi); + bool requires_rtp_stream = bsc_requires_rtp_stream(lchan->activate.info.ch_indctr); + switch (event) { case LCHAN_EV_RLL_ESTABLISH_IND: - if (!lchan->activate.info.requires_voice_stream - || lchan_rtp_established(lchan)) { + if (!requires_rtp_stream || lchan_rtp_established(lchan)) { LOG_LCHAN(lchan, LOGL_DEBUG, "%s\n", - (lchan->activate.info.requires_voice_stream ? + (requires_rtp_stream ? "RTP already established earlier" : "no voice stream required")); lchan_fsm_state_chg(LCHAN_ST_ESTABLISHED); } @@ -1121,19 +1129,19 @@ /* The Channel Mode Modify was ACKed, now the requested values become the accepted and used values. */ lchan->current_ch_mode_rate = lchan->modify.ch_mode_rate; lchan->current_mr_conf = lchan->modify.mr_conf_filtered; + lchan->current_ch_indctr = lchan->modify.ch_indctr; lchan->tsc_set = lchan->modify.tsc_set; lchan->tsc = lchan->modify.tsc; lchan->vamos.enabled = lchan->modify.info.vamos; - if (lchan->modify.info.requires_voice_stream - && !lchan->fi_rtp) { + if (bsc_requires_rtp_stream(lchan->modify.info.ch_indctr) && !lchan->fi_rtp) { /* Continue with RTP stream establishing as done in lchan_activate(). Place the requested values in * lchan->activate.info and continue with voice stream setup. */ lchan->activate.info = (struct lchan_activate_info){ .activ_for = ACTIVATE_FOR_MODE_MODIFY_RTP, .for_conn = lchan->conn, .ch_mode_rate = lchan->modify.ch_mode_rate, - .requires_voice_stream = true, + .ch_indctr = lchan->modify.info.ch_indctr, .msc_assigned_cic = lchan->modify.info.msc_assigned_cic, }; if (lchan_activate_set_ch_mode_rate_and_mr_config(lchan)) @@ -1242,6 +1250,7 @@ struct gsm_lchan *lchan = lchan_fi_lchan(fi); struct lchan_modify_info *modif_info; struct osmo_mgcpc_ep_ci *use_mgwep_ci; + bool requires_rtp_stream = bsc_requires_rtp_stream(lchan->modify.info.ch_indctr); switch (event) { case LCHAN_EV_RLL_ESTABLISH_IND: @@ -1292,6 +1301,8 @@ } } + lchan->modify.ch_indctr = lchan->modify.info.ch_indctr; + /* If enabling VAMOS mode and no specific TSC Set was selected, make sure to select a sane TSC Set by * default: Set 1 for the primary and Set 2 for the shadow lchan. For non-VAMOS lchans, TSC Set 1. */ if (lchan->modify.info.tsc_set.present) @@ -1304,10 +1315,10 @@ lchan->modify.tsc = lchan->modify.info.tsc.present ? lchan->modify.info.tsc.val : gsm_ts_tsc(lchan->ts); LOG_LCHAN(lchan, LOGL_INFO, - "Modification requested: %s voice=%s MGW-ci=%s type=%s tch-mode=%s tsc=%d/%u\n", + "Modification requested: %s rtp=%s MGW-ci=%s type=%s tch-mode=%s tsc=%d/%u\n", lchan_modify_for_name(lchan->modify.info.modify_for), - lchan->modify.info.requires_voice_stream ? "yes" : "no", - lchan->modify.info.requires_voice_stream ? + requires_rtp_stream ? "yes" : "no", + requires_rtp_stream ? (use_mgwep_ci ? osmo_mgcpc_ep_ci_name(use_mgwep_ci) : "new") : "none", gsm_chan_t_name(lchan->type), @@ -1809,9 +1820,9 @@ lchan->release.rsl_error_cause = RSL_ERR_INTERWORKING; lchan->release.rr_cause = bsc_gsm48_rr_cause_from_rsl_cause(lchan->release.rsl_error_cause); if (fi->state == LCHAN_ST_WAIT_RLL_RTP_ESTABLISH) { - lchan_fail("Timeout (rll_ready=%s,voice_require=%s,voice_ready=%s)", + lchan_fail("Timeout (rll_ready=%s,rtp_require=%s,voice_ready=%s)", (lchan->sapis[0] != LCHAN_SAPI_UNUSED) ? "yes" : "no", - lchan->activate.info.requires_voice_stream ? "yes" : "no", + bsc_requires_rtp_stream(lchan->activate.info.ch_indctr) ? "yes" : "no", lchan_rtp_established(lchan) ? "yes" : "no"); } else { lchan_fail("Timeout"); diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index 7ec10c3..7dbe03f 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -29,6 +29,7 @@ #include <osmocom/bsc/bsc_subscriber.h> #include <osmocom/bsc/paging.h> #include <osmocom/bsc/gsm_04_08_rr.h> +#include <osmocom/bsc/gsm_08_08.h> #include <osmocom/bsc/bsc_subscr_conn_fsm.h> #include <osmocom/bsc/codec_pref.h> #include <osmocom/bsc/data_rate_pref.h> @@ -1618,7 +1619,7 @@ new_lchan->current_ch_mode_rate.chan_mode), }; - if (gscon_is_aoip(conn) && new_lchan->activate.info.requires_voice_stream) { + if (gscon_is_aoip(conn) && bsc_requires_rtp_stream(new_lchan->activate.info.ch_indctr)) { struct osmo_sockaddr_str to_msc_rtp; const struct mgcp_conn_peer *rtp_info = osmo_mgcpc_ep_ci_get_rtp_info(conn->user_plane.mgw_endpoint_ci_msc); int rc; @@ -1693,7 +1694,7 @@ }; /* speech_codec_chosen */ - if (ho->new_lchan->activate.info.requires_voice_stream && gscon_is_aoip(conn)) { + if (bsc_requires_rtp_stream(ho->new_lchan->activate.info.ch_indctr) && gscon_is_aoip(conn)) { int perm_spch = gsm0808_permitted_speech(lchan->type, lchan->current_ch_mode_rate.chan_mode); params.speech_codec_chosen_present = true; rc = gsm0808_speech_codec_from_chan_type(&params.speech_codec_chosen, perm_spch); -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31622 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I1538c1e6d5cd61559af7c1e2860afd0269dda367 Gerrit-Change-Number: 31622 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in libosmocore[master]: rsl: put values for Channel Mode into enums
by osmith 01 Mar '23

01 Mar '23
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/31620 ) Change subject: rsl: put values for Channel Mode into enums ...................................................................... rsl: put values for Channel Mode into enums Related: OS#4393 Change-Id: I25bfd02aa1428a35492b20376a31635a442e545f --- M include/osmocom/gsm/protocol/gsm_08_58.h 1 file changed, 59 insertions(+), 41 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/20/31620/1 diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h index 85c9b35..6d7a6a3 100644 --- a/include/osmocom/gsm/protocol/gsm_08_58.h +++ b/include/osmocom/gsm/protocol/gsm_08_58.h @@ -496,51 +496,59 @@ RSL_CMOD_SPD_DATA = 0x02, RSL_CMOD_SPD_SIGN = 0x03, }; -#define RSL_CMOD_CRT_SDCCH 0x01 -#define RSL_CMOD_CRT_TCH_Bm 0x08 /* full-rate */ -#define RSL_CMOD_CRT_TCH_Lm 0x09 /* half-rate */ -#define RSL_CMOD_CRT_TCH_BI_Bm 0x0a /* full-rate: bi-directional (multislot) */ -#define RSL_CMOD_CRT_TCH_UNI_Bm 0x1a /* full-rate: uni-directional (multislot) */ -#define RSL_CMOD_CRT_TCH_GROUP_Bm 0x18 /* full-rate: group call channel */ -#define RSL_CMOD_CRT_TCH_GROUP_Lm 0x19 /* half-rate: group call channel */ -#define RSL_CMOD_CRT_TCH_BCAST_Bm 0x28 /* full-rate: broadcast call channel */ -#define RSL_CMOD_CRT_TCH_BCAST_Lm 0x29 /* half-rate: broadcast call channel */ -#define RSL_CMOD_CRT_OSMO_TCH_VAMOS_Bm 0x88 /* full-rate in VAMOS mode */ -#define RSL_CMOD_CRT_OSMO_TCH_VAMOS_Lm 0x89 /* half-rate in VAMOS mode */ -/* Speech */ -#define RSL_CMOD_SP_GSM1 0x01 -#define RSL_CMOD_SP_GSM2 0x11 -#define RSL_CMOD_SP_GSM3 0x21 -#define RSL_CMOD_SP_GSM4 0x31 -#define RSL_CMOD_SP_GSM5 0x09 -#define RSL_CMOD_SP_GSM6 0x0d -/* non-transparent data (asymmetric) */ -#define RSL_CMOD_CSD_NTA_43k5_14k5 0x61 /* asymmetric 43.5 kbit/s (DL) + 14.5 kbit/s (UL) */ -#define RSL_CMOD_CSD_NTA_29k0_14k5 0x62 /* asymmetric 29.0 kbit/s (DL) + 14.5 kbit/s (UL) */ -#define RSL_CMOD_CSD_NTA_43k5_29k0 0x63 /* asymmetric 43.5 kbit/s (DL) + 29.0 kbit/s (UL) */ -#define RSL_CMOD_CSD_NTA_14k5_43k5 0x69 /* asymmetric 14.5 kbit/s (DL) + 43.5 kbit/s (UL) */ -#define RSL_CMOD_CSD_NTA_14k5_29k0 0x6a /* asymmetric 14.5 kbit/s (DL) + 29.0 kbit/s (UL) */ -#define RSL_CMOD_CSD_NTA_29k0_43k5 0x6b /* asymmetric 29.0 kbit/s (DL) + 43.5 kbit/s (UL) */ -/* non-transparent data */ -#define RSL_CMOD_CSD_NT_43k5 0x74 -#define RSL_CMOD_CSD_NT_28k8 0x71 -#define RSL_CMOD_CSD_NT_14k5 0x58 -#define RSL_CMOD_CSD_NT_12k0 0x50 -#define RSL_CMOD_CSD_NT_6k0 0x51 +/*! Channel rate and type */ +enum rsl_cmod_crt { + RSL_CMOD_CRT_SDCCH = 0x01, + RSL_CMOD_CRT_TCH_Bm = 0x08, /* full-rate */ + RSL_CMOD_CRT_TCH_Lm = 0x09, /* half-rate */ + RSL_CMOD_CRT_TCH_BI_Bm = 0x0a, /* full-rate: bi-directional (multislot) */ + RSL_CMOD_CRT_TCH_UNI_Bm = 0x1a, /* full-rate: uni-directional (multislot) */ + RSL_CMOD_CRT_TCH_GROUP_Bm = 0x18, /* full-rate: group call channel */ + RSL_CMOD_CRT_TCH_GROUP_Lm = 0x19, /* half-rate: group call channel */ + RSL_CMOD_CRT_TCH_BCAST_Bm = 0x28, /* full-rate: broadcast call channel */ + RSL_CMOD_CRT_TCH_BCAST_Lm = 0x29, /* half-rate: broadcast call channel */ + RSL_CMOD_CRT_OSMO_TCH_VAMOS_Bm = 0x88, /* full-rate in VAMOS mode */ + RSL_CMOD_CRT_OSMO_TCH_VAMOS_Lm = 0x89, /* half-rate in VAMOS mode */ +}; +/*! Speech */ +enum rsl_cmod_sp { + RSL_CMOD_SP_GSM1 = 0x01, + RSL_CMOD_SP_GSM2 = 0x11, + RSL_CMOD_SP_GSM3 = 0x21, + RSL_CMOD_SP_GSM4 = 0x31, + RSL_CMOD_SP_GSM5 = 0x09, + RSL_CMOD_SP_GSM6 = 0x0d, +}; +/*! Non-transparent data */ +enum rsl_cmod_csd_nt { + RSL_CMOD_CSD_NTA_43k5_14k5 = 0x61, /* asymmetric 43.5 kbit/s (DL) + 14.5 kbit/s (UL) */ + RSL_CMOD_CSD_NTA_29k0_14k5 = 0x62, /* asymmetric 29.0 kbit/s (DL) + 14.5 kbit/s (UL) */ + RSL_CMOD_CSD_NTA_43k5_29k0 = 0x63, /* asymmetric 43.5 kbit/s (DL) + 29.0 kbit/s (UL) */ + RSL_CMOD_CSD_NTA_14k5_43k5 = 0x69, /* asymmetric 14.5 kbit/s (DL) + 43.5 kbit/s (UL) */ + RSL_CMOD_CSD_NTA_14k5_29k0 = 0x6a, /* asymmetric 14.5 kbit/s (DL) + 29.0 kbit/s (UL) */ + RSL_CMOD_CSD_NTA_29k0_43k5 = 0x6b, /* asymmetric 29.0 kbit/s (DL) + 43.5 kbit/s (UL) */ + RSL_CMOD_CSD_NT_43k5 = 0x74, + RSL_CMOD_CSD_NT_28k8 = 0x71, + RSL_CMOD_CSD_NT_14k5 = 0x58, + RSL_CMOD_CSD_NT_12k0 = 0x50, + RSL_CMOD_CSD_NT_6k0 = 0x51, +}; /* legacy #defines with wrong name */ #define RSL_CMOD_SP_NT_14k5 RSL_CMOD_CSD_NT_14k5 #define RSL_CMOD_SP_NT_12k0 RSL_CMOD_CSD_NT_12k0 #define RSL_CMOD_SP_NT_6k0 RSL_CMOD_CSD_NT_6k0 -/* transparent data */ -#define RSL_CMOD_CSD_T_32000 0x38 -#define RSL_CMOD_CSD_T_29000 0x39 -#define RSL_CMOD_CSD_T_14400 0x18 -#define RSL_CMOD_CSD_T_9600 0x10 -#define RSL_CMOD_CSD_T_4800 0x11 -#define RSL_CMOD_CSD_T_2400 0x12 -#define RSL_CMOD_CSD_T_1200 0x13 -#define RSL_CMOD_CSD_T_600 0x14 -#define RSL_CMOD_CSD_T_1200_75 0x15 +/*! Transparent data */ +enum rsl_cmod_csd_t { + RSL_CMOD_CSD_T_32000 = 0x38, + RSL_CMOD_CSD_T_29000 = 0x39, + RSL_CMOD_CSD_T_14400 = 0x18, + RSL_CMOD_CSD_T_9600 = 0x10, + RSL_CMOD_CSD_T_4800 = 0x11, + RSL_CMOD_CSD_T_2400 = 0x12, + RSL_CMOD_CSD_T_1200 = 0x13, + RSL_CMOD_CSD_T_600 = 0x14, + RSL_CMOD_CSD_T_1200_75 = 0x15, +}; /*! RSL Channel Identification IE (Chapter 9.3.5) */ struct rsl_ie_chan_ident { -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/31620 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I25bfd02aa1428a35492b20376a31635a442e545f Gerrit-Change-Number: 31620 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[M] Change in osmo-bsc[master]: pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH
by pespin 01 Mar '23

01 Mar '23
Attention is currently required from: fixeria, dexter. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31578 ) Change subject: pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH ...................................................................... Patch Set 4: (1 comment) File include/osmocom/bsc/pcuif_proto.h: https://gerrit.osmocom.org/c/osmo-bsc/+/31578/comment/33349194_ed6b33dd PS4, Line 280: pgroup > See my comment https://gerrit.osmocom.org/c/osmo-pcu/+/31145/comments/669099fc_aa3e5889. […] Definetly not "imsi" but "imsi_suffix" or alike. In any case, see the other patch where I ask whether it may be possible to calculate the paging group already in PCU? -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31578 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Id6acbd243adf26169e5e8319dd66bb68dd6a3c22 Gerrit-Change-Number: 31578 Gerrit-PatchSet: 4 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Wed, 01 Mar 2023 14:17:10 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-bsc[master]: pcu_sock: handle multiple BTSs with one BSC co-located PCU (in theory)
by pespin 01 Mar '23

01 Mar '23
Attention is currently required from: dexter. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31618 ) Change subject: pcu_sock: handle multiple BTSs with one BSC co-located PCU (in theory) ...................................................................... Patch Set 1: (1 comment) File src/osmo-bsc/pcu_sock.c: https://gerrit.osmocom.org/c/osmo-bsc/+/31618/comment/38cd382a_29e353f3 PS1, Line 981: LOGP(DPCU, LOGL_ERROR, "This version of OsmoBSC can only handle one (Ericsson RBS) BTS with BSC co-located PCU\n"); so what's exactly preventing us from operating multiple ericsson RBS? do we have a ticket open about that? -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31618 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I0b42c2c130106f6ffca2dd08d079e1a7bda41f0b Gerrit-Change-Number: 31618 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-CC: pespin <pespin(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Wed, 01 Mar 2023 14:14:55 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-pcu[master]: pcu_l1_if_phy: add new PHY API function to initialize PHY
by dexter 01 Mar '23

01 Mar '23
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/31574 ) Change subject: pcu_l1_if_phy: add new PHY API function to initialize PHY ...................................................................... pcu_l1_if_phy: add new PHY API function to initialize PHY The PHY implementations we currently have do not require any initialization that has to run directly on startup. This will change when we introduce support for the E1 based Ericsson RBS CCU. Then we will have to perform at least one elarly initialization (VTY config file). So lets add an API function for PHY initialization now. Related: OS#5198 Change-Id: Ibf2a3a058c826f6ee5b740eee72d5be94d460517 --- M src/osmo-bts-litecell15/lc15_l1_if.c M src/osmo-bts-oc2g/oc2g_l1_if.c M src/osmo-bts-sysmo/sysmo_l1_if.c M src/pcu_l1_if_phy.h M src/pcu_main.cpp 5 files changed, 39 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/src/osmo-bts-litecell15/lc15_l1_if.c b/src/osmo-bts-litecell15/lc15_l1_if.c index 580cdf0..043a3ba 100644 --- a/src/osmo-bts-litecell15/lc15_l1_if.c +++ b/src/osmo-bts-litecell15/lc15_l1_if.c @@ -404,3 +404,8 @@ talloc_free(fl1h); return 0; } + +int l1if_init(void) +{ + return 0; +} diff --git a/src/osmo-bts-oc2g/oc2g_l1_if.c b/src/osmo-bts-oc2g/oc2g_l1_if.c index 48005a2..c827d72 100644 --- a/src/osmo-bts-oc2g/oc2g_l1_if.c +++ b/src/osmo-bts-oc2g/oc2g_l1_if.c @@ -409,3 +409,8 @@ talloc_free(fl1h); return 0; } + +int l1if_init(void) +{ + return 0; +} diff --git a/src/osmo-bts-sysmo/sysmo_l1_if.c b/src/osmo-bts-sysmo/sysmo_l1_if.c index 18378b6..348497f 100644 --- a/src/osmo-bts-sysmo/sysmo_l1_if.c +++ b/src/osmo-bts-sysmo/sysmo_l1_if.c @@ -386,3 +386,8 @@ talloc_free(fl1h); return 0; } + +int l1if_init(void) +{ + return 0; +} diff --git a/src/pcu_l1_if_phy.h b/src/pcu_l1_if_phy.h index 318d0aa..297883b 100644 --- a/src/pcu_l1_if_phy.h +++ b/src/pcu_l1_if_phy.h @@ -3,6 +3,7 @@ #include <stdint.h> #include <osmocom/core/gsmtap_util.h> +int l1if_init(void); void *l1if_open_pdch(uint8_t trx_no, uint32_t hlayer1, struct gsmtap_inst *gsmtap); int l1if_connect_pdch(void *obj, uint8_t ts); int l1if_pdch_req(void *obj, uint8_t ts, int is_ptcch, uint32_t fn, uint16_t arfcn, uint8_t block_nr, uint8_t *data, diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index 901ee6c..ec7bddd 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -33,6 +33,7 @@ extern "C" { #include "pcu_vty.h" #include "coding_scheme.h" +#include "pcu_l1_if_phy.h" #include <osmocom/gprs/gprs_bssgp.h> #include <osmocom/gprs/gprs_ns2.h> #include <osmocom/vty/telnet_interface.h> @@ -250,6 +251,12 @@ osmo_cpu_sched_vty_init(tall_pcu_ctx); logging_vty_add_deprecated_subsys(tall_pcu_ctx, "bssgp"); +#ifdef ENABLE_DIRECT_PHY + rc = l1if_init(); + if (rc < 0) + return -EINVAL; +#endif + handle_options(argc, argv); if ((!!spoof_mcc) + (!!spoof_mnc) == 1) { fprintf(stderr, "--mcc and --mnc must be specified " -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/31574 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ibf2a3a058c826f6ee5b740eee72d5be94d460517 Gerrit-Change-Number: 31574 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmo-pcu[master]: pcu_l1_if_phy: add new PHY API function to disconnect PDCH
by dexter 01 Mar '23

01 Mar '23
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/31573 ) Change subject: pcu_l1_if_phy: add new PHY API function to disconnect PDCH ...................................................................... pcu_l1_if_phy: add new PHY API function to disconnect PDCH There is a function l1if_connect_pdch, but no complementary function like we have it with l1if_open_pdch and l1if_close_pdch. The reason for this is that the PHY implementations that rely on a femtocell DSP do not need to disconnect the pdch explcitly. However, the planned support for the E1 based Ercisson RBS CCU will require an explicit disconnect. So lets add a function call for this. Change-Id: Ied88f3289bda87c48f5f9255c4591470633cc805 Related: OS#5198 --- M src/osmo-bts-litecell15/lc15_l1_if.c M src/osmo-bts-oc2g/oc2g_l1_if.c M src/osmo-bts-sysmo/sysmo_l1_if.c M src/pcu_l1_if.cpp M src/pcu_l1_if_phy.h M tests/alloc/AllocTest.cpp M tests/alloc/MslotTest.cpp M tests/app_info/AppInfoTest.cpp M tests/edge/EdgeTest.cpp M tests/emu/pcu_emu.cpp M tests/fn/FnTest.cpp M tests/llc/LlcTest.cpp M tests/ms/MsTest.cpp M tests/tbf/TbfTest.cpp M tests/types/TypesTest.cpp M tests/ulc/PdchUlcTest.cpp 16 files changed, 50 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/src/osmo-bts-litecell15/lc15_l1_if.c b/src/osmo-bts-litecell15/lc15_l1_if.c index 053844f..580cdf0 100644 --- a/src/osmo-bts-litecell15/lc15_l1_if.c +++ b/src/osmo-bts-litecell15/lc15_l1_if.c @@ -145,6 +145,11 @@ return l1if_req_pdch(fl1h, msg); } +int l1if_disconnect_pdch(void *obj, uint8_t ts) +{ + return 0; +} + static int handle_ph_readytosend_ind(struct lc15l1_hdl *fl1h, GsmL1_PhReadyToSendInd_t *rts_ind) { diff --git a/src/osmo-bts-oc2g/oc2g_l1_if.c b/src/osmo-bts-oc2g/oc2g_l1_if.c index 1ea0b26..48005a2 100644 --- a/src/osmo-bts-oc2g/oc2g_l1_if.c +++ b/src/osmo-bts-oc2g/oc2g_l1_if.c @@ -146,6 +146,11 @@ return l1if_req_pdch(fl1h, msg); } +int l1if_disconnect_pdch(void *obj, uint8_t ts) +{ + return 0; +} + static int handle_ph_readytosend_ind(struct oc2gl1_hdl *fl1h, GsmL1_PhReadyToSendInd_t *rts_ind) { diff --git a/src/osmo-bts-sysmo/sysmo_l1_if.c b/src/osmo-bts-sysmo/sysmo_l1_if.c index 31028f5..18378b6 100644 --- a/src/osmo-bts-sysmo/sysmo_l1_if.c +++ b/src/osmo-bts-sysmo/sysmo_l1_if.c @@ -128,6 +128,11 @@ return l1if_req_pdch(fl1h, msg); } +int l1if_disconnect_pdch(void *obj, uint8_t ts) +{ + return 0; +} + static int handle_ph_readytosend_ind(struct femtol1_hdl *fl1h, GsmL1_PhReadyToSendInd_t *rts_ind) { diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index fdee83d..258a118 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -918,6 +918,10 @@ trx_nr, ts_nr, pdch->tsc, pdch->fh.enabled ? "yes" : "no"); } else { if (pdch->is_enabled()) { +#ifdef ENABLE_DIRECT_PHY + if ((info_ind->flags & PCU_IF_FLAG_SYSMO)) + l1if_disconnect_pdch(bts->trx[trx_nr].fl1h, ts_nr); +#endif pcu_tx_act_req(bts, pdch, 0); pdch->disable(); } diff --git a/src/pcu_l1_if_phy.h b/src/pcu_l1_if_phy.h index 73d0b6f..318d0aa 100644 --- a/src/pcu_l1_if_phy.h +++ b/src/pcu_l1_if_phy.h @@ -7,4 +7,5 @@ int l1if_connect_pdch(void *obj, uint8_t ts); int l1if_pdch_req(void *obj, uint8_t ts, int is_ptcch, uint32_t fn, uint16_t arfcn, uint8_t block_nr, uint8_t *data, uint8_t len); +int l1if_disconnect_pdch(void *obj, uint8_t ts); int l1if_close_pdch(void *obj); diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 21fa6f2..08f5910 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -861,6 +861,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/alloc/MslotTest.cpp b/tests/alloc/MslotTest.cpp index 1b06b0b..1d5ff97 100644 --- a/tests/alloc/MslotTest.cpp +++ b/tests/alloc/MslotTest.cpp @@ -175,6 +175,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/app_info/AppInfoTest.cpp b/tests/app_info/AppInfoTest.cpp index 668b081..659c011 100644 --- a/tests/app_info/AppInfoTest.cpp +++ b/tests/app_info/AppInfoTest.cpp @@ -198,6 +198,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp index dd318c0..4cc7960 100644 --- a/tests/edge/EdgeTest.cpp +++ b/tests/edge/EdgeTest.cpp @@ -1427,6 +1427,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/emu/pcu_emu.cpp b/tests/emu/pcu_emu.cpp index b08c31d..c1ccf07 100644 --- a/tests/emu/pcu_emu.cpp +++ b/tests/emu/pcu_emu.cpp @@ -170,6 +170,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/fn/FnTest.cpp b/tests/fn/FnTest.cpp index ae15164..f4b998c 100644 --- a/tests/fn/FnTest.cpp +++ b/tests/fn/FnTest.cpp @@ -171,6 +171,8 @@ abort(); } void l1if_connect_pdch() { abort(); + } void l1if_disconnect_pdch() { + abort(); } void l1if_close_pdch() { abort(); diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp index bdc5863..547dc79 100644 --- a/tests/llc/LlcTest.cpp +++ b/tests/llc/LlcTest.cpp @@ -381,6 +381,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp index cbafee9..6a770c9 100644 --- a/tests/ms/MsTest.cpp +++ b/tests/ms/MsTest.cpp @@ -661,6 +661,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp index aa3c121..0b2e868 100644 --- a/tests/tbf/TbfTest.cpp +++ b/tests/tbf/TbfTest.cpp @@ -3517,6 +3517,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp index c728af1..a4f6db6 100644 --- a/tests/types/TypesTest.cpp +++ b/tests/types/TypesTest.cpp @@ -975,6 +975,7 @@ extern "C" { void l1if_pdch_req() { abort(); } void l1if_connect_pdch() { abort(); } +void l1if_disconnect_pdch() { abort(); } void l1if_close_pdch() { abort(); } void l1if_open_pdch() { abort(); } } diff --git a/tests/ulc/PdchUlcTest.cpp b/tests/ulc/PdchUlcTest.cpp index a199311..44aef34 100644 --- a/tests/ulc/PdchUlcTest.cpp +++ b/tests/ulc/PdchUlcTest.cpp @@ -338,6 +338,8 @@ abort(); } void l1if_connect_pdch() { abort(); + } void l1if_disconnect_pdch() { + abort(); } void l1if_close_pdch() { abort(); -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/31573 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: Ied88f3289bda87c48f5f9255c4591470633cc805 Gerrit-Change-Number: 31573 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in osmocom-bb[master]: modem: route L1CTL prims to/from libosmo-gprs-rlcmac
by pespin 01 Mar '23

01 Mar '23
Attention is currently required from: fixeria. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/31572 ) Change subject: modem: route L1CTL prims to/from libosmo-gprs-rlcmac ...................................................................... Patch Set 2: (1 comment) File src/host/layer23/src/modem/rlcmac.c: https://gerrit.osmocom.org/c/osmocom-bb/+/31572/comment/b203b743_9ab6d6c6 PS2, Line 130: return l1ctl_tx_gprs_ul_block_req(ms, prim->pdch_data_req.fn, weird indentation here. -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/31572 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I38e9a686f8edc3fe55f961d75e68602c33bbbaaf Gerrit-Change-Number: 31572 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Wed, 01 Mar 2023 14:07:01 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Gerrit-MessageType: comment
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • ...
  • 365
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.