Fix configuration of initial_(m)cs

Properly clip initial_(m)cs values to be lower-equal than maximum
configured.

Regarding initial_mcs, use values provided by BTS, which were not used
before.

Change-Id: Ifc6bc7c2734d1ae404adc2497afec5366e4f9e50
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 738d0f1..a984591 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -633,14 +633,38 @@
 	}
 	bts_set_max_mcs(bts, bts->vty.max_mcs_dl, bts->vty.max_mcs_ul); /* recalc max MCS values */
 
-	LOGP(DL1IF, LOGL_DEBUG, " initial_cs=%d\n", info_ind->initial_cs);
-	LOGP(DL1IF, LOGL_DEBUG, " initial_mcs=%d\n", info_ind->initial_mcs);
-	if (!bts->force_cs) {
-		if (info_ind->initial_cs < 1 || info_ind->initial_cs > 4)
-			bts->initial_cs_dl = 1;
-		else
-			bts->initial_cs_dl = info_ind->initial_cs;
-		bts->initial_cs_ul = bts->initial_cs_dl;
+	LOGP(DL1IF, LOGL_DEBUG, " initial_cs=%u%s\n", info_ind->initial_cs,
+	     bts->vty.force_initial_cs ? " (VTY forced, ignoring)" : "");
+	if (!bts->vty.force_initial_cs) {
+		if (info_ind->initial_cs > bts->bts->max_cs_dl()) {
+			LOGP(DL1IF, LOGL_DEBUG, " downgrading initial_cs_dl to %d\n", bts->bts->max_cs_dl());
+			bts->initial_cs_dl = bts->bts->max_cs_dl();
+		} else {
+			bts->initial_cs_dl =  info_ind->initial_cs;
+		}
+		if (info_ind->initial_cs > bts->bts->max_cs_ul()) {
+			LOGP(DL1IF, LOGL_DEBUG, " downgrading initial_cs_ul to %d\n", bts->bts->max_cs_ul());
+			bts->initial_cs_ul = bts->bts->max_cs_ul();
+		} else {
+			bts->initial_cs_ul =  info_ind->initial_cs;
+		}
+	}
+
+	LOGP(DL1IF, LOGL_DEBUG, " initial_mcs=%u%s\n", info_ind->initial_mcs,
+	     bts->vty.force_initial_mcs ? " (VTY forced, ignoring)" : "");
+	if (!bts->vty.force_initial_mcs) {
+		if (info_ind->initial_mcs > bts->bts->max_mcs_dl()) {
+			LOGP(DL1IF, LOGL_DEBUG, " downgrading initial_mcs_dl to %d\n", bts->bts->max_mcs_dl());
+			bts->initial_mcs_dl = bts->bts->max_mcs_dl();
+		} else {
+			bts->initial_mcs_dl =  info_ind->initial_mcs;
+		}
+		if (info_ind->initial_mcs > bts->bts->max_mcs_ul()) {
+			LOGP(DL1IF, LOGL_DEBUG, " downgrading initial_mcs_ul to %d\n", bts->bts->max_mcs_ul());
+			bts->initial_mcs_ul = bts->bts->max_mcs_ul();
+		} else {
+			bts->initial_mcs_ul =  info_ind->initial_mcs;
+		}
 	}
 
 	pcu = gprs_bssgp_init(