From 8eae2fcce0620d3a7a66437161050847ac666812 Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Sat, 9 Nov 2019 01:45:11 +0700 Subject: GPRS/BSSGP: introduce bssgp_bvc_ctx_free() So far we had a function to allocate a new bssgp_bvc_ctx, but not the opposite one. Let's finally introduce it, so it will be used at least in OsmoPCU. Please note that the new symbol has 'bssgp_' prefix, not 'btsctx_'. Change-Id: Ia78979379dbdccd6e4628c16f00d0c06d9212172 --- TODO-RELEASE | 1 + include/osmocom/gprs/gprs_bssgp.h | 2 ++ src/gb/gprs_bssgp.c | 9 +++++++++ src/gb/libosmogb.map | 1 + 4 files changed, 13 insertions(+) diff --git a/TODO-RELEASE b/TODO-RELEASE index 9af92c17..692bdc18 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -10,3 +10,4 @@ core osmo_tdef_get() change val_if_not_present arg from unsigned long to long to allow passing -1 core struct osmo_tdef fields min_val,max_val added, ABI break (arrays of structs used in programs) gsm API added osmo_gsm48_rfpowercap2powerclass() +gb API added bssgp_bvc_ctx_free() diff --git a/include/osmocom/gprs/gprs_bssgp.h b/include/osmocom/gprs/gprs_bssgp.h index 400c3e00..0f87333a 100644 --- a/include/osmocom/gprs/gprs_bssgp.h +++ b/include/osmocom/gprs/gprs_bssgp.h @@ -112,6 +112,8 @@ extern struct llist_head bssgp_bvc_ctxts; struct bssgp_bvc_ctx *btsctx_by_raid_cid(const struct gprs_ra_id *raid, uint16_t cid); /* Find a BTS context based on BVCI+NSEI tuple */ struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei); +/* Free a given BTS context */ +void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx); #define BVC_F_BLOCKED 0x0001 diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c index b695c284..896f1c5a 100644 --- a/src/gb/gprs_bssgp.c +++ b/src/gb/gprs_bssgp.c @@ -141,6 +141,15 @@ struct bssgp_bvc_ctx *btsctx_alloc(uint16_t bvci, uint16_t nsei) return ctx; } +void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx) +{ + if (!ctx) + return; + rate_ctr_group_free(ctx->ctrg); + llist_del(&ctx->list); + talloc_free(ctx); +} + /* Chapter 10.4.5: Flow Control BVC ACK */ static int bssgp_tx_fc_bvc_ack(uint16_t nsei, uint8_t tag, uint16_t ns_bvci) { diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map index 5e675a66..ad139c1c 100644 --- a/src/gb/libosmogb.map +++ b/src/gb/libosmogb.map @@ -80,6 +80,7 @@ gprs_nsvc_state_append; gprs_log_filter_fn; btsctx_alloc; +bssgp_bvc_ctx_free; btsctx_by_bvci_nsei; btsctx_by_raid_cid; -- cgit v1.2.3