Change in ...osmo-pcu[master]: pdch.cpp: Use pcu_l1_meas previously filled by lower layers

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
Wed Sep 25 11:52:46 UTC 2019


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


Change subject: pdch.cpp: Use pcu_l1_meas previously filled by lower layers
......................................................................

pdch.cpp: Use pcu_l1_meas previously filled by lower layers

Otherwise, a new meas object is allocated in the stack in upper layers
which doesn't contain the link_qual information (have_link_qual=0),
outputting following error:

osmo-pcu/src/gprs_ms.cpp:644 Unable to update UL (M)CS CS-2 because we don't have link quality measurements.

Change-Id: I1980ca325c8d65f3f6310fa697dd810eec7ab077
---
M src/pdch.cpp
M src/pdch.h
2 files changed, 19 insertions(+), 21 deletions(-)



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

diff --git a/src/pdch.cpp b/src/pdch.cpp
index 5ae7e63..24bbbb1 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -373,12 +373,11 @@
 		"at no request\n");
 }
 
-void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_nack, uint32_t fn)
+void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_nack, uint32_t fn, struct pcu_l1_meas *meas)
 {
 	int8_t tfi = 0; /* must be signed */
 	struct gprs_rlcmac_dl_tbf *tbf;
 	int rc;
-	struct pcu_l1_meas meas;
 	int num_blocks;
 	uint8_t bits_data[RLC_GPRS_WS/8];
 	bitvec bits;
@@ -435,16 +434,15 @@
 
 	/* get measurements */
 	if (tbf->ms()) {
-		get_meas(&meas, &ack_nack->Channel_Quality_Report);
-		tbf->ms()->update_l1_meas(&meas);
+		get_meas(meas, &ack_nack->Channel_Quality_Report);
+		tbf->ms()->update_l1_meas(meas);
 	}
 }
 
-void gprs_rlcmac_pdch::rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *ack_nack, uint32_t fn)
+void gprs_rlcmac_pdch::rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *ack_nack, uint32_t fn, struct pcu_l1_meas *meas)
 {
 	int8_t tfi = 0; /* must be signed */
 	struct gprs_rlcmac_dl_tbf *tbf;
-	struct pcu_l1_meas meas;
 	int rc;
 	int num_blocks;
 	uint8_t bits_data[RLC_EGPRS_MAX_WS/8];
@@ -526,13 +524,13 @@
 	if (tbf->ms()) {
 		/* TODO: Implement Measurements parsing for EGPRS */
 		/*
-		get_meas(&meas, &ack_nack->Channel_Quality_Report);
-		tbf->ms()->update_l1_meas(&meas);
+		get_meas(meas, &ack_nack->Channel_Quality_Report);
+		tbf->ms()->update_l1_meas(meas);
 		*/
 	}
 }
 
-void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request, uint32_t fn)
+void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request, uint32_t fn, struct pcu_l1_meas *meas)
 {
 	struct gprs_rlcmac_sba *sba;
 
@@ -543,7 +541,6 @@
 		uint8_t ms_class = 0;
 		uint8_t egprs_ms_class = 0;
 		uint8_t ta = GSM48_TA_INVALID;
-		struct pcu_l1_meas meas;
 
 		GprsMs *ms = bts()->ms_by_tlli(tlli);
 		/* Keep the ms, even if it gets idle temporarily */
@@ -621,8 +618,8 @@
 
 		/* get measurements */
 		if (ul_tbf->ms()) {
-			get_meas(&meas, request);
-			ul_tbf->ms()->update_l1_meas(&meas);
+			get_meas(meas, request);
+			ul_tbf->ms()->update_l1_meas(meas);
 		}
 		return;
 	}
@@ -681,7 +678,7 @@
 
 /* Received Uplink RLC control block. */
 int gprs_rlcmac_pdch::rcv_control_block(const uint8_t *data, uint8_t data_len,
-					uint32_t fn, GprsCodingScheme cs)
+					uint32_t fn, struct pcu_l1_meas *meas, GprsCodingScheme cs)
 {
 	bitvec *rlc_block;
 	RlcMacUplink_t *ul_control_block;
@@ -708,13 +705,13 @@
 		rcv_control_ack(&ul_control_block->u.Packet_Control_Acknowledgement, fn);
 		break;
 	case MT_PACKET_DOWNLINK_ACK_NACK:
-		rcv_control_dl_ack_nack(&ul_control_block->u.Packet_Downlink_Ack_Nack, fn);
+		rcv_control_dl_ack_nack(&ul_control_block->u.Packet_Downlink_Ack_Nack, fn, meas);
 		break;
 	case MT_EGPRS_PACKET_DOWNLINK_ACK_NACK:
-		rcv_control_egprs_dl_ack_nack(&ul_control_block->u.Egprs_Packet_Downlink_Ack_Nack, fn);
+		rcv_control_egprs_dl_ack_nack(&ul_control_block->u.Egprs_Packet_Downlink_Ack_Nack, fn, meas);
 		break;
 	case MT_PACKET_RESOURCE_REQUEST:
-		rcv_resource_request(&ul_control_block->u.Packet_Resource_Request, fn);
+		rcv_resource_request(&ul_control_block->u.Packet_Resource_Request, fn, meas);
 		break;
 	case MT_PACKET_MEASUREMENT_REPORT:
 		rcv_measurement_report(&ul_control_block->u.Packet_Measurement_Report, fn);
@@ -832,7 +829,7 @@
 		rc = rcv_data_block(data, data_len, fn, meas, cs);
 		break;
 	case GPRS_RLCMAC_CONTROL_BLOCK:
-		rc = rcv_control_block(data, data_len, fn, cs);
+		rc = rcv_control_block(data, data_len, fn, meas, cs);
 		break;
 	case GPRS_RLCMAC_CONTROL_BLOCK_OPT:
 		LOGP(DRLCMAC, LOGL_NOTICE, "GPRS_RLCMAC_CONTROL_BLOCK_OPT block payload is not supported.\n");
diff --git a/src/pdch.h b/src/pdch.h
index e23d56f..3015023 100644
--- a/src/pdch.h
+++ b/src/pdch.h
@@ -94,12 +94,13 @@
 
 #ifdef __cplusplus
 private:
-	int rcv_control_block(const uint8_t *data, uint8_t data_len, uint32_t fn, GprsCodingScheme cs);
+	int rcv_control_block(const uint8_t *data, uint8_t data_len, uint32_t fn,
+			      struct pcu_l1_meas *meas, GprsCodingScheme cs);
 
 	void rcv_control_ack(Packet_Control_Acknowledgement_t *, uint32_t fn);
-	void rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *, uint32_t fn);
-	void rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *, uint32_t fn);
-	void rcv_resource_request(Packet_Resource_Request_t *t, uint32_t fn);
+	void rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *, uint32_t fn, struct pcu_l1_meas *meas);
+	void rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *, uint32_t fn, struct pcu_l1_meas *meas);
+	void rcv_resource_request(Packet_Resource_Request_t *t, uint32_t fn, struct pcu_l1_meas *meas);
 	void rcv_measurement_report(Packet_Measurement_Report_t *t, uint32_t fn);
 	gprs_rlcmac_tbf *tbf_from_list_by_tfi(
 		LListHead<gprs_rlcmac_tbf> *tbf_list, uint8_t tfi,

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I1980ca325c8d65f3f6310fa697dd810eec7ab077
Gerrit-Change-Number: 15601
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/20190925/9ecc10d5/attachment.htm>


More information about the gerrit-log mailing list