summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2019-11-09 01:45:11 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2019-11-09 02:14:50 +0700
commit8eae2fcce0620d3a7a66437161050847ac666812 (patch)
treecf92782575c749216176d8217718b3366452551b
parent7a010b10f7148ce42cead66f9dd4b7901b448418 (diff)
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
-rw-r--r--TODO-RELEASE1
-rw-r--r--include/osmocom/gprs/gprs_bssgp.h2
-rw-r--r--src/gb/gprs_bssgp.c9
-rw-r--r--src/gb/libosmogb.map1
4 files changed, 13 insertions, 0 deletions
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;