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/.
Max gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/4072
Add missing multislot classes
The table B.1 is copy-pasted from 3GPP TS 45.002 and reformatted via
Emacs macros into C struct to avoid typos.
Note: classes 35-45 which need TA offset are not properly supported
yet (this was the case with the old code too).
Change-Id: I1ef2eb99c517f25e7d1e71b985a3e0eb3879eb2c
Related: OS#2282
---
M src/gprs_rlcmac_ts_alloc.cpp
1 file changed, 52 insertions(+), 35 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/72/4072/1
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index 57197b2..a8b3e63 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -32,12 +32,14 @@
/* Consider a PDCH as idle if has at most this number of TBFs assigned to it */
#define PDCH_IDLE_TBF_THRESH 1
-/* 3GPP TS 05.02 Annex B.1 */
+/* 3GPP TS 45.002 Annex B Table B.1 */
#define MS_NA 255 /* N/A */
#define MS_A 254 /* 1 with hopping, 0 without */
#define MS_B 253 /* 1 with hopping, 0 without (change Rx to Tx)*/
#define MS_C 252 /* 1 with hopping, 0 without (change Tx to Rx)*/
+/* FIXME: use actual TA offset for computation - make sure to adjust "1 + MS_TO" accordingly */
+#define MS_TO 0 /* 31 symbol periods (this can be provided by a TA offset, i.e. a minimum TA value) */
struct gprs_ms_multislot_class {
uint8_t rx, tx, sum; /* Maximum Number of Slots: RX, Tx, Sum Rx+Tx */
@@ -45,40 +47,55 @@
uint8_t type; /* Type of Mobile */
};
-static const struct gprs_ms_multislot_class gprs_ms_multislot_class[32] = {
-/* M-S Class Rx Tx Sum Tta Ttb Tra Trb Type */
-/* N/A */ { MS_NA,MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA },
-/* 1 */ { 1, 1, 2, 3, 2, 4, 2, 1 },
-/* 2 */ { 2, 1, 3, 3, 2, 3, 1, 1 },
-/* 3 */ { 2, 2, 3, 3, 2, 3, 1, 1 },
-/* 4 */ { 3, 1, 4, 3, 1, 3, 1, 1 },
-/* 5 */ { 2, 2, 4, 3, 1, 3, 1, 1 },
-/* 6 */ { 3, 2, 4, 3, 1, 3, 1, 1 },
-/* 7 */ { 3, 3, 4, 3, 1, 3, 1, 1 },
-/* 8 */ { 4, 1, 5, 3, 1, 2, 1, 1 },
-/* 9 */ { 3, 2, 5, 3, 1, 2, 1, 1 },
-/* 10 */ { 4, 2, 5, 3, 1, 2, 1, 1 },
-/* 11 */ { 4, 3, 5, 3, 1, 2, 1, 1 },
-/* 12 */ { 4, 4, 5, 2, 1, 2, 1, 1 },
-/* 13 */ { 3, 3, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
-/* 14 */ { 4, 4, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
-/* 15 */ { 5, 5, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
-/* 16 */ { 6, 6, MS_NA, MS_NA, MS_A, 2, MS_A, 2 },
-/* 17 */ { 7, 7, MS_NA, MS_NA, MS_A, 1, 0, 2 },
-/* 18 */ { 8, 8, MS_NA, MS_NA, 0, 0, 0, 2 },
-/* 19 */ { 6, 2, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 20 */ { 6, 3, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 21 */ { 6, 4, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 22 */ { 6, 4, MS_NA, 2, MS_B, 2, MS_C, 1 },
-/* 23 */ { 6, 6, MS_NA, 2, MS_B, 2, MS_C, 1 },
-/* 24 */ { 8, 2, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 25 */ { 8, 3, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 26 */ { 8, 4, MS_NA, 3, MS_B, 2, MS_C, 1 },
-/* 27 */ { 8, 4, MS_NA, 2, MS_B, 2, MS_C, 1 },
-/* 28 */ { 8, 6, MS_NA, 2, MS_B, 2, MS_C, 1 },
-/* 29 */ { 8, 8, MS_NA, 2, MS_B, 2, MS_C, 1 },
-/* N/A */ { MS_NA,MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA },
-/* N/A */ { MS_NA,MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA },
+static const struct gprs_ms_multislot_class gprs_ms_multislot_class[] = {
+ /* M-S Class | Max # of slots | Min # of slots | Type */
+ /* | Rx Tx Sum | Tta Ttb Tra Trb | */
+ /* N/A */ { MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA, MS_NA },
+ /* 1 */ { 1, 1, 2, 3, 2, 4, 2, 1 },
+ /* 2 */ { 2, 1, 3, 3, 2, 3, 1, 1 },
+ /* 3 */ { 2, 2, 3, 3, 2, 3, 1, 1 },
+ /* 4 */ { 3, 1, 4, 3, 1, 3, 1, 1 },
+ /* 5 */ { 2, 2, 4, 3, 1, 3, 1, 1 },
+ /* 6 */ { 3, 2, 4, 3, 1, 3, 1, 1 },
+ /* 7 */ { 3, 3, 4, 3, 1, 3, 1, 1 },
+ /* 8 */ { 4, 1, 5, 3, 1, 2, 1, 1 },
+ /* 9 */ { 3, 2, 5, 3, 1, 2, 1, 1 },
+ /* 10 */ { 4, 2, 5, 3, 1, 2, 1, 1 },
+ /* 11 */ { 4, 3, 5, 3, 1, 2, 1, 1 },
+ /* 12 */ { 4, 4, 5, 2, 1, 2, 1, 1 },
+ /* 13 */ { 3, 3, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
+ /* 14 */ { 4, 4, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
+ /* 15 */ { 5, 5, MS_NA, MS_NA, MS_A, 3, MS_A, 2 },
+ /* 16 */ { 6, 6, MS_NA, MS_NA, MS_A, 2, MS_A, 2 },
+ /* 17 */ { 7, 7, MS_NA, MS_NA, MS_A, 1, 0, 2 },
+ /* 18 */ { 8, 8, MS_NA, MS_NA, 0, 0, 0, 2 },
+ /* 19 */ { 6, 2, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 20 */ { 6, 3, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 21 */ { 6, 4, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 22 */ { 6, 4, MS_NA, 2, MS_B, 2, MS_C, 1 },
+ /* 23 */ { 6, 6, MS_NA, 2, MS_B, 2, MS_C, 1 },
+ /* 24 */ { 8, 2, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 25 */ { 8, 3, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 26 */ { 8, 4, MS_NA, 3, MS_B, 2, MS_C, 1 },
+ /* 27 */ { 8, 4, MS_NA, 2, MS_B, 2, MS_C, 1 },
+ /* 28 */ { 8, 6, MS_NA, 2, MS_B, 2, MS_C, 1 },
+ /* 29 */ { 8, 8, MS_NA, 2, MS_B, 2, MS_C, 1 },
+ /* 30 */ { 5, 1, 6, 2, 1, 1, 1, 1 },
+ /* 31 */ { 5, 2, 6, 2, 1, 1, 1, 1 },
+ /* 32 */ { 5, 3, 6, 2, 1, 1, 1, 1 },
+ /* 33 */ { 5, 4, 6, 2, 1, 1, 1, 1 },
+ /* 34 */ { 5, 5, 6, 2, 1, 1, 1, 1 },
+ /* 35 */ { 5, 1, 6, 2, 1, 1 + MS_TO, 1, 1 },
+ /* 36 */ { 5, 2, 6, 2, 1, 1 + MS_TO, 1, 1 },
+ /* 37 */ { 5, 3, 6, 2, 1, 1 + MS_TO, 1, 1 },
+ /* 38 */ { 5, 4, 6, 2, 1, 1 + MS_TO, 1, 1 },
+ /* 39 */ { 5, 5, 6, 2, 1, 1 + MS_TO, 1, 1 },
+ /* 40 */ { 6, 1, 7, 1, 1, 1, MS_TO, 1 },
+ /* 41 */ { 6, 2, 7, 1, 1, 1, MS_TO, 1 },
+ /* 42 */ { 6, 3, 7, 1, 1, 1, MS_TO, 1 },
+ /* 43 */ { 6, 4, 7, 1, 1, 1, MS_TO, 1 },
+ /* 44 */ { 6, 5, 7, 1, 1, 1, MS_TO, 1 },
+ /* 45 */ { 6, 6, 7, 1, 1, 1, MS_TO, 1 },
};
static char *set_flag_chars(char *buf, uint8_t val, char set_char, char unset_char = 0)
--
To view, visit https://gerrit.osmocom.org/4072
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1ef2eb99c517f25e7d1e71b985a3e0eb3879eb2c
Gerrit-PatchSet: 1
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>