fixeria has uploaded this change for review.
trxcon: properly handle PDCH slotmask in UL/DL TBF CFG.Req
Change-Id: I4c2ff25217fba0b6b4704f023071b86ed9afb55c
Related: OS#5500
---
M src/host/trxcon/src/trxcon_fsm.c
1 file changed, 36 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/39/34139/1
diff --git a/src/host/trxcon/src/trxcon_fsm.c b/src/host/trxcon/src/trxcon_fsm.c
index eabab3d..702d62c 100644
--- a/src/host/trxcon/src/trxcon_fsm.c
+++ b/src/host/trxcon/src/trxcon_fsm.c
@@ -536,6 +536,30 @@
trxcon->gprs = NULL;
}
+static void handle_tbf_cfg_req(struct trxcon_inst *trxcon)
+{
+ const struct l1gprs_state *gprs = trxcon->gprs;
+ struct l1sched_state *sched = trxcon->sched;
+
+ for (unsigned int tn = 0; tn < ARRAY_SIZE(gprs->pdch); tn++) {
+ const struct l1gprs_pdch *pdch = &gprs->pdch[tn];
+
+ if ((pdch->ul_tbf_count + pdch->dl_tbf_count) > 0) {
+ if (sched->ts[tn] != NULL) /* already enabled */
+ continue;
+ if (l1sched_configure_ts(sched, tn, GSM_PCHAN_PDCH) != 0)
+ continue;
+ OSMO_ASSERT(sched->ts[tn] != NULL);
+
+ l1sched_activate_lchan(sched->ts[tn], L1SCHED_PDTCH);
+ l1sched_activate_lchan(sched->ts[tn], L1SCHED_PTCCH);
+ /* FIXME: set TSC for both lchans */
+ } else {
+ l1sched_del_ts(sched, tn);
+ }
+ }
+}
+
static void trxcon_st_packet_data_action(struct osmo_fsm_inst *fi,
uint32_t event, void *data)
{
@@ -550,9 +574,11 @@
break;
case TRXCON_EV_GPRS_UL_TBF_CFG_REQ:
l1gprs_handle_ul_tbf_cfg_req(trxcon->gprs, (struct msgb *)data);
+ handle_tbf_cfg_req(trxcon);
break;
case TRXCON_EV_GPRS_DL_TBF_CFG_REQ:
l1gprs_handle_dl_tbf_cfg_req(trxcon->gprs, (struct msgb *)data);
+ handle_tbf_cfg_req(trxcon);
break;
case TRXCON_EV_GPRS_UL_BLOCK_REQ:
{
To view, visit change 34139. To unsubscribe, or for help writing mail filters, visit settings.