fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/41905?usp=email )
Change subject: trxcon/l1sched: add and use l1sched_del_all_ts() ......................................................................
trxcon/l1sched: add and use l1sched_del_all_ts()
Change-Id: I35ce97459dcd0e2cac4ab8927f02fe0232aa6142 --- M src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h M src/host/trxcon/src/sched_trx.c 2 files changed, 13 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/05/41905/1
diff --git a/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h b/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h index d145929..b2fc99d 100644 --- a/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h +++ b/src/host/trxcon/include/osmocom/bb/l1sched/l1sched.h @@ -343,6 +343,7 @@ /* Timeslot management functions */ struct l1sched_ts *l1sched_add_ts(struct l1sched_state *sched, int tn); void l1sched_del_ts(struct l1sched_state *sched, int tn); +void l1sched_del_all_ts(struct l1sched_state *sched); int l1sched_reset_ts(struct l1sched_state *sched, int tn); int l1sched_configure_ts(struct l1sched_state *sched, int tn, enum gsm_phys_chan_config config); diff --git a/src/host/trxcon/src/sched_trx.c b/src/host/trxcon/src/sched_trx.c index 7d5c70f..eafb645 100644 --- a/src/host/trxcon/src/sched_trx.c +++ b/src/host/trxcon/src/sched_trx.c @@ -165,33 +165,27 @@
void l1sched_free(struct l1sched_state *sched) { - unsigned int tn; - if (sched == NULL) return;
LOGP_SCHEDC(sched, LOGL_NOTICE, "Shutdown scheduler\n");
/* Free all potentially allocated timeslots */ - for (tn = 0; tn < ARRAY_SIZE(sched->ts); tn++) - l1sched_del_ts(sched, tn); + l1sched_del_all_ts(sched);
talloc_free(sched); }
void l1sched_reset(struct l1sched_state *sched) { - unsigned int tn; - if (sched == NULL) return;
LOGP_SCHEDC(sched, LOGL_NOTICE, "Reset scheduler\n");
/* Free all potentially allocated timeslots */ - for (tn = 0; tn < ARRAY_SIZE(sched->ts); tn++) - l1sched_del_ts(sched, tn); - + l1sched_del_all_ts(sched); + /* Reset UL SACCH cache */ l1sched_sacch_cache_update(sched, meas_rep_dummy);
sched->bsic = 0; @@ -253,6 +247,15 @@ l1sched_cfg_pchan_comb_ind(sched, tn, GSM_PCHAN_NONE); }
+void l1sched_del_all_ts(struct l1sched_state *sched) +{ + for (unsigned int tn = 0; tn < ARRAY_SIZE(sched->ts); tn++) { + if (sched->ts[tn] == NULL) + continue; + l1sched_del_ts(sched, tn); + } +} + static struct l1sched_lchan_state * l1sched_ts_add_lchan(struct l1sched_ts *ts, enum l1sched_lchan_type type)