diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-10-11 11:05:30 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-10-11 11:19:11 +0200 |
commit | 33b4b15f75bca787e917c227013e430668be351d (patch) | |
tree | c4c6e5e0fe90e93c39b82db1170c4aa0199fa1a5 /src/common | |
parent | 8e7d00f1ce706b73d9ff339d96f22505aa12662b (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.c | 14 | ||||
-rw-r--r-- | src/common/scheduler.c | 6 |
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) |