[PATCH 3/8] tbf: Move the code to close all timeslots into the tbf class

Holger Hans Peter Freyther hfreyther at sysmocom.de
Sat Oct 19 14:26:33 UTC 2013


From: Holger Hans Peter Freyther <holger at moiji-mobile.com>

Move the code out of the sysmocom_socket (as this is only required
to talk to our hardware) and into the TBF class that actually knows
what a TBF is.
---
 src/sysmo_sock.cpp | 12 ++----------
 src/tbf.cpp        | 14 ++++++++++++++
 src/tbf.h          |  4 ++++
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/sysmo_sock.cpp b/src/sysmo_sock.cpp
index d075df0..591c105 100644
--- a/src/sysmo_sock.cpp
+++ b/src/sysmo_sock.cpp
@@ -82,8 +82,7 @@ static void pcu_sock_close(struct pcu_sock_state *state, int lost)
 {
 	struct osmo_fd *bfd = &state->conn_bfd;
 	struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
-	struct gprs_rlcmac_tbf *tbf;
-	uint8_t trx, ts, tfi;
+	uint8_t trx, ts;
 
 	LOGP(DL1IF, LOGL_NOTICE, "PCU socket has %s connection\n",
 		(lost) ? "LOST" : "closed");
@@ -108,14 +107,7 @@ static void pcu_sock_close(struct pcu_sock_state *state, int lost)
 #endif
 		for (ts = 0; ts < 8; ts++)
 			bts->trx[trx].pdch[ts].enable = 0;
-		for (tfi = 0; tfi < 32; tfi++) {
-			tbf = bts->trx[trx].ul_tbf[tfi];
-			if (tbf)
-				tbf_free(tbf);
-			tbf = bts->trx[trx].dl_tbf[tfi];
-			if (tbf)
-				tbf_free(tbf);
-		}
+		gprs_rlcmac_tbf::free_all(&bts->trx[trx]);
 	}
 
 	gprs_bssgp_destroy_or_exit();
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 79f1ea8..8aff463 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -237,3 +237,17 @@ struct gprs_rlcmac_tbf *tbf_alloc_ul(struct gprs_rlcmac_bts *bts,
 
 	return tbf;
 }
+
+void gprs_rlcmac_tbf::free_all(struct gprs_rlcmac_trx *trx)
+{
+	for (uint8_t tfi = 0; tfi < 32; tfi++) {
+		struct gprs_rlcmac_tbf *tbf;
+
+		tbf = trx->ul_tbf[tfi];
+		if (tbf)
+			tbf_free(tbf);
+		tbf = trx->dl_tbf[tfi];
+		if (tbf)
+			tbf_free(tbf);
+	}
+}
diff --git a/src/tbf.h b/src/tbf.h
index cf2481d..b73d0b8 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -87,6 +87,10 @@ extern struct llist_head gprs_rlcmac_sbas; /* list of single block allocs */
 
 
 struct gprs_rlcmac_tbf {
+
+	static void free_all(struct gprs_rlcmac_trx *trx);
+
+
 	struct llist_head list;
 	enum gprs_rlcmac_tbf_state state;
 	uint32_t state_flags;
-- 
1.8.4.rc3





More information about the osmocom-net-gprs mailing list