Fix mcs_is_valid(): UNKNOWN value is not a valid (M)CS

Also add a few more asserts to make sure a valid CS/MCS is passed in
some placed where we expect (M)CS to be set.

Change-Id: I0a973e10cd9477f72d8bd47a06048414b33ae96a
diff --git a/src/coding_scheme.c b/src/coding_scheme.c
index e39ed2b..27241d1 100644
--- a/src/coding_scheme.c
+++ b/src/coding_scheme.c
@@ -163,7 +163,7 @@
 
 bool mcs_is_valid(enum CodingScheme cs)
 {
-	return UNKNOWN <= cs && cs <= MCS9;
+	return UNKNOWN < cs && cs <= MCS9;
 }
 
 bool mcs_is_compat_kind(enum CodingScheme cs, enum mcs_kind mode)
diff --git a/src/encoding.cpp b/src/encoding.cpp
index c6ec2e8..7f5da75 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -1692,6 +1692,7 @@
 
 	LOGP(DRLCMACDL, LOGL_ERROR, "%s data block encoding not implemented\n",
 		mcs_name(cs));
+	OSMO_ASSERT(mcs_is_valid(cs));
 
 	return AR_NEED_MORE_BLOCKS;
 }
diff --git a/src/rlc.cpp b/src/rlc.cpp
index 4f36025..8f56a8e 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -350,6 +350,7 @@
 void gprs_rlc_data_info_init_dl(struct gprs_rlc_data_info *rlc,
 	enum CodingScheme cs, bool with_padding, const unsigned int spb)
 {
+	OSMO_ASSERT(mcs_is_valid(cs));
 	return gprs_rlc_data_header_init(rlc, cs, with_padding,
 					 num_data_header_bits_DL(mcs_header_type(cs)), spb);
 }
@@ -357,6 +358,7 @@
 void gprs_rlc_data_info_init_ul(struct gprs_rlc_data_info *rlc,
 	enum CodingScheme cs, bool with_padding)
 {
+	OSMO_ASSERT(mcs_is_valid(cs));
 	/*
 	 * last parameter is sent as 0 since common function used
 	 * for both DL and UL