Change in osmo-pcu[master]: gsm_rlcmac: improve dissection of Packet Resource Request message

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
Tue Jan 28 18:20:26 UTC 2020


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


Change subject: gsm_rlcmac: improve dissection of Packet Resource Request message
......................................................................

gsm_rlcmac: improve dissection of Packet Resource Request message

Port from wireshark.git de028e81c53f9c45ccc5adb3bffd2f16ae2017bf

This commit breaks a unit test.

Ported-by: Pau Espin Pedrol <pespin at sysmocom.de>
Change-Id: Ibb4cbd3f5865415fd547e95fc24ff31df1aed4c0
---
M src/gsm_rlcmac.cpp
M src/gsm_rlcmac.h
M src/pdch.cpp
M tests/rlcmac/RLCMACTest.ok
4 files changed, 77 insertions(+), 9 deletions(-)



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

diff --git a/src/gsm_rlcmac.cpp b/src/gsm_rlcmac.cpp
index 4550c47..c12cf69 100644
--- a/src/gsm_rlcmac.cpp
+++ b/src/gsm_rlcmac.cpp
@@ -777,6 +777,12 @@
 CSN_DESCR_END         (DTM_EGPRS_HighMultislotClass_t)
 
 static const
+CSN_DESCR_BEGIN       (DownlinkDualCarrierCapability_r7_t)
+  M_NEXT_EXIST        (DownlinkDualCarrierCapability_r7_t, MultislotCapabilityReductionForDL_DualCarrier, 1),
+  M_UINT              (DownlinkDualCarrierCapability_r7_t, DL_DualCarrierForDTM,  3),
+CSN_DESCR_END         (DownlinkDualCarrierCapability_r7_t)
+
+static const
 CSN_DESCR_BEGIN       (Multislot_capability_t)
   M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_HSCSD_multislot_class, 1),
   M_UINT              (Multislot_capability_t,  HSCSD_multislot_class,  5),
@@ -854,6 +860,25 @@
   M_TYPE              (Content_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),
 
   M_UINT_OR_NULL      (Content_t,  PS_HandoverCapability,  1),
+
+  /* additions in release 7 */
+  M_UINT_OR_NULL      (Content_t,  DTM_Handover_Capability,  1),
+  M_NEXT_EXIST_OR_NULL(Content_t, Exist_DownlinkDualCarrierCapability_r7, 1),
+  M_TYPE              (Content_t, DownlinkDualCarrierCapability_r7, DownlinkDualCarrierCapability_r7_t),
+
+  M_UINT_OR_NULL      (Content_t,  FlexibleTimeslotAssignment,  1),
+  M_UINT_OR_NULL      (Content_t,  GAN_PS_HandoverCapability,  1),
+  M_UINT_OR_NULL      (Content_t,  RLC_Non_persistentMode,  1),
+  M_UINT_OR_NULL      (Content_t,  ReducedLatencyCapability,  1),
+  M_UINT_OR_NULL      (Content_t,  UplinkEGPRS2,  2),
+  M_UINT_OR_NULL      (Content_t,  DownlinkEGPRS2,  2),
+
+  /* additions in release 8 */
+  M_UINT_OR_NULL      (Content_t,  EUTRA_FDD_Support,  1),
+  M_UINT_OR_NULL      (Content_t,  EUTRA_TDD_Support,  1),
+  M_UINT_OR_NULL      (Content_t,  GERAN_To_EUTRAN_supportInGERAN_PTM,  2),
+  M_UINT_OR_NULL      (Content_t,  PriorityBasedReselectionSupport,  1),
+
 CSN_DESCR_END         (Content_t)
 
 gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)
@@ -897,9 +922,18 @@
 {
   {4, AccTech_GSMP,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
   {4, AccTech_GSME,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMR,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
   {4, AccTech_GSM1800,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
   {4, AccTech_GSM1900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM450,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM480,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
   {4, AccTech_GSM850,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM750,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMT830,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMT410,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMT900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSM710,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
+  {4, AccTech_GSMT810,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */
   {4, AccTech_GSMOther, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */
 };
 
@@ -1138,7 +1172,7 @@
   M_NEXT_EXIST        (Packet_Resource_Request_t, Exist_SIGN_VAR, 1),
   M_UINT              (Packet_Resource_Request_t,  SIGN_VAR,  6),
 
-  M_TYPE_ARRAY        (Packet_Resource_Request_t, Slot, InterferenceMeasurementReport_t, 8),
+  M_TYPE_ARRAY        (Packet_Resource_Request_t, I_LEVEL_TN, InterferenceMeasurementReport_t, 8),
 
   M_NEXT_EXIST_OR_NULL(Packet_Resource_Request_t, Exist_AdditionsR99, 1),
   M_TYPE              (Packet_Resource_Request_t, AdditionsR99, PRR_AdditionsR99_t),
diff --git a/src/gsm_rlcmac.h b/src/gsm_rlcmac.h
index 461fda3..c1869ae 100644
--- a/src/gsm_rlcmac.h
+++ b/src/gsm_rlcmac.h
@@ -1109,6 +1109,12 @@
 
 typedef struct
 {
+  guint8 MultislotCapabilityReductionForDL_DualCarrier;
+  guint8 DL_DualCarrierForDTM;
+} DownlinkDualCarrierCapability_r7_t;
+
+typedef struct
+{
   guint8 Exist_HSCSD_multislot_class;
   guint8 HSCSD_multislot_class;
 
@@ -1194,6 +1200,25 @@
   guint8 DTM_GPRS_HighMultislotClass;
   DTM_EGPRS_HighMultislotClass_t DTM_EGPRS_HighMultislotClass;
   guint8 PS_HandoverCapability;
+
+  /* -------- R7 additions */
+  guint8 DTM_Handover_Capability;
+  guint8 Exist_DownlinkDualCarrierCapability_r7;
+  DownlinkDualCarrierCapability_r7_t DownlinkDualCarrierCapability_r7;
+
+  guint8 FlexibleTimeslotAssignment;
+  guint8 GAN_PS_HandoverCapability;
+  guint8 RLC_Non_persistentMode;
+  guint8 ReducedLatencyCapability;
+  guint8 UplinkEGPRS2;
+  guint8 DownlinkEGPRS2;
+
+  /* -------- R8 additions */
+  guint8 EUTRA_FDD_Support;
+  guint8 EUTRA_TDD_Support;
+  guint8 GERAN_To_EUTRAN_supportInGERAN_PTM;
+  guint8 PriorityBasedReselectionSupport;
+
 } Content_t;
 
 #define ABSOLUTE_MAX_BANDS            2 /*  New fields for R4 extend the length of the capabilities message so we can only send 2 */
@@ -1201,12 +1226,21 @@
 #define MAX_ACCESS_TECHNOLOGIES_COUNT 16 /* No more than 16 instances */
 
 typedef enum
-{/* See TS 24.008 table 10.5.146, GSM R and GSM 450/480 excluded */
+{/* See TS 24.008 table 10.5.146 */
   AccTech_GSMP     = 0x0,
   AccTech_GSME     = 0x1,
+  AccTech_GSMR     = 0x2,
   AccTech_GSM1800  = 0x3,
   AccTech_GSM1900  = 0x4,
+  AccTech_GSM450   = 0x5,
+  AccTech_GSM480   = 0x6,
   AccTech_GSM850   = 0x7,
+  AccTech_GSM750   = 0x8,
+  AccTech_GSMT830  = 0x9,
+  AccTech_GSMT410  = 0xa,
+  AccTech_GSMT900  = 0xb,
+  AccTech_GSM710   = 0xc,
+  AccTech_GSMT810  = 0xd,
   AccTech_GSMOther = 0xf
 } AccessTechnology_t;
 
@@ -1459,7 +1493,7 @@
   guint8 Exist_SIGN_VAR;
   guint8 SIGN_VAR;
 
-  InterferenceMeasurementReport_t  Slot[8];
+  InterferenceMeasurementReport_t  I_LEVEL_TN[8];
 
   guint8                            Exist_AdditionsR99;
   PRR_AdditionsR99_t               AdditionsR99;
diff --git a/src/pdch.cpp b/src/pdch.cpp
index e15af2c..6a35464 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -80,13 +80,13 @@
 	if (qr->Exist_SIGN_VAR)
 		meas->set_ms_sign_var((qr->SIGN_VAR + 2) / 4); /* SIGN_VAR * 0.25 dB */
 
-	for (i = 0; i < OSMO_MIN(ARRAY_SIZE(qr->Slot), ARRAY_SIZE(meas->ts)); i++)
+	for (i = 0; i < OSMO_MIN(ARRAY_SIZE(qr->I_LEVEL_TN), ARRAY_SIZE(meas->ts)); i++)
 	{
-		if (qr->Slot[i].Exist) {
+		if (qr->I_LEVEL_TN[i].Exist) {
 			LOGP(DRLCMAC, LOGL_INFO,
 				"Packet resource request: i_level[%d] = %d\n",
-				i, qr->Slot[i].I_LEVEL);
-			meas->set_ms_i_level(i, -2 * qr->Slot[i].I_LEVEL);
+				i, qr->I_LEVEL_TN[i].I_LEVEL);
+			meas->set_ms_i_level(i, -2 * qr->I_LEVEL_TN[i].I_LEVEL);
 		}
 	}
 }
diff --git a/tests/rlcmac/RLCMACTest.ok b/tests/rlcmac/RLCMACTest.ok
index 5793d57..7dd0a9c 100644
--- a/tests/rlcmac/RLCMACTest.ok
+++ b/tests/rlcmac/RLCMACTest.ok
@@ -104,8 +104,8 @@
 =========Start ENCODE=============
 +++++++++Finish ENCODE+++++++++++
 vector1 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b 
-vector2 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b 
-vector1 == vector2 : TRUE
+vector2 = 40 16 71 3d c0 94 27 48 a2 ae 57 ef 90 90 06 aa 00 00 1f 80 00 3f 00 
+vector1 == vector2 : FALSE
 vector1 = 40200ffc0021ec010b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
 =========Start DECODE===========
 +++++++++Finish DECODE++++++++++

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ibb4cbd3f5865415fd547e95fc24ff31df1aed4c0
Gerrit-Change-Number: 17050
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/20200128/842195b4/attachment.htm>


More information about the gerrit-log mailing list