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.orgpespin 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>