<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/17050">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gsm_rlcmac: improve dissection of Packet Resource Request message<br><br>Port from wireshark.git de028e81c53f9c45ccc5adb3bffd2f16ae2017bf<br><br>This commit breaks a unit test.<br><br>Ported-by: Pau Espin Pedrol <pespin@sysmocom.de><br>Change-Id: Ibb4cbd3f5865415fd547e95fc24ff31df1aed4c0<br>---<br>M src/gsm_rlcmac.cpp<br>M src/gsm_rlcmac.h<br>M src/pdch.cpp<br>M tests/rlcmac/RLCMACTest.ok<br>4 files changed, 77 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/50/17050/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gsm_rlcmac.cpp b/src/gsm_rlcmac.cpp</span><br><span>index 4550c47..c12cf69 100644</span><br><span>--- a/src/gsm_rlcmac.cpp</span><br><span>+++ b/src/gsm_rlcmac.cpp</span><br><span>@@ -777,6 +777,12 @@</span><br><span> CSN_DESCR_END         (DTM_EGPRS_HighMultislotClass_t)</span><br><span> </span><br><span> static const</span><br><span style="color: hsl(120, 100%, 40%);">+CSN_DESCR_BEGIN       (DownlinkDualCarrierCapability_r7_t)</span><br><span style="color: hsl(120, 100%, 40%);">+  M_NEXT_EXIST        (DownlinkDualCarrierCapability_r7_t, MultislotCapabilityReductionForDL_DualCarrier, 1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT              (DownlinkDualCarrierCapability_r7_t, DL_DualCarrierForDTM,  3),</span><br><span style="color: hsl(120, 100%, 40%);">+CSN_DESCR_END         (DownlinkDualCarrierCapability_r7_t)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const</span><br><span> CSN_DESCR_BEGIN       (Multislot_capability_t)</span><br><span>   M_NEXT_EXIST_OR_NULL(Multislot_capability_t, Exist_HSCSD_multislot_class, 1),</span><br><span>   M_UINT              (Multislot_capability_t,  HSCSD_multislot_class,  5),</span><br><span>@@ -854,6 +860,25 @@</span><br><span>   M_TYPE              (Content_t, DTM_EGPRS_HighMultislotClass, DTM_EGPRS_HighMultislotClass_t),</span><br><span> </span><br><span>   M_UINT_OR_NULL      (Content_t,  PS_HandoverCapability,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* additions in release 7 */</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  DTM_Handover_Capability,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_NEXT_EXIST_OR_NULL(Content_t, Exist_DownlinkDualCarrierCapability_r7, 1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_TYPE              (Content_t, DownlinkDualCarrierCapability_r7, DownlinkDualCarrierCapability_r7_t),</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  FlexibleTimeslotAssignment,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  GAN_PS_HandoverCapability,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  RLC_Non_persistentMode,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  ReducedLatencyCapability,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  UplinkEGPRS2,  2),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  DownlinkEGPRS2,  2),</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* additions in release 8 */</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  EUTRA_FDD_Support,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  EUTRA_TDD_Support,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  GERAN_To_EUTRAN_supportInGERAN_PTM,  2),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_UINT_OR_NULL      (Content_t,  PriorityBasedReselectionSupport,  1),</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> CSN_DESCR_END         (Content_t)</span><br><span> </span><br><span> gint16 Content_Dissector(csnStream_t* ar, bitvec *vector, unsigned& readIndex, void* data)</span><br><span>@@ -897,9 +922,18 @@</span><br><span> {</span><br><span>   {4, AccTech_GSMP,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span>   {4, AccTech_GSME,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSMR,     0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span>   {4, AccTech_GSM1800,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span>   {4, AccTech_GSM1900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSM450,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSM480,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span>   {4, AccTech_GSM850,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSM750,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSMT830,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSMT410,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSMT900,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSM710,   0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span style="color: hsl(120, 100%, 40%);">+  {4, AccTech_GSMT810,  0, M_SERIALIZE (MS_RA_capability_value_t, u.Content, 7, Content_Dissector)}, /* Long Form */</span><br><span>   {4, AccTech_GSMOther, 0, M_SERIALIZE (MS_RA_capability_value_t, u.Additional_access_technologies, 7, Additional_access_technologies_Dissector)}, /* Short Form */</span><br><span> };</span><br><span> </span><br><span>@@ -1138,7 +1172,7 @@</span><br><span>   M_NEXT_EXIST        (Packet_Resource_Request_t, Exist_SIGN_VAR, 1),</span><br><span>   M_UINT              (Packet_Resource_Request_t,  SIGN_VAR,  6),</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  M_TYPE_ARRAY        (Packet_Resource_Request_t, Slot, InterferenceMeasurementReport_t, 8),</span><br><span style="color: hsl(120, 100%, 40%);">+  M_TYPE_ARRAY        (Packet_Resource_Request_t, I_LEVEL_TN, InterferenceMeasurementReport_t, 8),</span><br><span> </span><br><span>   M_NEXT_EXIST_OR_NULL(Packet_Resource_Request_t, Exist_AdditionsR99, 1),</span><br><span>   M_TYPE              (Packet_Resource_Request_t, AdditionsR99, PRR_AdditionsR99_t),</span><br><span>diff --git a/src/gsm_rlcmac.h b/src/gsm_rlcmac.h</span><br><span>index 461fda3..c1869ae 100644</span><br><span>--- a/src/gsm_rlcmac.h</span><br><span>+++ b/src/gsm_rlcmac.h</span><br><span>@@ -1109,6 +1109,12 @@</span><br><span> </span><br><span> typedef struct</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 MultislotCapabilityReductionForDL_DualCarrier;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 DL_DualCarrierForDTM;</span><br><span style="color: hsl(120, 100%, 40%);">+} DownlinkDualCarrierCapability_r7_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span>   guint8 Exist_HSCSD_multislot_class;</span><br><span>   guint8 HSCSD_multislot_class;</span><br><span> </span><br><span>@@ -1194,6 +1200,25 @@</span><br><span>   guint8 DTM_GPRS_HighMultislotClass;</span><br><span>   DTM_EGPRS_HighMultislotClass_t DTM_EGPRS_HighMultislotClass;</span><br><span>   guint8 PS_HandoverCapability;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* -------- R7 additions */</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 DTM_Handover_Capability;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 Exist_DownlinkDualCarrierCapability_r7;</span><br><span style="color: hsl(120, 100%, 40%);">+  DownlinkDualCarrierCapability_r7_t DownlinkDualCarrierCapability_r7;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 FlexibleTimeslotAssignment;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 GAN_PS_HandoverCapability;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 RLC_Non_persistentMode;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 ReducedLatencyCapability;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 UplinkEGPRS2;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 DownlinkEGPRS2;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* -------- R8 additions */</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 EUTRA_FDD_Support;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 EUTRA_TDD_Support;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 GERAN_To_EUTRAN_supportInGERAN_PTM;</span><br><span style="color: hsl(120, 100%, 40%);">+  guint8 PriorityBasedReselectionSupport;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> } Content_t;</span><br><span> </span><br><span> #define ABSOLUTE_MAX_BANDS            2 /*  New fields for R4 extend the length of the capabilities message so we can only send 2 */</span><br><span>@@ -1201,12 +1226,21 @@</span><br><span> #define MAX_ACCESS_TECHNOLOGIES_COUNT 16 /* No more than 16 instances */</span><br><span> </span><br><span> typedef enum</span><br><span style="color: hsl(0, 100%, 40%);">-{/* See TS 24.008 table 10.5.146, GSM R and GSM 450/480 excluded */</span><br><span style="color: hsl(120, 100%, 40%);">+{/* See TS 24.008 table 10.5.146 */</span><br><span>   AccTech_GSMP     = 0x0,</span><br><span>   AccTech_GSME     = 0x1,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSMR     = 0x2,</span><br><span>   AccTech_GSM1800  = 0x3,</span><br><span>   AccTech_GSM1900  = 0x4,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSM450   = 0x5,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSM480   = 0x6,</span><br><span>   AccTech_GSM850   = 0x7,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSM750   = 0x8,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSMT830  = 0x9,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSMT410  = 0xa,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSMT900  = 0xb,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSM710   = 0xc,</span><br><span style="color: hsl(120, 100%, 40%);">+  AccTech_GSMT810  = 0xd,</span><br><span>   AccTech_GSMOther = 0xf</span><br><span> } AccessTechnology_t;</span><br><span> </span><br><span>@@ -1459,7 +1493,7 @@</span><br><span>   guint8 Exist_SIGN_VAR;</span><br><span>   guint8 SIGN_VAR;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  InterferenceMeasurementReport_t  Slot[8];</span><br><span style="color: hsl(120, 100%, 40%);">+  InterferenceMeasurementReport_t  I_LEVEL_TN[8];</span><br><span> </span><br><span>   guint8                            Exist_AdditionsR99;</span><br><span>   PRR_AdditionsR99_t               AdditionsR99;</span><br><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index e15af2c..6a35464 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -80,13 +80,13 @@</span><br><span>   if (qr->Exist_SIGN_VAR)</span><br><span>           meas->set_ms_sign_var((qr->SIGN_VAR + 2) / 4); /* SIGN_VAR * 0.25 dB */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       for (i = 0; i < OSMO_MIN(ARRAY_SIZE(qr->Slot), ARRAY_SIZE(meas->ts)); i++)</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i = 0; i < OSMO_MIN(ARRAY_SIZE(qr->I_LEVEL_TN), ARRAY_SIZE(meas->ts)); i++)</span><br><span>    {</span><br><span style="color: hsl(0, 100%, 40%);">-               if (qr->Slot[i].Exist) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (qr->I_LEVEL_TN[i].Exist) {</span><br><span>                    LOGP(DRLCMAC, LOGL_INFO,</span><br><span>                             "Packet resource request: i_level[%d] = %d\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                i, qr->Slot[i].I_LEVEL);</span><br><span style="color: hsl(0, 100%, 40%);">-                     meas->set_ms_i_level(i, -2 * qr->Slot[i].I_LEVEL);</span><br><span style="color: hsl(120, 100%, 40%);">+                              i, qr->I_LEVEL_TN[i].I_LEVEL);</span><br><span style="color: hsl(120, 100%, 40%);">+                     meas->set_ms_i_level(i, -2 * qr->I_LEVEL_TN[i].I_LEVEL);</span><br><span>               }</span><br><span>    }</span><br><span> }</span><br><span>diff --git a/tests/rlcmac/RLCMACTest.ok b/tests/rlcmac/RLCMACTest.ok</span><br><span>index 5793d57..7dd0a9c 100644</span><br><span>--- a/tests/rlcmac/RLCMACTest.ok</span><br><span>+++ b/tests/rlcmac/RLCMACTest.ok</span><br><span>@@ -104,8 +104,8 @@</span><br><span> =========Start ENCODE=============</span><br><span> +++++++++Finish ENCODE+++++++++++</span><br><span> vector1 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b </span><br><span style="color: hsl(0, 100%, 40%);">-vector2 = 40 16 71 3d c0 94 27 0c a2 ae 57 ef 90 90 06 aa 0f c0 00 1f 80 22 2b </span><br><span style="color: hsl(0, 100%, 40%);">-vector1 == vector2 : TRUE</span><br><span style="color: hsl(120, 100%, 40%);">+vector2 = 40 16 71 3d c0 94 27 48 a2 ae 57 ef 90 90 06 aa 00 00 1f 80 00 3f 00 </span><br><span style="color: hsl(120, 100%, 40%);">+vector1 == vector2 : FALSE</span><br><span> vector1 = 40200ffc0021ec010b2b2b2b2b2b2b2b2b2b2b2b2b2b2b</span><br><span> =========Start DECODE===========</span><br><span> +++++++++Finish DECODE++++++++++</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/17050">change 17050</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-pcu/+/17050"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibb4cbd3f5865415fd547e95fc24ff31df1aed4c0 </div>
<div style="display:none"> Gerrit-Change-Number: 17050 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>