edge: Add work-around to get DL EGPRS from MS object

The EGPRS multi-slot class need to be parsed from the CSN.1 RA
capability (see gprs_bssgp_pcu_rx_dl_ud).

This commit adds a workaround to get the EGPRS MS class from the MS
object if that is present.

Sponsored-by: On-Waves ehf
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 9e73a0e..73d8a3b 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -180,7 +180,7 @@
  */
 int gprs_rlcmac_dl_tbf::handle(struct gprs_rlcmac_bts *bts,
 		const uint32_t tlli, const uint32_t tlli_old, const char *imsi,
-		const uint8_t ms_class, const uint8_t egprs_ms_class,
+		const uint8_t ms_class, uint8_t egprs_ms_class,
 		const uint16_t delay_csec,
 		const uint8_t *data, const uint16_t len)
 {
@@ -193,6 +193,10 @@
 	if (ms)
 		dl_tbf = ms->dl_tbf();
 
+	/* Work-around to get EGPRS MS class */
+	if (ms && !egprs_ms_class)
+		egprs_ms_class = ms->egprs_ms_class();
+
 	if (ms && strlen(ms->imsi()) == 0) {
 		ms_old = bts->bts->ms_store().get_ms(0, 0, imsi);
 		if (ms_old && ms_old != ms) {