aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-10-11 11:05:30 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-10-11 11:19:11 +0200
commit33b4b15f75bca787e917c227013e430668be351d (patch)
treec4c6e5e0fe90e93c39b82db1170c4aa0199fa1a5 /src/common
parent8e7d00f1ce706b73d9ff339d96f22505aa12662b (diff)
Add new gsm_bts_trx_free_shadow_ts() function
Use it as a counterpart of gsm_bts_trx_init_shadow_ts() Change-Id: I38baa2b2cfcf6221325d45860b3c7dd53235b8ff
Diffstat (limited to 'src/common')
-rw-r--r--src/common/bts_trx.c14
-rw-r--r--src/common/scheduler.c6
2 files changed, 17 insertions, 3 deletions
diff --git a/src/common/bts_trx.c b/src/common/bts_trx.c
index 7ef5b52a..b16a31c4 100644
--- a/src/common/bts_trx.c
+++ b/src/common/bts_trx.c
@@ -112,6 +112,20 @@ void gsm_bts_trx_init_shadow_ts(struct gsm_bts_trx *trx)
}
}
+void gsm_bts_trx_free_shadow_ts(struct gsm_bts_trx *trx)
+{
+ unsigned int tn;
+
+ for (tn = 0; tn < ARRAY_SIZE(trx->ts); tn++) {
+ struct gsm_bts_trx_ts *shadow_ts = trx->ts[tn].vamos.peer;
+ if (!shadow_ts)
+ continue;
+
+ talloc_free(shadow_ts);
+ trx->ts[tn].vamos.peer = NULL;
+ }
+}
+
struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts)
{
struct gsm_bts_trx *trx = talloc_zero(bts, struct gsm_bts_trx);
diff --git a/src/common/scheduler.c b/src/common/scheduler.c
index 5118904f..2a729e47 100644
--- a/src/common/scheduler.c
+++ b/src/common/scheduler.c
@@ -694,10 +694,10 @@ void trx_sched_clean(struct gsm_bts_trx *trx)
/* Clean primary and shadow timeslots */
trx_sched_clean_ts(ts);
trx_sched_clean_ts(ts->vamos.peer);
-
- talloc_free(ts->vamos.peer);
- ts->vamos.peer = NULL;
}
+
+ /* Free previously allocated shadow timeslots */
+ gsm_bts_trx_free_shadow_ts(trx);
}
struct msgb *_sched_dequeue_prim(struct l1sched_ts *l1ts, const struct trx_dl_burst_req *br)