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 -----
  • November
  • 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
[S] Change in osmo-bsc[master]: pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH
by dexter 06 Mar '23

06 Mar '23
Attention is currently required from: neels, pespin, fixeria. Hello Jenkins Builder, laforge, pespin, fixeria, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/osmo-bsc/+/31578 to look at the new patch set (#10). Change subject: pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH ...................................................................... pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH When the IMMEDIATE ASSIGNMENT is sent from the PCU to the BSC using the "direct TLLI" method, the TLLI (and the last three digits of the IMSI) is prepended to the MAC block. Currently we are taking the fields apart manually using offsets. The code for this is difficult to read and the method is error prone. Lets define a struct that we can just overlay to access the fields directly. Lets also transfer the full IMSI. Change-Id: Id6acbd243adf26169e5e8319dd66bb68dd6a3c22 Related: OS#5198 --- M include/osmocom/bsc/pcuif_proto.h M src/osmo-bsc/pcu_sock.c 2 files changed, 38 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/78/31578/10 -- 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: 10 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-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in osmo-bsc[master]: pcu_sock: get rid of leaking message buffer
by dexter 06 Mar '23

06 Mar '23
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31673 ) Change subject: pcu_sock: get rid of leaking message buffer ...................................................................... pcu_sock: get rid of leaking message buffer When a data request is received from the PCU, some of the switch cases allocate a message buffer but the message buffer is only used to pass its data and length to other functions. The message buffer itself is not passed anywhere and it is also not freed. Lets get rid of the message buffer and avoid unnecessary memcopy calls. Related: OS#5198 Change-Id: Ibfaae177585a4d42d797b6bbd90e402641620140 --- M src/osmo-bsc/pcu_sock.c 1 file changed, 19 insertions(+), 23 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/73/31673/1 diff --git a/src/osmo-bsc/pcu_sock.c b/src/osmo-bsc/pcu_sock.c index 3d8c254..fa4193f 100644 --- a/src/osmo-bsc/pcu_sock.c +++ b/src/osmo-bsc/pcu_sock.c @@ -532,7 +532,6 @@ static int pcu_rx_data_req(struct gsm_bts *bts, uint8_t msg_type, struct gsm_pcu_if_data *data_req) { - struct msgb *msg; uint32_t tlli = -1; uint8_t pag_grp; int rc = 0; @@ -549,18 +548,8 @@ pcu_rx_rr_paging(bts, pag_grp, data_req->data+3); break; case PCU_IF_SAPI_AGCH: - msg = msgb_alloc(data_req->len, "pcu_agch"); - if (!msg) { - rc = -ENOMEM; - break; - } - msg->l3h = msgb_put(msg, data_req->len); - memcpy(msg->l3h, data_req->data, data_req->len); - - if (rsl_imm_assign_cmd(bts, msg->len, msg->data)) { - msgb_free(msg); + if (rsl_imm_assign_cmd(bts, data_req->len, data_req->data)) rc = -EIO; - } break; case PCU_IF_SAPI_PCH_DT: /* DT = direct TLLI. A tlli is prefixed so that the BSC/BTS can confirm the sending of the downlink @@ -580,29 +569,20 @@ LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via PCH (tlli=0x%08x, pag_grp=0x%02x)\n", tlli, pag_grp); - msg = msgb_alloc(data_req->len - 7, "pcu_pch"); - if (!msg) { - rc = -ENOMEM; - break; - } - msg->l3h = msgb_put(msg, data_req->len - 7); - memcpy(msg->l3h, data_req->data + 7, data_req->len - 7); /* NOTE: Sending an IMMEDIATE ASSIGNMENT via PCH became necessary with GPRS in order to be able to * assign downlink TBFs directly through the paging channel. However, this method never became part * of the RSL specs. This means that each BTS vendor has to come up with a proprietary method. At * the moment we only support Ericsson RBS here. */ if (bts->type == GSM_BTS_TYPE_RBS2000) { - rc = rsl_ericsson_imm_assign_cmd(bts, tlli, msg->len, msg->data, pag_grp); + rc = rsl_ericsson_imm_assign_cmd(bts, tlli, data_req->len - 7, data_req->data + 7, pag_grp); } else { LOGP(DPCU, LOGL_ERROR, "BTS model does not support sending immediate assignment via PCH!\n"); rc = -ENOTSUP; } - if (rc) { - msgb_free(msg); + if (rc) rc = -EIO; - } break; default: LOGP(DPCU, LOGL_ERROR, "Received PCU data request with " -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31673 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Ibfaae177585a4d42d797b6bbd90e402641620140 Gerrit-Change-Number: 31673 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in osmo-bsc[master]: pcu_sock: use struct to transfer IMMEDIATE ASSIGNMENT for PCH
by dexter 06 Mar '23

06 Mar '23
Attention is currently required from: neels, pespin, fixeria. dexter 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 10: (3 comments) Commit Message: https://gerrit.osmocom.org/c/osmo-bsc/+/31578/comment/20c11cd3_bb8716ad PS8, Line 10: "direct TLLI" method, the TLLI (and the paging group) is premended to > probably "prepended" Done File src/osmo-bsc/pcu_sock.c: https://gerrit.osmocom.org/c/osmo-bsc/+/31578/comment/c3c0c5a4_605ce3e7 PS8, Line 581: msg = msgb_alloc(sizeof(pch_dt->data), "pcu_pch"); > this is just moving code from a previous patch, but in fact this msgb is leaked! It should have been […] Thanks. I didn't see this while editing the code. Thats a really nasty bug. https://gerrit.osmocom.org/c/osmo-bsc/+/31578/comment/eb263bad_699a1b8d PS8, Line 595: msg->len, msg->data > ... […] Done -- 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: 10 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-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 06 Mar 2023 10:44:45 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: neels <nhofmeyr(a)sysmocom.de> Comment-In-Reply-To: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-bsc[master]: requires_voice_stream -> ch_indctr
by pespin 06 Mar '23

06 Mar '23
Attention is currently required from: osmith. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31622 ) Change subject: requires_voice_stream -> ch_indctr ...................................................................... Patch Set 4: Code-Review+1 -- 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: 4 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-Comment-Date: Mon, 06 Mar 2023 10:15:45 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in libosmocore[master]: gsm0502: add burst length definitions from chapter 5.2
by pespin 06 Mar '23

06 Mar '23
Attention is currently required from: neels, fixeria. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/31669 ) Change subject: gsm0502: add burst length definitions from chapter 5.2 ...................................................................... Patch Set 1: (1 comment) File include/osmocom/gsm/gsm0502.h: https://gerrit.osmocom.org/c/libosmocore/+/31669/comment/2fe531d7_4b5f9115 PS1, Line 36: #define GSM_NBITS_NB_GMSK_PAYLOAD 2 * 58 > > I think shitfting operations take precedence over multiplication? […] ok, still if you use this after a division you'll have problems: 45 / GSM_NBITS_NB_GMSK_PAYLOAD = 45 / 2 * 58 = 22 * 58 but in this case you'd actually want 45 / (2 * 58) = 45 / 116 But tbh, simply don't care about details and put parenthesis as a rule of thumb. -- To view, visit https://gerrit.osmocom.org/c/libosmocore/+/31669 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Change-Id: I1c38ccc2b64ba9046bb3b1221d99cc55ec493802 Gerrit-Change-Number: 31669 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels <nhofmeyr(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: Mon, 06 Mar 2023 10:14:52 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: No Comment-In-Reply-To: neels <nhofmeyr(a)sysmocom.de> 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
[M] Change in osmo-bsc[master]: assignment_fsm: chan mode check: support CSD
by osmith 06 Mar '23

06 Mar '23
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31551 ) Change subject: assignment_fsm: chan mode check: support CSD ...................................................................... assignment_fsm: chan mode check: support CSD Replace check_requires_voice_stream, which used to iterate over ch_mode_rate_list and verify that all entries are either for speech or signalling. Instead verify in check_chan_mode_rate_against_ch_indctr, that all entries of ch_mode_rate_list have a chan_mode that matches the ch_indctr (data, speech, signalling; called "speech / data indicator" in 3GPP TS 48.008 § 3.2.2.11). This ensures that all of them are either data, speech or signalling and not mixed. Related: OS#4393 Change-Id: Iee5cbfee84d7f2ad59ee2d5a19891a2b59bbafff --- M include/osmocom/bsc/gsm_data.h M src/osmo-bsc/assignment_fsm.c M src/osmo-bsc/osmo_bsc_bssap.c 3 files changed, 49 insertions(+), 32 deletions(-) Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified osmith: Looks good to me, approved diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index cf66a04..d4615b2 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -163,6 +163,9 @@ /* The TSC to use if 'use' is true, otherwise automatically determine the TSC value to use. Valid range is 0 to * 7, as described in 3GPP TS 45.002. */ struct optional_val tsc; + + /* The "speech / data indicator" from 3GPP TS 48.008 § 3.2.2.11 Channel Type (speech/data/signalling). */ + enum gsm0808_chan_indicator ch_indctr; }; /* State of an ongoing Assignment, while the assignment_fsm is still busy. This serves as state separation to keep the diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c index 7f6a7ea..6dc09c6 100644 --- a/src/osmo-bsc/assignment_fsm.c +++ b/src/osmo-bsc/assignment_fsm.c @@ -370,62 +370,53 @@ OSMO_ASSERT(osmo_fsm_register(&assignment_fsm) == 0); } -static int check_requires_voice(bool *requires_voice, enum gsm48_chan_mode chan_mode) +static int chan_mode_to_ch_indctr(enum gsm48_chan_mode chan_mode) { - *requires_voice = false; - switch (gsm48_chan_mode_to_non_vamos(chan_mode)) { + case GSM48_CMODE_DATA_14k5: + case GSM48_CMODE_DATA_12k0: + case GSM48_CMODE_DATA_6k0: + case GSM48_CMODE_DATA_3k6: + return GSM0808_CHAN_DATA; case GSM48_CMODE_SPEECH_V1: case GSM48_CMODE_SPEECH_EFR: case GSM48_CMODE_SPEECH_AMR: - *requires_voice = true; - break; + return GSM0808_CHAN_SPEECH; case GSM48_CMODE_SIGN: - *requires_voice = false; - break; + return GSM0808_CHAN_SIGN; default: return -EINVAL; } - - return 0; } -/* Check if the incoming assignment request requires a voice stream or not, - * we will look at the preferred and the alternate channel mode and also make - * sure that both are consistent. */ -static int check_requires_voice_stream(struct gsm_subscriber_connection *conn) +/* Check if the incoming assignment request has a channel mode that is + * inconsistent with ch_indctr, e.g. GSM48_CMODE_DATA_14k5 and + * GSM0808_CHAN_SPEECH */ +static int check_chan_mode_rate_against_ch_indctr(struct gsm_subscriber_connection *conn) { - bool requires_voice_pref = false, requires_voice_alt; struct assignment_request *req = &conn->assignment.req; struct osmo_fsm_inst *fi = conn->fi; - int i, rc; - - /* When the assignment request indicates that there is an alternate - * rate available (e.g. "Full or Half rate channel, Half rate - * preferred..."), then both must be either voice or either signalling, - * a mismatch is not permitted */ + int i; + uint8_t ch_indctr; for (i = 0; i < req->n_ch_mode_rate; i++) { - rc = check_requires_voice(&requires_voice_alt, req->ch_mode_rate_list[i].chan_mode); - if (rc < 0) { + ch_indctr = chan_mode_to_ch_indctr(req->ch_mode_rate_list[i].chan_mode); + if (ch_indctr < 0) { assignment_fail(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_NOT_SUPP, "Channel mode not supported (prev level %d): %s", i, gsm48_chan_mode_name(req->ch_mode_rate_list[i].chan_mode)); return -EINVAL; } - if (i==0) - requires_voice_pref = requires_voice_alt; - else if (requires_voice_alt != requires_voice_pref) { + if (ch_indctr != req->ch_indctr) { assignment_fail(GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_NOT_SUPP, - "Requested a mix of Signalling and non-Signalling channel modes: %s != %s", - gsm48_chan_mode_name(req->ch_mode_rate_list[0].chan_mode), - gsm48_chan_mode_name(req->ch_mode_rate_list[i].chan_mode)); + "Channel mode %s has ch_indctr %d, channel type has ch_indctr %d", + gsm48_chan_mode_name(req->ch_mode_rate_list[i].chan_mode), + ch_indctr, req->ch_indctr); return -EINVAL; } } - conn->assignment.requires_voice_stream = requires_voice_pref; return 0; } @@ -471,6 +462,8 @@ .present = (tsc >= 0), .val = tsc, }, + + .ch_indctr = chan_mode_to_ch_indctr(lchan->current_ch_mode_rate.chan_mode), }; if (to_lchan) @@ -529,10 +522,9 @@ assignment_count(CTR_ASSIGNMENT_ATTEMPTED); - /* Check if we need a voice stream. If yes, set the appropriate struct - * members in conn */ - if (check_requires_voice_stream(conn) < 0) + if (check_chan_mode_rate_against_ch_indctr(conn) < 0) return; + conn->assignment.requires_voice_stream = (req->ch_indctr != GSM0808_CHAN_SIGN); if (!req->target_lchan && reuse_existing_lchan(conn)) { /* The already existing lchan is suitable for this mode */ diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index e38a975..916e3b8 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -1136,6 +1136,8 @@ goto reject; } + req.ch_indctr = ct.ch_indctr; + return osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_ASSIGNMENT_START, &req); reject: -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31551 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Iee5cbfee84d7f2ad59ee2d5a19891a2b59bbafff Gerrit-Change-Number: 31551 Gerrit-PatchSet: 5 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in osmo-bsc[master]: tests/handover: wrap functions from gsm_08_08.c
by osmith 06 Mar '23

06 Mar '23
osmith has submitted this change. ( 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(-) Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified osmith: Looks good to me, approved 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 bf91f02..b0b5863 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -1740,15 +1740,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: 3 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in osmo-bsc[master]: bssmap_handle_ass_req_tp_codec_list: tweak log msg
by osmith 06 Mar '23

06 Mar '23
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31550 ) ( 2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: bssmap_handle_ass_req_tp_codec_list: tweak log msg ...................................................................... bssmap_handle_ass_req_tp_codec_list: tweak log msg Remove "speech mode" from the log message, as the log message is relevant for CSD too. According to 3GPP TS 48.008 § 3.2.1.1 note 13 the IE shall be included for AoIP unless channel type is signalling. Related: OS#4393 Change-Id: Idfab0b7f6e97a6b67d140f967ddfe9b29818586e --- M src/osmo-bsc/osmo_bsc_bssap.c 1 file changed, 15 insertions(+), 1 deletion(-) Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index 59d5aa5..e38a975 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -977,7 +977,7 @@ } if (aoip && !conn->codec_list.len) { - LOGP(DMSC, LOGL_ERROR, "%s: AoIP speech mode Assignment Request:" + LOGP(DMSC, LOGL_ERROR, "%s: AoIP Assignment Request:" " Missing or empty Speech Codec List IE\n", bsc_subscr_name(conn->bsub)); *cause = GSM0808_CAUSE_INFORMATION_ELEMENT_OR_FIELD_MISSING; return -1; -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31550 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Idfab0b7f6e97a6b67d140f967ddfe9b29818586e Gerrit-Change-Number: 31550 Gerrit-PatchSet: 5 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[S] Change in osmo-bsc[master]: abis_rsl: ipacc_payload_type: handle CSD
by osmith 06 Mar '23

06 Mar '23
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31548 ) ( 2 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: abis_rsl: ipacc_payload_type: handle CSD ...................................................................... abis_rsl: ipacc_payload_type: handle CSD Depends: libsmo-abis Ibf0bfb577faa5c82e10706b42ede8b72dd611655 Change-Id: Ie561d87ecdc161b9a69eb7683889f0395524faa8 --- M TODO-RELEASE M src/osmo-bsc/abis_rsl.c 2 files changed, 16 insertions(+), 0 deletions(-) Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified diff --git a/TODO-RELEASE b/TODO-RELEASE index 551cc18..285dc63 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -11,3 +11,4 @@ osmo-bsc CTRL CTRL commands like 'bts.N.channel-load' will now respond with new dynamic timeslot names: 'DYNAMIC/OSMOCOM' instead of 'TCH/F_TCH/H_SDCCH8_PDCH' and 'DYNAMIC/IPACCESS' instead of 'TCH/F_PDCH' osmo-bsc CTRL,VTY osmo_fsm instance IDs now use new dynamic timeslot names 'DYNAMIC_OSMOCOM' and 'DYNAMIC_IPACCESS' libosmogsm >1.8.0 circuit switched data stuff (gsm0808_enc/dec_channel_type etc.) +libosmo-abis >1.4.0 osmo_ortp.h: add RTP_PT_CSDATA diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c index cb4638b..20c90f8 100644 --- a/src/osmo-bsc/abis_rsl.c +++ b/src/osmo-bsc/abis_rsl.c @@ -2635,6 +2635,11 @@ int ipacc_payload_type(enum gsm48_chan_mode tch_mode, enum gsm_chan_t type) { switch (gsm48_chan_mode_to_non_vamos(tch_mode)) { + case GSM48_CMODE_DATA_14k5: + case GSM48_CMODE_DATA_12k0: + case GSM48_CMODE_DATA_6k0: + case GSM48_CMODE_DATA_3k6: + return RTP_PT_CSDATA; case GSM48_CMODE_SPEECH_V1: switch (type) { case GSM_LCHAN_TCH_F: -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/31548 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: Ie561d87ecdc161b9a69eb7683889f0395524faa8 Gerrit-Change-Number: 31548 Gerrit-PatchSet: 5 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[L] Change in osmo-bsc[master]: bssmap_handle_ass_req_ct_data: implement
by osmith 06 Mar '23

06 Mar '23
osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/31547 ) 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 Depends: libosmocore Ia965cdd9f53af756e5ffaff9b8f389b5ad629969 Change-Id: I350bea15fd2158eb6edc9bc92f2dca48930736e9 --- M TODO-RELEASE M include/osmocom/bsc/Makefile.am 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 7 files changed, 282 insertions(+), 4 deletions(-) Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved diff --git a/TODO-RELEASE b/TODO-RELEASE index 78fcea3..551cc18 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -10,3 +10,4 @@ osmo-bsc VTY Timeslot phys_chan_config will now write back with new dynamic timeslot names: 'DYNAMIC/OSMOCOM' instead of 'TCH/F_TCH/H_SDCCH8_PDCH' and 'DYNAMIC/IPACCESS' instead of 'TCH/F_PDCH' osmo-bsc CTRL CTRL commands like 'bts.N.channel-load' will now respond with new dynamic timeslot names: 'DYNAMIC/OSMOCOM' instead of 'TCH/F_TCH/H_SDCCH8_PDCH' and 'DYNAMIC/IPACCESS' instead of 'TCH/F_PDCH' osmo-bsc CTRL,VTY osmo_fsm instance IDs now use new dynamic timeslot names 'DYNAMIC_OSMOCOM' and 'DYNAMIC_IPACCESS' +libosmogsm >1.8.0 circuit switched data stuff (gsm0808_enc/dec_channel_type etc.) diff --git a/include/osmocom/bsc/Makefile.am b/include/osmocom/bsc/Makefile.am index 53d45ad..8baff9c 100644 --- a/include/osmocom/bsc/Makefile.am +++ b/include/osmocom/bsc/Makefile.am @@ -19,6 +19,7 @@ chan_alloc.h \ chan_counts.h \ codec_pref.h \ + data_rate_pref.h \ ctrl.h \ debug.h \ e1_config.h \ diff --git a/include/osmocom/bsc/codec_pref.h b/include/osmocom/bsc/codec_pref.h index adefe04..5944a4a 100644 --- a/include/osmocom/bsc/codec_pref.h +++ b/include/osmocom/bsc/codec_pref.h @@ -17,6 +17,10 @@ RATE_PREF_FR, }; +int match_codec_pref_data(struct channel_mode_and_rate *ch_mode_rate, + const struct gsm0808_channel_type *ct, + const bool full_rate); + int match_codec_pref(struct channel_mode_and_rate *ch_mode_rate, const struct gsm0808_channel_type *ct, const struct gsm0808_speech_codec_list *scl, diff --git a/include/osmocom/bsc/data_rate_pref.h b/include/osmocom/bsc/data_rate_pref.h new file mode 100644 index 0000000..da3f1fd --- /dev/null +++ b/include/osmocom/bsc/data_rate_pref.h @@ -0,0 +1,11 @@ +#pragma once + +#include <stdbool.h> +#include <osmocom/gsm/protocol/gsm_04_08.h> + +struct gsm0808_channel_type; +struct channel_mode_and_rate; + +int match_data_rate_pref(struct channel_mode_and_rate *ch_mode_rate, + const struct gsm0808_channel_type *ct, + const bool full_rate); diff --git a/src/osmo-bsc/Makefile.am b/src/osmo-bsc/Makefile.am index 60a76fa..53c0912 100644 --- a/src/osmo-bsc/Makefile.am +++ b/src/osmo-bsc/Makefile.am @@ -62,6 +62,7 @@ chan_alloc.c \ chan_counts.c \ codec_pref.c \ + data_rate_pref.c \ e1_config.c \ gsm_04_08_rr.c \ gsm_data.c \ diff --git a/src/osmo-bsc/data_rate_pref.c b/src/osmo-bsc/data_rate_pref.c new file mode 100644 index 0000000..443fea7 --- /dev/null +++ b/src/osmo-bsc/data_rate_pref.c @@ -0,0 +1,152 @@ +/* + * (C) 2023 by sysmocom s.f.m.c. GmbH <info(a)sysmocom.de> + * All Rights Reserved + * + * Author: Oliver Smith + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <osmocom/gsm/protocol/gsm_08_08.h> +#include <osmocom/gsm/protocol/gsm_08_58.h> +#include <osmocom/bsc/data_rate_pref.h> +#include <osmocom/bsc/debug.h> +#include <osmocom/bsc/lchan.h> + +static int gsm0808_data_rate_transp_to_gsm0858(enum gsm0808_data_rate_transp rate) +{ + switch (rate) { + case GSM0808_DATA_RATE_TRANSP_32k0: + return RSL_CMOD_CSD_T_32k0; + case GSM0808_DATA_RATE_TRANSP_28k8: + return RSL_CMOD_CSD_T_29k0; + case GSM0808_DATA_RATE_TRANSP_14k4: + return RSL_CMOD_CSD_T_14k4; + case GSM0808_DATA_RATE_TRANSP_9k6: + return RSL_CMOD_CSD_T_9k6; + case GSM0808_DATA_RATE_TRANSP_4k8: + return RSL_CMOD_CSD_T_4k8; + case GSM0808_DATA_RATE_TRANSP_2k4: + return RSL_CMOD_CSD_T_2k4; + case GSM0808_DATA_RATE_TRANSP_1k2: + return RSL_CMOD_CSD_T_1k2; + case GSM0808_DATA_RATE_TRANSP_600: + return RSL_CMOD_CSD_T_600; + case GSM0808_DATA_RATE_TRANSP_1200_75: + return RSL_CMOD_CSD_T_1200_75; + default: + LOGP(DMSC, LOGL_ERROR, "Unsupported transparent data rate 0x%x\n", rate); + return -1; + } +} + +static int gsm0808_data_rate_transp_to_gsm0408(enum gsm0808_data_rate_transp rate) +{ + switch (rate) { + case GSM0808_DATA_RATE_TRANSP_14k4: + return GSM48_CMODE_DATA_14k5; + case GSM0808_DATA_RATE_TRANSP_9k6: + return GSM48_CMODE_DATA_12k0; + case GSM0808_DATA_RATE_TRANSP_4k8: + return GSM48_CMODE_DATA_6k0; + case GSM0808_DATA_RATE_TRANSP_2k4: + case GSM0808_DATA_RATE_TRANSP_1k2: + case GSM0808_DATA_RATE_TRANSP_600: + case GSM0808_DATA_RATE_TRANSP_1200_75: + return GSM48_CMODE_DATA_3k6; + default: + LOGP(DMSC, LOGL_ERROR, "Unsupported transparent data rate 0x%x\n", rate); + return -1; + } +} + +static int gsm0808_data_rate_non_transp_to_gsm0408(enum gsm0808_data_rate_non_transp rate) +{ + LOGP(DMSC, LOGL_ERROR, "%s is not implemented\n", __func__); /* FIXME */ + return -1; +} + +static int gsm0808_data_rate_non_transp_to_gsm0858(enum gsm0808_data_rate_non_transp rate, bool full_rate) +{ + switch (rate) { + case GSM0808_DATA_RATE_NON_TRANSP_12000_6000: + if (full_rate) + return RSL_CMOD_CSD_NT_12k0; + return RSL_CMOD_CSD_NT_6k0; + case GSM0808_DATA_RATE_NON_TRANSP_14k5: + return RSL_CMOD_CSD_NT_14k5; + case GSM0808_DATA_RATE_NON_TRANSP_12k0: + return RSL_CMOD_CSD_NT_12k0; + case GSM0808_DATA_RATE_NON_TRANSP_6k0: + return RSL_CMOD_CSD_NT_6k0; + case GSM0808_DATA_RATE_NON_TRANSP_43k5: + return RSL_CMOD_CSD_NT_43k5; + case GSM0808_DATA_RATE_NON_TRANSP_29k0: + return RSL_CMOD_CSD_NT_28k8; + default: + LOGP(DMSC, LOGL_ERROR, "Unsupported non-transparent data rate 0x%x\n", rate); + return -1; + } +} + +static enum gsm48_chan_mode match_non_transp_data_rate(const struct gsm0808_channel_type *ct, bool full_rate) +{ + /* FIXME: Handle ct->data_rate_allowed too if it is set. Find the best + * match by comparing the preferred ct->data_rate + all allowed + * ct->data_rate_allowed against what's most suitable for the BTS. */ + + return gsm0808_data_rate_non_transp_to_gsm0858(ct->data_rate, full_rate); +} + +/*! Match the GSM 08.08 channel type received from the MSC to suitable data for + * the BTS, the GSM 04.08 channel mode, channel rate (FR/HR) and GSM 08.58 + * data rate. + * \param[out] ch_mode_rate resulting channel rate, channel mode and data rate + * \param[in] ct GSM 08.08 channel type received from MSC. + * \param[in] full_rate true means FR is preferred, false means HR + * \returns 0 on success, -1 in case no match was found */ +int match_data_rate_pref(struct channel_mode_and_rate *ch_mode_rate, + const struct gsm0808_channel_type *ct, + const bool full_rate) +{ + int rc; + *ch_mode_rate = (struct channel_mode_and_rate){}; + ch_mode_rate->chan_rate = full_rate ? CH_RATE_FULL : CH_RATE_HALF; + ch_mode_rate->data_transparent = ct->data_transparent; + + if (ct->data_transparent) { + rc = gsm0808_data_rate_transp_to_gsm0858(ct->data_rate); + if (rc == -1) + return -1; + ch_mode_rate->data_rate.t = rc; + + rc = gsm0808_data_rate_transp_to_gsm0408(ct->data_rate); + if (rc == -1) + return -1; + ch_mode_rate->chan_mode = rc; + } else { + rc = match_non_transp_data_rate(ct, full_rate); + if (rc == -1) + return -1; + ch_mode_rate->data_rate.nt = rc; + + rc = gsm0808_data_rate_non_transp_to_gsm0408(ct->data_rate); + if (rc == -1) + return -1; + ch_mode_rate->chan_mode = rc; + } + + return 0; +} diff --git a/src/osmo-bsc/osmo_bsc_bssap.c b/src/osmo-bsc/osmo_bsc_bssap.c index 221e477..59d5aa5 100644 --- a/src/osmo-bsc/osmo_bsc_bssap.c +++ b/src/osmo-bsc/osmo_bsc_bssap.c @@ -31,6 +31,7 @@ #include <osmocom/bsc/gsm_04_08_rr.h> #include <osmocom/bsc/bsc_subscr_conn_fsm.h> #include <osmocom/bsc/codec_pref.h> +#include <osmocom/bsc/data_rate_pref.h> #include <osmocom/bsc/abis_rsl.h> #include <osmocom/bsc/handover_fsm.h> #include <osmocom/bsc/bts.h> @@ -667,6 +668,67 @@ return 0; } +/* Select a preferred and an alternative data rate depending on the available + * capabilities. This decision does not include the actual channel load yet, + * this is also the reason why the result is a preferred and an alternate + * setting. The final decision is made in assignment_fsm.c when the actual + * lchan is requested. The preferred lchan will be requested first. If we + * find an alternate setting here, this one will be tried secondly if our + * primary choice fails. */ +static int select_data_rates(struct assignment_request *req, struct gsm0808_channel_type *ct, + struct gsm_subscriber_connection *conn) +{ + int rc, i, nc = 0; + + switch (ct->ch_rate_type) { + case GSM0808_DATA_FULL_BM: + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, true); + nc += (rc == 0) ? 1 : 0; + break; + case GSM0808_DATA_HALF_LM: + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, false); + nc += (rc == 0) ? 1 : 0; + break; + case GSM0808_DATA_FULL_PREF_NO_CHANGE: + case GSM0808_DATA_FULL_PREF: + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, true); + nc += (rc == 0) ? 1 : 0; + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, false); + nc += (rc == 0) ? 1 : 0; + break; + case GSM0808_DATA_HALF_PREF_NO_CHANGE: + case GSM0808_DATA_HALF_PREF: + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, false); + nc += (rc == 0) ? 1 : 0; + rc = match_data_rate_pref(&req->ch_mode_rate_list[nc], ct, true); + nc += (rc == 0) ? 1 : 0; + break; + default: + rc = -EINVAL; + break; + } + + if (!nc) { + LOGP(DMSC, LOGL_ERROR, "No supported data rate found for channel_type =" + " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[%s] }\n", + ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); + return -EINVAL; + } + + for (i = 0; i < nc; i++) { + DEBUGP(DMSC, "Found matching data rate (pref=%d): %s %s for channel_type =" + " { ch_indctr=0x%x, ch_rate_type=0x%x, perm_spch=[ %s] }\n", + i, + req->ch_mode_rate_list[i].chan_rate == CH_RATE_FULL ? "full rate" : "half rate", + get_value_string(gsm48_chan_mode_names, req->ch_mode_rate_list[i].chan_mode), + ct->ch_indctr, ct->ch_rate_type, osmo_hexdump(ct->perm_spch, ct->perm_spch_len)); + } + + req->n_ch_mode_rate = nc; + + return 0; +} + /* Select a preferred and an alternative codec rate depending on the available * capabilities. This decision does not include the actual lchan availability yet, * this is also the reason why the result is a preferred and an alternate @@ -924,6 +986,38 @@ return 0; } +static int bssmap_handle_ass_req_ct_data(struct gsm_subscriber_connection *conn, struct tlv_parsed *tp, + struct gsm0808_channel_type *ct, struct assignment_request *req, + uint8_t *cause) +{ + bool aoip = gscon_is_aoip(conn); + int rc; + + *req = (struct assignment_request){ + .assign_for = ASSIGN_FOR_BSSMAP_REQ, + .aoip = aoip, + }; + + if (bssmap_handle_ass_req_tp_cic(tp, aoip, &req->msc_assigned_cic, cause) < 0) + return -1; + + if (bssmap_handle_ass_req_tp_rtp_addr(tp, aoip, req->msc_rtp_addr, sizeof(req->msc_rtp_addr), &req->msc_rtp_port, cause) < 0) + return -1; + + /* According to 3GPP TS 48.008 § 3.2.1.1 note 13, the codec list IE + * shall be included for aoip unless channel type is signalling. */ + if (bssmap_handle_ass_req_tp_codec_list(conn, tp, aoip, cause) < 0) + return -1; + + rc = select_data_rates(req, ct, conn); + if (rc < 0) { + *cause = GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_UNAVAIL; + return -1; + } + + return 0; +} + static int bssmap_handle_ass_req_ct_speech(struct gsm_subscriber_connection *conn, struct tlv_parsed *tp, struct gsm0808_channel_type *ct, struct assignment_request *req, uint8_t *cause) @@ -1023,12 +1117,12 @@ bssmap_handle_ass_req_lcls(conn, &tp); /* Currently we only support a limited subset of all - * possible channel types, such as multi-slot or CSD */ + * possible channel types, such as multi-slot */ switch (ct.ch_indctr) { case GSM0808_CHAN_DATA: - LOGP(DMSC, LOGL_ERROR, "Unsupported channel type, currently only speech is supported!\n"); - cause = GSM0808_CAUSE_REQ_CODEC_TYPE_OR_CONFIG_NOT_SUPP; - goto reject; + if (bssmap_handle_ass_req_ct_data(conn, &tp, &ct, &req, &cause) < 0) + goto reject; + break; case GSM0808_CHAN_SPEECH: if (bssmap_handle_ass_req_ct_speech(conn, &tp, &ct, &req, &cause) < 0) goto reject; -- 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: 5 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • ...
  • 365
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.