diff --git a/src/sysmo_l1_if.c b/src/sysmo_l1_if.c index 68881bf3..2e1cb768 100644 --- a/src/sysmo_l1_if.c +++ b/src/sysmo_l1_if.c @@ -345,11 +345,12 @@ void *l1if_open_pdch(void *priv, uint32_t hlayer1) return fl1h; } -static int l1if_close_pdch(void *obj) +int l1if_close_pdch(void *obj) { struct femtol1_hdl *fl1h = obj; if (fl1h) l1if_transport_close(MQ_PDTCH_WRITE, fl1h); + talloc_free(fl1h); return 0; } diff --git a/src/sysmo_sock.cpp b/src/sysmo_sock.cpp index c4565952..1982472b 100644 --- a/src/sysmo_sock.cpp +++ b/src/sysmo_sock.cpp @@ -39,6 +39,10 @@ extern "C" { extern void *tall_pcu_ctx; +extern "C" { +int l1if_close_pdch(void *obj); +} + /* * SYSMO-PCU socket functions */ @@ -95,6 +99,10 @@ static void pcu_sock_close(struct pcu_sock_state *state, int lost) /* disable all slots, kick all TBFs */ for (trx = 0; trx < 8; trx++) { + if (bts->trx[trx].fl1h) { + l1if_close_pdch(bts->trx[trx].fl1h); + bts->trx[trx].fl1h = NULL; + } for (ts = 0; ts < 8; ts++) bts->trx[trx].pdch[ts].enable = 0; for (tfi = 0; tfi < 32; tfi++) {