Fix Dl EGPRS data blocks being generated occasionally on GPRS TBFs

Under some circumstances, it could happen that a DL TBF is created as a
GPRS TBF due to not yet having enough information of the MS, and only
after the TBF is created the PCU gains that information and upgrades the
MS mode to "EGPRS". Hence, there's the possibility to run into a
situation where a GPRS TBF is attached to a EGPRS MS.

It may also happen sometimes that despite the TBF and the MS be EGPRS,
there's need to further limit the DL MCS to use, eg. MCS1-4 (GMSK).

As a result, when asking for the current DL (M)CS to use, we must tell
the MS which kind of limitations we want to apply. The later reasoning
was already implemented when GPRS+EGPRS multiplexing was added, but the
former was not being checked. Hence, by further spreading through the
call stack the "req_kind_mode" we match both cases.

Related: OS#4973
Change-Id: Ic0276ce045660713129f0c72f1158a3321c5977f
diff --git a/src/gprs_ms.h b/src/gprs_ms.h
index 12809f1..39d65de 100644
--- a/src/gprs_ms.h
+++ b/src/gprs_ms.h
@@ -114,7 +114,7 @@
 void ms_set_egprs_ms_class(struct GprsMs *ms, uint8_t ms_class_);
 void ms_set_ta(struct GprsMs *ms, uint8_t ta_);
 
-enum CodingScheme ms_current_cs_dl(const struct GprsMs *ms);
+enum CodingScheme ms_current_cs_dl(const struct GprsMs *ms, enum mcs_kind req_mcs_kind);
 enum CodingScheme ms_max_cs_ul(const struct GprsMs *ms);
 enum CodingScheme ms_max_cs_dl(const struct GprsMs *ms);
 void ms_set_current_cs_dl(struct GprsMs *ms, enum CodingScheme scheme);