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