Change in osmo-pcu[master]: tbf_dl: Update (egprs_)ms_class for already known MS

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
Thu Oct 29 12:08:49 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/20945 )

Change subject: tbf_dl: Update (egprs_)ms_class for already known MS
......................................................................

tbf_dl: Update (egprs_)ms_class for already known MS

If SGSN provides us with MS class information upon DL data, let's use it
and set it in an already existing MS object if not yet known.

Also remove all unneeded code passing ms_class to append_data() which
would simply try to (again) set the ms_class.

Change-Id: I4979c9344bffd3ba7657bbab94981d233eab801f
---
M src/tbf_dl.cpp
M src/tbf_dl.h
M tests/tbf/TbfTest.cpp
3 files changed, 20 insertions(+), 33 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved



diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 7d1f85c..c25f2af 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -94,13 +94,6 @@
 	tbf_dl_egprs_ctr_description,
 };
 
-static inline void tbf_update_ms_class(struct gprs_rlcmac_tbf *tbf,
-					const uint8_t ms_class)
-{
-	if (!tbf->ms_class() && ms_class)
-		tbf->ms()->set_ms_class(ms_class);
-}
-
 static void llc_timer_cb(void *_tbf)
 {
 	struct gprs_rlcmac_dl_tbf *tbf = (struct gprs_rlcmac_dl_tbf *)_tbf;
@@ -225,9 +218,8 @@
 	}
 }
 
-int gprs_rlcmac_dl_tbf::append_data(const uint8_t ms_class,
-				const uint16_t pdu_delay_csec,
-				const uint8_t *data, const uint16_t len)
+int gprs_rlcmac_dl_tbf::append_data(uint16_t pdu_delay_csec,
+				    const uint8_t *data, uint16_t len)
 {
 	struct timespec expire_time;
 
@@ -240,7 +232,6 @@
 	gprs_llc_queue::calc_pdu_lifetime(bts, pdu_delay_csec, &expire_time);
 	memcpy(msgb_put(llc_msg, len), data, len);
 	llc_queue()->enqueue(llc_msg, &expire_time);
-	tbf_update_ms_class(this, ms_class);
 	start_llc_timer();
 
 	if (state_is(GPRS_RLCMAC_WAIT_RELEASE)) {
@@ -308,15 +299,6 @@
 
 	/* check for existing TBF */
 	ms = bts->bts->ms_store().get_ms(tlli, tlli_old, imsi);
-	if (ms) {
-		dl_tbf = ms->dl_tbf();
-
-		/* If we known the GPRS/EGPRS MS class, use it */
-		if (ms->ms_class() || ms->egprs_ms_class()) {
-			ms_class = ms->ms_class();
-			egprs_ms_class = ms->egprs_ms_class();
-		}
-	}
 
 	if (ms && strlen(ms->imsi()) == 0) {
 		ms_old = bts->bts->ms_store().get_ms(0, 0, imsi);
@@ -329,7 +311,7 @@
 
 			GprsMs::Guard guard_old(ms_old);
 
-			if (!dl_tbf && ms_old->dl_tbf()) {
+			if (!ms->dl_tbf() && ms_old->dl_tbf()) {
 				LOGP(DTBF, LOGL_NOTICE,
 				     "IMSI %s, old TBF %s: moving DL TBF to new MS object\n",
 				     imsi, ms_old->dl_tbf()->name());
@@ -345,15 +327,21 @@
 		ms = bts->bts->ms_alloc(ms_class, egprs_ms_class);
 	ms->set_imsi(imsi);
 	ms->confirm_tlli(tlli);
+	if (!ms->ms_class() && ms_class) {
+		ms->set_ms_class(ms_class);
+	}
+	if (!ms->egprs_ms_class() && egprs_ms_class) {
+		ms->set_egprs_ms_class(egprs_ms_class);
+	}
 
+	dl_tbf = ms->dl_tbf();
 	if (!dl_tbf) {
 		rc = tbf_new_dl_assignment(bts, ms, &dl_tbf);
 		if (rc < 0)
 			return rc;
 	}
 
-	/* TODO: ms_class vs. egprs_ms_class is not handled here */
-	rc = dl_tbf->append_data(ms_class, delay_csec, data, len);
+	rc = dl_tbf->append_data(delay_csec, data, len);
 
 	return rc;
 }
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index caa439a..685e855 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -49,9 +49,8 @@
 		const uint8_t egprs_ms_class, const uint16_t delay_csec,
 		const uint8_t *data, const uint16_t len);
 
-	int append_data(const uint8_t ms_class,
-			const uint16_t pdu_delay_csec,
-			const uint8_t *data, const uint16_t len);
+	int append_data(uint16_t pdu_delay_csec,
+			const uint8_t *data, uint16_t len);
 
 	int rcvd_dl_ack(bool final, uint8_t ssn, uint8_t *rbb);
 	int rcvd_dl_ack(bool final_ack, unsigned first_bsn, struct bitvec *rbb);
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 04e711c..096b071 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -277,8 +277,8 @@
 		llc_data[i] = i%256;
 
 	/* Schedule two LLC frames */
-	dl_tbf->append_data(ms_class, 1000, llc_data, sizeof(llc_data));
-	dl_tbf->append_data(ms_class, 1000, llc_data, sizeof(llc_data));
+	dl_tbf->append_data(1000, llc_data, sizeof(llc_data));
+	dl_tbf->append_data(1000, llc_data, sizeof(llc_data));
 
 
 	/* Send only a few RLC/MAC blocks */
@@ -362,8 +362,8 @@
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 
 	/* Schedule two LLC frames */
-	dl_tbf->append_data(ms_class, 1000, llc_data, sizeof(llc_data));
-	dl_tbf->append_data(ms_class, 1000, llc_data, sizeof(llc_data));
+	dl_tbf->append_data(1000, llc_data, sizeof(llc_data));
+	dl_tbf->append_data(1000, llc_data, sizeof(llc_data));
 
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 
@@ -2668,7 +2668,7 @@
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 
 	/* Schedule a small LLC frame */
-	dl_tbf->append_data(ms_class, 1000, test_data, 10);
+	dl_tbf->append_data(1000, test_data, 10);
 
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 
@@ -2678,7 +2678,7 @@
 		request_dl_rlc_block(dl_tbf, &fn);
 
 	/* Schedule a large LLC frame */
-	dl_tbf->append_data(ms_class, 1000, test_data, sizeof(test_data));
+	dl_tbf->append_data(1000, test_data, sizeof(test_data));
 
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 
@@ -2726,7 +2726,7 @@
 	 * 2 RLC data blocks. Which are enough to test Header Type 1
 	 * cases
 	 */
-	dl_tbf->append_data(ms_class, 1000, test_data, 100);
+	dl_tbf->append_data(1000, test_data, 100);
 
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
 

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I4979c9344bffd3ba7657bbab94981d233eab801f
Gerrit-Change-Number: 20945
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201029/71f86e75/attachment.htm>


More information about the gerrit-log mailing list