diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-07-08 12:18:33 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-07-16 10:24:37 +0200 |
commit | 57cf69a18ccceac4b250dceb56c4e0d5f0018a95 (patch) | |
tree | dd72f2e89f87913317b9529284be7dee65dafe8f | |
parent | dd08ac86e6fa1ea69e78c344424d72fc9d79d6d7 (diff) |
alloc: Fix MS_B/MS_C interpretation
Currently the handling of MS_B and MS_C is not compliant with TS
45.002, annex B.1. These values may only interpreted as 0, if
frequency hopping is not enabled and if there is no change from Rx to
Tx or vice-versa.
This commit sets Ttb/Trb to 1 if the table entry is MS_B/MS_C, since
only combined down/up access modes are supported.
Sponsored-by: On-Waves ehf
-rw-r--r-- | src/gprs_rlcmac_ts_alloc.cpp | 16 | ||||
-rw-r--r-- | tests/alloc/AllocTest.ok | 418 |
2 files changed, 221 insertions, 213 deletions
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp index b9d4e41a..ec228d1a 100644 --- a/src/gprs_rlcmac_ts_alloc.cpp +++ b/src/gprs_rlcmac_ts_alloc.cpp @@ -405,13 +405,21 @@ static int find_multi_slots(struct gprs_rlcmac_bts *bts, Trb = ms_class->rb; Type = ms_class->type; - /* Tta and Ttb may depend on hopping or frequency change */ - /* TODO: Set them to 1 */ - if (Ttb == MS_A || Ttb == MS_B) + /* MS_A maps to 0 if frequency hopping is disabled */ + /* TODO: Set it to 1 if FH is implemented and enabled */ + if (Ttb == MS_A) Ttb = 0; - if (Trb == MS_A || Trb == MS_C) + if (Trb == MS_A) Trb = 0; + /* MS_A and MS_B are 0 iff FH is disabled and there is no Tx/Rx change. + * This is never the case with the current implementation, so 1 will + * always be used. */ + if (Ttb == MS_B) + Ttb = 1; + if (Trb == MS_C) + Trb = 1; + LOGP(DRLCMAC, LOGL_DEBUG, "- Rx=%d Tx=%d Sum Rx+Tx=%s Tta=%s Ttb=%d " " Tra=%d Trb=%d Type=%d\n", ms_class->rx, Tx, (Sum == MS_NA) ? "N/A" : digit[Sum], diff --git a/tests/alloc/AllocTest.ok b/tests/alloc/AllocTest.ok index 79b5dbf4..823595a7 100644 --- a/tests/alloc/AllocTest.ok +++ b/tests/alloc/AllocTest.ok @@ -588,356 +588,356 @@ PDCH[1] is control_ts for DL PDCH[1] is first common for DL Going to test multislot assignment MS_CLASS=19 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=20 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=21 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=22 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=23 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=24 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=25 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=26 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=27 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=28 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Going to test multislot assignment MS_CLASS=29 Testing UL then DL assignment. -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing DL then UL assignment followed by update -PDCH[5] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL -PDCH[5] is used for UL -PDCH[5] is control_ts for UL -PDCH[5] is first common for UL +PDCH[6] is used for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL +PDCH[6] is used for UL +PDCH[6] is control_ts for UL +PDCH[6] is first common for UL PDCH[5] is used for DL PDCH[6] is used for DL PDCH[7] is used for DL -PDCH[5] is control_ts for DL -PDCH[5] is first common for DL +PDCH[6] is control_ts for DL +PDCH[6] is first common for DL Testing jolly example -PDCH[2] is used for UL -PDCH[2] is control_ts for UL -PDCH[2] is first common for UL +PDCH[3] is used for UL +PDCH[3] is control_ts for UL +PDCH[3] is first common for UL PDCH[1] is used for DL PDCH[2] is used for DL PDCH[3] is used for DL PDCH[4] is used for DL -PDCH[2] is control_ts for DL -PDCH[2] is first common for DL +PDCH[3] is control_ts for DL +PDCH[3] is first common for DL Mass test: TS0(xxxxxxxO)TS7 MS_Class=0 Mass test: TS0(xxxxxxxO)TS7 MS_Class=1 Mass test: TS0(xxxxxxxO)TS7 MS_Class=2 @@ -8743,20 +8743,20 @@ Going to test assignment with many TBF, algorithm B class 1-29 (UL and DL) TBF[15] class 16 reserves ...CDDDD TBF[16] class 17 reserves ...DCDDD TBF[17] class 18 reserves ...DDCDD - TBF[18] class 19 reserves ....DDCD - TBF[19] class 20 reserves ...DCDD. - TBF[20] class 21 reserves ....DCDD - TBF[21] class 22 reserves ...DCDD. - TBF[22] class 23 reserves ....DDCD - TBF[23] class 24 reserves ...DDCD. - TBF[24] class 25 reserves ....DDCD - TBF[25] class 26 reserves ...DCDD. - TBF[26] class 27 reserves ....DCDD - TBF[27] class 28 reserves .....DDC + TBF[18] class 19 reserves .....DCD + TBF[19] class 20 reserves ...DCD.. + TBF[20] class 21 reserves .....DDC + TBF[21] class 22 reserves ...DDC.. + TBF[22] class 23 reserves .....DCD + TBF[23] class 24 reserves ...DCD.. + TBF[24] class 25 reserves .....DDC + TBF[25] class 26 reserves ...DDC.. + TBF[26] class 27 reserves .....DCD + TBF[27] class 28 reserves ...DCD.. TBF[28] class 29 reserves .....DDC TBF[29] class 1 reserves ...C.... TBF[30] class 2 reserves ......DC - TBF[31] class 3 reserves ......DC + TBF[31] class 3 reserves ....DC.. Successfully allocated 32 UL TBFs Going to test assignment with many TBF, algorithm A (DL and UL) TBF[0] class 1 reserves ...C.... |