edge: Enable EGPRS in downlink TBFs

Currently GPRS is always used for downlink, which violates TS 44.060
(concurrent TBF must have the same mode).

Enable EGPRS mode for downlink if the EGPRS MS class is != 0 and
EGRPS has been enabled.

Note that EGPRS Ack/Nack handling is not yet implemented, so enabling
EGPRS will not work still. But we will now get EGPRS DL ACK/NACK
messages now from the MS.

Sponsored-by: On-Waves ehf
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 8fac767..9c5502a 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -629,6 +629,8 @@
 		tbf->m_window.set_sns(RLC_EGPRS_SNS);
 		tbf->m_window.set_ws(RLC_EGPRS_MIN_WS);
 		setup_egprs_mode(bts, ms);
+		LOGP(DRLCMAC, LOGL_INFO, "Enabled EGPRS for %s, mode %s\n",
+			tbf->name(), GprsCodingScheme::modeName(ms->mode()));
 	}
 
 	rc = setup_tbf(tbf, ms, use_trx, ms_class, egprs_ms_class, single_slot);
@@ -678,8 +680,8 @@
 	int rc;
 
 	LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF starts here **********\n");
-	LOGP(DRLCMAC, LOGL_INFO, "Allocating %s TBF: MS_CLASS=%d\n",
-		"DL", ms_class);
+	LOGP(DRLCMAC, LOGL_INFO, "Allocating %s TBF: MS_CLASS=%d/%d\n",
+		"DL", ms_class, egprs_ms_class);
 
 	tbf = talloc(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf);
 
@@ -692,6 +694,15 @@
 	if (!ms)
 		ms = bts->bts->ms_alloc(ms_class, egprs_ms_class);
 
+	if (egprs_ms_class > 0 && bts->egprs_enabled) {
+		tbf->enable_egprs();
+		tbf->m_window.set_sns(RLC_EGPRS_SNS);
+		tbf->m_window.set_ws(RLC_EGPRS_MIN_WS);
+		setup_egprs_mode(bts, ms);
+		LOGP(DRLCMAC, LOGL_INFO, "Enabled EGPRS for %s, mode %s\n",
+			tbf->name(), GprsCodingScheme::modeName(ms->mode()));
+	}
+
 	rc = setup_tbf(tbf, ms, use_trx, ms_class, 0, single_slot);
 	/* if no resource */
 	if (rc < 0) {
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 6911361..74c8800 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -1,5 +1,5 @@
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Creating MS object, TLLI = 0x00000000
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -38,7 +38,7 @@
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -83,7 +83,7 @@
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -116,7 +116,7 @@
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -161,7 +161,7 @@
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -194,7 +194,7 @@
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -425,7 +425,7 @@
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -445,7 +445,7 @@
 Searching for first unallocated TFI: TRX=0
  Found TFI=1.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -482,7 +482,7 @@
 Destroying MS object, TLLI = 0xf1000002
 ********** TBF ends here **********
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -507,7 +507,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 08 00 23 2b 2b 2b 2b 
 TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -532,7 +532,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 18 40 23 2b 2b 2b 2b 
 TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -557,7 +557,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 28 80 23 2b 2b 2b 2b 
 TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -582,7 +582,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 38 c0 23 2b 2b 2b 2b 
 TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -607,7 +607,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 49 00 23 2b 2b 2b 2b 
 TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -632,7 +632,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 59 40 23 2b 2b 2b 2b 
 TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -657,7 +657,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 69 80 23 2b 2b 2b 2b 
 TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -682,7 +682,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 79 c0 23 2b 2b 2b 2b 
 TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -707,7 +707,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 8a 00 23 2b 2b 2b 2b 
 TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -732,7 +732,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 9a 40 23 2b 2b 2b 2b 
 TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -757,7 +757,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 aa 80 23 2b 2b 2b 2b 
 TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -782,7 +782,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 ba c0 23 2b 2b 2b 2b 
 TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -807,7 +807,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 cb 00 23 2b 2b 2b 2b 
 TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -832,7 +832,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 db 40 23 2b 2b 2b 2b 
 TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -857,7 +857,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 eb 80 23 2b 2b 2b 2b 
 TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -882,7 +882,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 fb c0 23 2b 2b 2b 2b 
 TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -907,7 +907,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 0c 00 23 2b 2b 2b 2b 
 TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -932,7 +932,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 1c 40 23 2b 2b 2b 2b 
 TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -957,7 +957,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 2c 80 23 2b 2b 2b 2b 
 TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -982,7 +982,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 3c c0 23 2b 2b 2b 2b 
 TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1007,7 +1007,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 4d 00 23 2b 2b 2b 2b 
 TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1032,7 +1032,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 5d 40 23 2b 2b 2b 2b 
 TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1057,7 +1057,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 6d 80 23 2b 2b 2b 2b 
 TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1082,7 +1082,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 7d c0 23 2b 2b 2b 2b 
 TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1107,7 +1107,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 8e 00 23 2b 2b 2b 2b 
 TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1132,7 +1132,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 9e 40 23 2b 2b 2b 2b 
 TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1157,7 +1157,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ae 80 23 2b 2b 2b 2b 
 TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1182,7 +1182,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 be c0 23 2b 2b 2b 2b 
 TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1207,7 +1207,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 cf 00 23 2b 2b 2b 2b 
 TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1232,7 +1232,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 df 40 23 2b 2b 2b 2b 
 TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1257,7 +1257,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 33 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ef 80 23 2b 2b 2b 2b 
 TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1282,7 +1282,7 @@
 Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 33 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ff c0 23 2b 2b 2b 2b 
 TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=ASSIGN) append
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1290,7 +1290,7 @@
 No PDCH resource
 Destroying MS object, TLLI = 0x00000000
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Slot Allocation (Algorithm A) for class 45
@@ -1320,7 +1320,7 @@
 Detaching TBF from MS object, TLLI = 0xc0123456, TBF = TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN)
 ********** TBF ends here **********
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=45
+Allocating DL TBF: MS_CLASS=45/0
 Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1418,7 +1418,7 @@
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED)', TA=7
 Got MS: TLLI = 0xf1223344, TA = 7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1502,7 +1502,7 @@
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
 Got MS: TLLI = 0xf1223344, TA = 7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1584,7 +1584,7 @@
 - No gaps in received block, last block: BSN=0 CV=15
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1782,7 +1782,7 @@
 - No gaps in received block, last block: BSN=0 CV=15
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1858,7 +1858,7 @@
 TBF: [DOWNLINK] UPLINK ASSIGNED TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) changes state from ASSIGN to FLOW
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=1
+Allocating DL TBF: MS_CLASS=1/0
 Slot Allocation (Algorithm A) for class 1
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1951,7 +1951,7 @@
 - No gaps in received block, last block: BSN=0 CV=15
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -2097,7 +2097,7 @@
 - No gaps in received block, last block: BSN=0 CV=15
 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=0
+Allocating DL TBF: MS_CLASS=0/0
 Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -2709,7 +2709,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer 3193.
 ********** TBF starts here **********
-Allocating DL TBF: MS_CLASS=1
+Allocating DL TBF: MS_CLASS=1/0
 Slot Allocation (Algorithm A) for class 1
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled