Change in osmo-pcu[master]: Move dl_tbf allocation code to correct file

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Fri Oct 23 20:42:54 UTC 2020


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/20860 )


Change subject: Move dl_tbf allocation code to correct file
......................................................................

Move dl_tbf allocation code to correct file

Change-Id: I50d41b1c6f244edcfb78646d0fac4e47c2e3e561
---
M src/tbf.cpp
M src/tbf.h
M src/tbf_dl.cpp
M src/tbf_dl.h
4 files changed, 116 insertions(+), 111 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/60/20860/1

diff --git a/src/tbf.cpp b/src/tbf.cpp
index b2aad0c..2fbf5bf 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -109,25 +109,6 @@
         { "rlc:nacked",                     "RLC Nacked " },
 };
 
-static const struct rate_ctr_desc tbf_dl_gprs_ctr_description[] = {
-        { "gprs:downlink:cs1",              "CS1        " },
-        { "gprs:downlink:cs2",              "CS2        " },
-        { "gprs:downlink:cs3",              "CS3        " },
-        { "gprs:downlink:cs4",              "CS4        " },
-};
-
-static const struct rate_ctr_desc tbf_dl_egprs_ctr_description[] = {
-        { "egprs:downlink:mcs1",            "MCS1        " },
-        { "egprs:downlink:mcs2",            "MCS2        " },
-        { "egprs:downlink:mcs3",            "MCS3        " },
-        { "egprs:downlink:mcs4",            "MCS4        " },
-        { "egprs:downlink:mcs5",            "MCS5        " },
-        { "egprs:downlink:mcs6",            "MCS6        " },
-        { "egprs:downlink:mcs7",            "MCS7        " },
-        { "egprs:downlink:mcs8",            "MCS8        " },
-        { "egprs:downlink:mcs9",            "MCS9        " },
-};
-
 const struct rate_ctr_group_desc tbf_ctrg_desc = {
         "pcu:tbf",
         "TBF Statistics",
@@ -136,22 +117,6 @@
         tbf_ctr_description,
 };
 
-static const struct rate_ctr_group_desc tbf_dl_gprs_ctrg_desc = {
-        "tbf:gprs",
-        "Data Blocks",
-        OSMO_STATS_CLASS_SUBSCRIBER,
-        ARRAY_SIZE(tbf_dl_gprs_ctr_description),
-        tbf_dl_gprs_ctr_description,
-};
-
-static const struct rate_ctr_group_desc tbf_dl_egprs_ctrg_desc = {
-        "tbf:egprs",
-        "Data Blocks",
-        OSMO_STATS_CLASS_SUBSCRIBER,
-        ARRAY_SIZE(tbf_dl_egprs_ctr_description),
-        tbf_dl_egprs_ctr_description,
-};
-
 static void setup_egprs_mode(gprs_rlcmac_bts *bts, GprsMs *ms)
 {
 	if (mcs_is_edge_gmsk(mcs_get_egprs_by_num(bts->max_mcs_ul)) &&
@@ -894,80 +859,6 @@
 	return 0;
 }
 
-static int dl_tbf_dtor(struct gprs_rlcmac_dl_tbf *tbf)
-{
-	tbf->~gprs_rlcmac_dl_tbf();
-	return 0;
-}
-
-struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot)
-{
-	struct gprs_rlcmac_dl_tbf *tbf;
-	int rc;
-
-	OSMO_ASSERT(ms != NULL);
-
-	if (ms->egprs_ms_class() == 0 && bts->egprs_enabled) {
-		if (ms->ms_class() > 0) {
-			LOGP(DTBF, LOGL_NOTICE, "Not accepting non-EGPRS phone in EGPRS-only mode\n");
-			bts->bts->do_rate_ctr_inc(CTR_TBF_FAILED_EGPRS_ONLY);
-			return NULL;
-		}
-		ms->set_egprs_ms_class(1);
-	}
-
-	LOGP(DTBF, LOGL_DEBUG, "********** DL-TBF starts here **********\n");
-	LOGP(DTBF, LOGL_INFO, "Allocating DL TBF: MS_CLASS=%d/%d\n",
-	     ms->ms_class(), ms->egprs_ms_class());
-
-	tbf = talloc(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf);
-
-	if (!tbf)
-		return NULL;
-
-	talloc_set_destructor(tbf, dl_tbf_dtor);
-	new (tbf) gprs_rlcmac_dl_tbf(bts->bts, ms);
-
-	rc = tbf->setup(use_trx, single_slot);
-	/* if no resource */
-	if (rc < 0) {
-		talloc_free(tbf);
-		return NULL;
-	}
-
-	if (tbf->is_egprs_enabled()) {
-		tbf->set_window_size();
-		tbf->m_dl_egprs_ctrs = rate_ctr_group_alloc(tbf,
-							&tbf_dl_egprs_ctrg_desc,
-							tbf->m_ctrs->idx);
-		if (!tbf->m_dl_egprs_ctrs) {
-			LOGPTBF(tbf, LOGL_ERROR, "Couldn't allocate EGPRS DL counters\n");
-			talloc_free(tbf);
-			return NULL;
-		}
-	} else {
-		tbf->m_dl_gprs_ctrs = rate_ctr_group_alloc(tbf,
-							&tbf_dl_gprs_ctrg_desc,
-							tbf->m_ctrs->idx);
-		if (!tbf->m_dl_gprs_ctrs) {
-			LOGPTBF(tbf, LOGL_ERROR, "Couldn't allocate GPRS DL counters\n");
-			talloc_free(tbf);
-			return NULL;
-		}
-	}
-
-	llist_add(&tbf->list(), &bts->bts->dl_tbfs());
-	tbf->bts->do_rate_ctr_inc(CTR_TBF_DL_ALLOCATED);
-
-	tbf->m_last_dl_poll_fn = -1;
-	tbf->m_last_dl_drained_fn = -1;
-
-	osmo_clock_gettime(CLOCK_MONOTONIC, &tbf->m_bw.dl_bw_tv);
-	osmo_clock_gettime(CLOCK_MONOTONIC, &tbf->m_bw.dl_loss_tv);
-
-	return tbf;
-}
-
 static void tbf_timer_cb(void *_tbf)
 {
 	struct gprs_rlcmac_tbf *tbf = (struct gprs_rlcmac_tbf *)_tbf;
diff --git a/src/tbf.h b/src/tbf.h
index 65654ea..08d0d1d 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -348,8 +348,6 @@
 	mutable char m_name_buf[60];
 };
 
-struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot);
-
 void tbf_free(struct gprs_rlcmac_tbf *tbf);
 
 int tbf_assign_control_ts(struct gprs_rlcmac_tbf *tbf);
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 0d692cc..b41c161 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -43,6 +43,7 @@
 	#include <osmocom/core/linuxlist.h>
 	#include <osmocom/core/logging.h>
 	#include <osmocom/core/rate_ctr.h>
+	#include <osmocom/core/stats.h>
 	#include <osmocom/core/timer.h>
 	#include <osmocom/core/utils.h>
 	#include <osmocom/gsm/gsm_utils.h>
@@ -56,6 +57,43 @@
 /* After sending these frames, we poll for ack/nack. */
 #define POLL_ACK_AFTER_FRAMES 20
 
+extern void *tall_pcu_ctx;
+
+static const struct rate_ctr_desc tbf_dl_gprs_ctr_description[] = {
+	{ "gprs:downlink:cs1",              "CS1        " },
+	{ "gprs:downlink:cs2",              "CS2        " },
+	{ "gprs:downlink:cs3",              "CS3        " },
+	{ "gprs:downlink:cs4",              "CS4        " },
+};
+
+static const struct rate_ctr_desc tbf_dl_egprs_ctr_description[] = {
+	{ "egprs:downlink:mcs1",            "MCS1        " },
+	{ "egprs:downlink:mcs2",            "MCS2        " },
+	{ "egprs:downlink:mcs3",            "MCS3        " },
+	{ "egprs:downlink:mcs4",            "MCS4        " },
+	{ "egprs:downlink:mcs5",            "MCS5        " },
+	{ "egprs:downlink:mcs6",            "MCS6        " },
+	{ "egprs:downlink:mcs7",            "MCS7        " },
+	{ "egprs:downlink:mcs8",            "MCS8        " },
+	{ "egprs:downlink:mcs9",            "MCS9        " },
+};
+
+static const struct rate_ctr_group_desc tbf_dl_gprs_ctrg_desc = {
+	"tbf:gprs",
+	"Data Blocks",
+	OSMO_STATS_CLASS_SUBSCRIBER,
+	ARRAY_SIZE(tbf_dl_gprs_ctr_description),
+	tbf_dl_gprs_ctr_description,
+};
+
+static const struct rate_ctr_group_desc tbf_dl_egprs_ctrg_desc = {
+	"tbf:egprs",
+	"Data Blocks",
+	OSMO_STATS_CLASS_SUBSCRIBER,
+	ARRAY_SIZE(tbf_dl_egprs_ctr_description),
+	tbf_dl_egprs_ctr_description,
+};
+
 static inline void tbf_update_ms_class(struct gprs_rlcmac_tbf *tbf,
 					const uint8_t ms_class)
 {
@@ -85,6 +123,80 @@
 	timespecclear(&dl_loss_tv);
 }
 
+static int dl_tbf_dtor(struct gprs_rlcmac_dl_tbf *tbf)
+{
+	tbf->~gprs_rlcmac_dl_tbf();
+	return 0;
+}
+
+struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot)
+{
+	struct gprs_rlcmac_dl_tbf *tbf;
+	int rc;
+
+	OSMO_ASSERT(ms != NULL);
+
+	if (ms->egprs_ms_class() == 0 && bts->egprs_enabled) {
+		if (ms->ms_class() > 0) {
+			LOGP(DTBF, LOGL_NOTICE, "Not accepting non-EGPRS phone in EGPRS-only mode\n");
+			bts->bts->do_rate_ctr_inc(CTR_TBF_FAILED_EGPRS_ONLY);
+			return NULL;
+		}
+		ms->set_egprs_ms_class(1);
+	}
+
+	LOGP(DTBF, LOGL_DEBUG, "********** DL-TBF starts here **********\n");
+	LOGP(DTBF, LOGL_INFO, "Allocating DL TBF: MS_CLASS=%d/%d\n",
+	     ms->ms_class(), ms->egprs_ms_class());
+
+	tbf = talloc(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf);
+
+	if (!tbf)
+		return NULL;
+
+	talloc_set_destructor(tbf, dl_tbf_dtor);
+	new (tbf) gprs_rlcmac_dl_tbf(bts->bts, ms);
+
+	rc = tbf->setup(use_trx, single_slot);
+	/* if no resource */
+	if (rc < 0) {
+		talloc_free(tbf);
+		return NULL;
+	}
+
+	if (tbf->is_egprs_enabled()) {
+		tbf->set_window_size();
+		tbf->m_dl_egprs_ctrs = rate_ctr_group_alloc(tbf,
+							&tbf_dl_egprs_ctrg_desc,
+							tbf->m_ctrs->idx);
+		if (!tbf->m_dl_egprs_ctrs) {
+			LOGPTBF(tbf, LOGL_ERROR, "Couldn't allocate EGPRS DL counters\n");
+			talloc_free(tbf);
+			return NULL;
+		}
+	} else {
+		tbf->m_dl_gprs_ctrs = rate_ctr_group_alloc(tbf,
+							&tbf_dl_gprs_ctrg_desc,
+							tbf->m_ctrs->idx);
+		if (!tbf->m_dl_gprs_ctrs) {
+			LOGPTBF(tbf, LOGL_ERROR, "Couldn't allocate GPRS DL counters\n");
+			talloc_free(tbf);
+			return NULL;
+		}
+	}
+
+	llist_add(&tbf->list(), &bts->bts->dl_tbfs());
+	tbf->bts->do_rate_ctr_inc(CTR_TBF_DL_ALLOCATED);
+
+	tbf->m_last_dl_poll_fn = -1;
+	tbf->m_last_dl_drained_fn = -1;
+
+	osmo_clock_gettime(CLOCK_MONOTONIC, &tbf->m_bw.dl_bw_tv);
+	osmo_clock_gettime(CLOCK_MONOTONIC, &tbf->m_bw.dl_loss_tv);
+
+	return tbf;
+}
+
 gprs_rlcmac_dl_tbf::gprs_rlcmac_dl_tbf(BTS *bts_, GprsMs *ms) :
 	gprs_rlcmac_tbf(bts_, ms, GPRS_RLCMAC_DL_TBF),
 	m_tx_counter(0),
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index 9da942f..caa439a 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -149,4 +149,8 @@
 	else
 		return NULL;
 }
+
+struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms,
+					    int8_t use_trx, bool single_slot);
+
 #endif

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/20860
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I50d41b1c6f244edcfb78646d0fac4e47c2e3e561
Gerrit-Change-Number: 20860
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201023/3afecff9/attachment.htm>


More information about the gerrit-log mailing list