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 | |
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
-rw-r--r-- | include/osmo-bts/bts_trx.h | 1 | ||||
-rw-r--r-- | src/common/bts_trx.c | 14 | ||||
-rw-r--r-- | src/common/scheduler.c | 6 |
3 files changed, 18 insertions, 3 deletions
diff --git a/include/osmo-bts/bts_trx.h b/include/osmo-bts/bts_trx.h index e1959c86..c0dcb1ce 100644 --- a/include/osmo-bts/bts_trx.h +++ b/include/osmo-bts/bts_trx.h @@ -50,6 +50,7 @@ static inline struct gsm_bts_trx *gsm_bts_bb_trx_get_trx(struct gsm_bts_bb_trx * struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts); struct gsm_bts_trx *gsm_bts_trx_num(const struct gsm_bts *bts, int num); void gsm_bts_trx_init_shadow_ts(struct gsm_bts_trx *trx); +void gsm_bts_trx_free_shadow_ts(struct gsm_bts_trx *trx); char *gsm_trx_name(const struct gsm_bts_trx *trx); const char *gsm_trx_unit_id(struct gsm_bts_trx *trx); 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) |