<p>Max <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/13069">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Harald Welte: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">MCS: use value_string for conversion<br><br>Change-Id: I212ebb892ab162821633974d5a6c7e315d308370<br>---<br>M src/coding_scheme.c<br>M src/coding_scheme.h<br>M src/decoding.cpp<br>M src/encoding.cpp<br>M src/gprs_bssgp_pcu.cpp<br>M src/gprs_coding_scheme.cpp<br>M src/gprs_coding_scheme.h<br>M src/gprs_ms.cpp<br>M src/pcu_vty_functions.cpp<br>M src/pdch.cpp<br>M src/tbf_dl.cpp<br>M src/tbf_ul.cpp<br>M tests/edge/EdgeTest.cpp<br>13 files changed, 84 insertions(+), 54 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/coding_scheme.c b/src/coding_scheme.c</span><br><span>index a6f2905..93278e7 100644</span><br><span>--- a/src/coding_scheme.c</span><br><span>+++ b/src/coding_scheme.c</span><br><span>@@ -24,6 +24,28 @@</span><br><span> </span><br><span> #include "coding_scheme.h"</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const struct value_string mcs_names[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ { UNKNOWN, "UNKNOWN" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { CS1, "CS-1" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { CS2, "CS-2" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { CS3, "CS-3" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { CS4, "CS-4" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS1, "MCS-1" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS2, "MCS-2" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS3, "MCS-3" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS4, "MCS-4" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS5, "MCS-5" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS6, "MCS-6" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS7, "MCS-7" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS8, "MCS-8" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { MCS9, "MCS-9" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { 0, NULL }</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const char *mcs_name(enum CodingScheme val) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return get_value_string(mcs_names, val);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static struct {</span><br><span> struct {</span><br><span> uint8_t data_header_bits;</span><br><span>diff --git a/src/coding_scheme.h b/src/coding_scheme.h</span><br><span>index b0b85e3..1e8ca78 100644</span><br><span>--- a/src/coding_scheme.h</span><br><span>+++ b/src/coding_scheme.h</span><br><span>@@ -19,6 +19,8 @@</span><br><span> </span><br><span> #pragma once</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> enum CodingScheme {</span><br><span> UNKNOWN,</span><br><span> /* GPRS Coding Schemes: */</span><br><span>@@ -28,6 +30,9 @@</span><br><span> NUM_SCHEMES</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+extern const struct value_string mcs_names[];</span><br><span style="color: hsl(120, 100%, 40%);">+const char *mcs_name(enum CodingScheme val);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> enum HeaderType {</span><br><span> HEADER_INVALID,</span><br><span> HEADER_GPRS_CONTROL,</span><br><span>diff --git a/src/decoding.cpp b/src/decoding.cpp</span><br><span>index 3410291..1473ff7 100644</span><br><span>--- a/src/decoding.cpp</span><br><span>+++ b/src/decoding.cpp</span><br><span>@@ -370,7 +370,7 @@</span><br><span> default:</span><br><span> LOGP(DRLCMACDL, LOGL_ERROR,</span><br><span> "Decoding of uplink %s data blocks not yet supported.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> return -ENOTSUP;</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/encoding.cpp b/src/encoding.cpp</span><br><span>index 58df95f..ad53b0b 100644</span><br><span>--- a/src/encoding.cpp</span><br><span>+++ b/src/encoding.cpp</span><br><span>@@ -1227,7 +1227,7 @@</span><br><span> default:</span><br><span> LOGP(DRLCMACDL, LOGL_ERROR,</span><br><span> "Encoding of uplink %s data blocks not yet supported.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> return -ENOTSUP;</span><br><span> };</span><br><span> </span><br><span>@@ -1616,7 +1616,7 @@</span><br><span> count_payload);</span><br><span> </span><br><span> LOGP(DRLCMACDL, LOGL_ERROR, "%s data block encoding not implemented\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> </span><br><span> return AR_NEED_MORE_BLOCKS;</span><br><span> }</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index 7ac5ab1..9d02df6 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -26,7 +26,11 @@</span><br><span> #include <tbf.h></span><br><span> #include <gprs_coding_scheme.h></span><br><span> #include <pdch.h></span><br><span style="color: hsl(0, 100%, 40%);">-#include "coding_scheme.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+ #include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> #define BSSGP_TIMER_T1 30 /* Guards the (un)blocking procedures */</span><br><span> #define BSSGP_TIMER_T2 30 /* Guards the reset procedure */</span><br><span>@@ -775,7 +779,7 @@</span><br><span> </span><br><span> LOGP(DBSSGP, LOGL_DEBUG,</span><br><span> "Computed BVC leak rate = %d, num_pdch = %d, cs = %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- leak_rate, num_pdch, max_cs_dl.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ leak_rate, num_pdch, mcs_name(max_cs_dl));</span><br><span> };</span><br><span> </span><br><span> if (ms_leak_rate == 0) {</span><br><span>@@ -799,7 +803,7 @@</span><br><span> LOGP(DBSSGP, LOGL_DEBUG,</span><br><span> "Computed MS default leak rate = %d, ms_num_pdch = %d, "</span><br><span> "cs = %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- ms_leak_rate, ms_num_pdch, max_cs_dl.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ ms_leak_rate, ms_num_pdch, mcs_name(max_cs_dl));</span><br><span> };</span><br><span> </span><br><span> /* TODO: Force leak_rate to 0 on buffer bloat */</span><br><span>diff --git a/src/gprs_coding_scheme.cpp b/src/gprs_coding_scheme.cpp</span><br><span>index 0616a49..53b3b07 100644</span><br><span>--- a/src/gprs_coding_scheme.cpp</span><br><span>+++ b/src/gprs_coding_scheme.cpp</span><br><span>@@ -81,39 +81,38 @@</span><br><span> } uplink, downlink;</span><br><span> uint8_t data_bytes;</span><br><span> uint8_t optional_padding_bits;</span><br><span style="color: hsl(0, 100%, 40%);">- const char *name;</span><br><span> enum HeaderType data_hdr;</span><br><span> enum Family family;</span><br><span> } mcs_info[NUM_SCHEMES] = {</span><br><span style="color: hsl(0, 100%, 40%);">- {{0, 0}, {0, 0}, 0, 0, "UNKNOWN",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{0, 0}, {0, 0}, 0, 0,</span><br><span> HEADER_INVALID, FAMILY_INVALID},</span><br><span style="color: hsl(0, 100%, 40%);">- {{23, 0}, {23, 0}, 20, 0, "CS-1",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{23, 0}, {23, 0}, 20, 0,</span><br><span> HEADER_GPRS_DATA, FAMILY_INVALID},</span><br><span style="color: hsl(0, 100%, 40%);">- {{33, 7}, {33, 7}, 30, 0, "CS-2",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{33, 7}, {33, 7}, 30, 0,</span><br><span> HEADER_GPRS_DATA, FAMILY_INVALID},</span><br><span style="color: hsl(0, 100%, 40%);">- {{39, 3}, {39, 3}, 36, 0, "CS-3",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{39, 3}, {39, 3}, 36, 0,</span><br><span> HEADER_GPRS_DATA, FAMILY_INVALID},</span><br><span style="color: hsl(0, 100%, 40%);">- {{53, 7}, {53, 7}, 50, 0, "CS-4",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{53, 7}, {53, 7}, 50, 0,</span><br><span> HEADER_GPRS_DATA, FAMILY_INVALID},</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- {{26, 1}, {26, 1}, 22, 0, "MCS-1",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{26, 1}, {26, 1}, 22, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_3, FAMILY_C},</span><br><span style="color: hsl(0, 100%, 40%);">- {{32, 1}, {32, 1}, 28, 0, "MCS-2",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{32, 1}, {32, 1}, 28, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_3, FAMILY_B},</span><br><span style="color: hsl(0, 100%, 40%);">- {{41, 1}, {41, 1}, 37, 48, "MCS-3",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{41, 1}, {41, 1}, 37, 48,</span><br><span> HEADER_EGPRS_DATA_TYPE_3, FAMILY_A},</span><br><span style="color: hsl(0, 100%, 40%);">- {{48, 1}, {48, 1}, 44, 0, "MCS-4",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{48, 1}, {48, 1}, 44, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_3, FAMILY_C},</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- {{60, 7}, {59, 6}, 56, 0, "MCS-5",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{60, 7}, {59, 6}, 56, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_2, FAMILY_B},</span><br><span style="color: hsl(0, 100%, 40%);">- {{78, 7}, {77, 6}, 74, 48, "MCS-6",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{78, 7}, {77, 6}, 74, 48,</span><br><span> HEADER_EGPRS_DATA_TYPE_2, FAMILY_A},</span><br><span style="color: hsl(0, 100%, 40%);">- {{118, 2}, {117, 4}, 56, 0, "MCS-7",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{118, 2}, {117, 4}, 56, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_1, FAMILY_B},</span><br><span style="color: hsl(0, 100%, 40%);">- {{142, 2}, {141, 4}, 68, 0, "MCS-8",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{142, 2}, {141, 4}, 68, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_1, FAMILY_A},</span><br><span style="color: hsl(0, 100%, 40%);">- {{154, 2}, {153, 4}, 74, 0, "MCS-9",</span><br><span style="color: hsl(120, 100%, 40%);">+ {{154, 2}, {153, 4}, 74, 0,</span><br><span> HEADER_EGPRS_DATA_TYPE_1, FAMILY_A},</span><br><span> };</span><br><span> </span><br><span>@@ -194,11 +193,6 @@</span><br><span> return mcs_info[m_scheme].optional_padding_bits;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-const char *GprsCodingScheme::name() const</span><br><span style="color: hsl(0, 100%, 40%);">-{</span><br><span style="color: hsl(0, 100%, 40%);">- return mcs_info[m_scheme].name;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> enum HeaderType GprsCodingScheme::headerTypeData() const</span><br><span> {</span><br><span> return mcs_info[m_scheme].data_hdr;</span><br><span>diff --git a/src/gprs_coding_scheme.h b/src/gprs_coding_scheme.h</span><br><span>index 56ee002..055c166 100644</span><br><span>--- a/src/gprs_coding_scheme.h</span><br><span>+++ b/src/gprs_coding_scheme.h</span><br><span>@@ -74,7 +74,7 @@</span><br><span> uint8_t spareBitsDL() const;</span><br><span> uint8_t maxDataBlockBytes() const;</span><br><span> uint8_t optionalPaddingBits() const;</span><br><span style="color: hsl(0, 100%, 40%);">- const char *name() const;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> enum HeaderType headerTypeData() const;</span><br><span> </span><br><span> static GprsCodingScheme getBySizeUL(unsigned size);</span><br><span>diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp</span><br><span>index 77a8f2e..3c28319 100644</span><br><span>--- a/src/gprs_ms.cpp</span><br><span>+++ b/src/gprs_ms.cpp</span><br><span>@@ -34,6 +34,7 @@</span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/gsm/protocol/gsm_04_08.h></span><br><span> #include <osmocom/core/logging.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> #define GPRS_CODEL_SLOW_INTERVAL_MS 4000</span><br><span>@@ -527,7 +528,7 @@</span><br><span> LOGP(DRLCMACDL, LOGL_INFO,</span><br><span> "MS (IMSI %s): High error rate %d%%, "</span><br><span> "reducing CS level to %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- imsi(), error_rate, m_current_cs_dl.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ imsi(), error_rate, mcs_name(m_current_cs_dl));</span><br><span> m_last_cs_not_low = now;</span><br><span> }</span><br><span> } else if (error_rate < bts_data->cs_adj_lower_limit) {</span><br><span>@@ -539,7 +540,7 @@</span><br><span> "MS (IMSI %s): Low error rate %d%%, "</span><br><span> "increasing DL CS level to %s\n",</span><br><span> imsi(), error_rate,</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_dl.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_dl));</span><br><span> m_last_cs_not_low = now;</span><br><span> } else {</span><br><span> LOGP(DRLCMACDL, LOGL_DEBUG,</span><br><span>@@ -627,7 +628,7 @@</span><br><span> if (!max_cs_ul) {</span><br><span> LOGP(DRLCMACMEAS, LOGL_ERROR,</span><br><span> "max_cs_ul cannot be derived (current UL CS: %s)\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_ul));</span><br><span> return;</span><br><span> }</span><br><span> </span><br><span>@@ -636,14 +637,14 @@</span><br><span> if (!m_current_cs_ul) {</span><br><span> LOGP(DRLCMACMEAS, LOGL_ERROR,</span><br><span> "Unable to update UL (M)CS because it's not set: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_ul));</span><br><span> return;</span><br><span> }</span><br><span> </span><br><span> if (!meas->have_link_qual) {</span><br><span> LOGP(DRLCMACMEAS, LOGL_ERROR,</span><br><span> "Unable to update UL (M)CS %s because we don't have link quality measurements.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_ul));</span><br><span> return;</span><br><span> }</span><br><span> </span><br><span>@@ -662,7 +663,7 @@</span><br><span> } else {</span><br><span> LOGP(DRLCMACMEAS, LOGL_ERROR,</span><br><span> "Unable to update UL (M)CS because it's neither GPRS nor EDGE: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_ul));</span><br><span> return;</span><br><span> }</span><br><span> </span><br><span>@@ -682,7 +683,7 @@</span><br><span> "modifying uplink CS level: %s -> %s\n",</span><br><span> imsi(), meas->link_qual, old_link_qual,</span><br><span> low, high,</span><br><span style="color: hsl(0, 100%, 40%);">- m_current_cs_ul.name(), new_cs_ul.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(m_current_cs_ul), mcs_name(new_cs_ul));</span><br><span> </span><br><span> m_current_cs_ul = new_cs_ul;</span><br><span> }</span><br><span>diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp</span><br><span>index c71959d..47a0559 100644</span><br><span>--- a/src/pcu_vty_functions.cpp</span><br><span>+++ b/src/pcu_vty_functions.cpp</span><br><span>@@ -41,6 +41,7 @@</span><br><span> #include <osmocom/core/linuxlist.h></span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/vty/vty.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> static void tbf_print_vty_info(struct vty *vty, gprs_rlcmac_tbf *tbf)</span><br><span>@@ -70,7 +71,7 @@</span><br><span> }</span><br><span> if (tbf->trx != NULL)</span><br><span> vty_out(vty, " TRX_ID=%d", tbf->trx->trx_no);</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " CS=%s", tbf->current_cs().name());</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " CS=%s", mcs_name(tbf->current_cs()));</span><br><span> </span><br><span> if (ul_tbf) {</span><br><span> gprs_rlc_ul_window *win = ul_tbf->window();</span><br><span>@@ -127,8 +128,8 @@</span><br><span> vty_out(vty, "MS TLLI=%08x, TA=%d, CS-UL=%s, CS-DL=%s, LLC=%zd, Cl=%d, E-Cl=%d,"</span><br><span> " TBF-UL=%s, TBF-DL=%s, IMSI=%s%s",</span><br><span> ms->tlli(),</span><br><span style="color: hsl(0, 100%, 40%);">- ms->ta(), ms->current_cs_ul().name(),</span><br><span style="color: hsl(0, 100%, 40%);">- ms->current_cs_dl().name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ ms->ta(), mcs_name(ms->current_cs_ul()),</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(ms->current_cs_dl()),</span><br><span> ms->llc_queue()->size(),</span><br><span> ms->ms_class(),</span><br><span> ms->egprs_ms_class(),</span><br><span>@@ -148,9 +149,9 @@</span><br><span> </span><br><span> vty_out(vty, "MS TLLI=%08x, IMSI=%s%s", ms->tlli(), ms->imsi(), VTY_NEWLINE);</span><br><span> vty_out(vty, " Timing advance (TA): %d%s", ms->ta(), VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " Coding scheme uplink: %s%s", ms->current_cs_ul().name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " Coding scheme uplink: %s%s", mcs_name(ms->current_cs_ul()),</span><br><span> VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " Coding scheme downlink: %s%s", ms->current_cs_dl().name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " Coding scheme downlink: %s%s", mcs_name(ms->current_cs_dl()),</span><br><span> VTY_NEWLINE);</span><br><span> vty_out(vty, " Mode: %s%s",</span><br><span> GprsCodingScheme::modeName(ms->mode()), VTY_NEWLINE);</span><br><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index 22a1605..c6c677c 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -43,6 +43,7 @@</span><br><span> #include <osmocom/core/gsmtap.h></span><br><span> #include <osmocom/core/logging.h></span><br><span> #include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> #include <errno.h></span><br><span>@@ -738,7 +739,7 @@</span><br><span> bts()->rlc_ul_bytes(len);</span><br><span> </span><br><span> LOGP(DRLCMACUL, LOGL_DEBUG, "Got RLC block, coding scheme: %s, "</span><br><span style="color: hsl(0, 100%, 40%);">- "length: %d (%d))\n", cs.name(), len, cs.usedSizeUL());</span><br><span style="color: hsl(120, 100%, 40%);">+ "length: %d (%d))\n", mcs_name(cs), len, cs.usedSizeUL());</span><br><span> </span><br><span> if (cs.isGprs())</span><br><span> return rcv_block_gprs(data, len, fn, meas, cs);</span><br><span>@@ -748,7 +749,7 @@</span><br><span> </span><br><span> bts()->decode_error();</span><br><span> LOGP(DRLCMACUL, LOGL_ERROR, "Unsupported coding scheme %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> return -EINVAL;</span><br><span> }</span><br><span> </span><br><span>@@ -768,7 +769,7 @@</span><br><span> if (!bts()->bts_data()->egprs_enabled) {</span><br><span> LOGP(DRLCMACUL, LOGL_ERROR,</span><br><span> "Got %s RLC block but EGPRS is not enabled\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> return -EINVAL;</span><br><span> }</span><br><span> bts()->send_gsmtap(PCU_GSMTAP_C_UL_DATA_EGPRS, true, trx_no(), ts_no, GSMTAP_CHANNEL_PDTCH, fn,</span><br><span>@@ -784,7 +785,7 @@</span><br><span> if (rc < 0) {</span><br><span> LOGP(DRLCMACUL, LOGL_ERROR,</span><br><span> "Got %s RLC block but header parsing has failed\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs));</span><br><span> bts()->decode_error();</span><br><span> return rc;</span><br><span> }</span><br><span>@@ -793,7 +794,7 @@</span><br><span> "Got %s RLC block: "</span><br><span> "R=%d, SI=%d, TFI=%d, CPS=%d, RSB=%d, "</span><br><span> "rc=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- cs.name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(cs),</span><br><span> rlc_dec.r, rlc_dec.si, rlc_dec.tfi, rlc_dec.cps, rlc_dec.rsb,</span><br><span> rc);</span><br><span> </span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 2f4781c..38dab37 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -46,6 +46,7 @@</span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/gsm/gsm_utils.h></span><br><span> #include <osmocom/gsm/protocol/gsm_04_08.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> #include <errno.h></span><br><span>@@ -429,7 +430,7 @@</span><br><span> new_cs = force_cs ? force_cs : current_cs();</span><br><span> LOGPTBFDL(this, LOGL_DEBUG,</span><br><span> "Sending new block at BSN %d, CS=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_window.v_s(), new_cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ m_window.v_s(), mcs_name(new_cs));</span><br><span> </span><br><span> bsn = create_new_bsn(fn, new_cs);</span><br><span> } else if (!m_window.window_empty()) {</span><br><span>@@ -443,7 +444,7 @@</span><br><span> /* Nothing left to send, create dummy LLC commands */</span><br><span> LOGPTBFDL(this, LOGL_DEBUG,</span><br><span> "Sending new dummy block at BSN %d, CS=%s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- m_window.v_s(), current_cs().name());</span><br><span style="color: hsl(120, 100%, 40%);">+ m_window.v_s(), mcs_name(current_cs()));</span><br><span> bsn = create_new_bsn(fn, current_cs());</span><br><span> /* Don't send a second block, so don't set cs_current_trans */</span><br><span> }</span><br><span>@@ -624,7 +625,7 @@</span><br><span> } while (ar == Encoding::AR_COMPLETED_SPACE_LEFT);</span><br><span> </span><br><span> LOGPTBFDL(this, LOGL_DEBUG, "data block (BSN %d, %s): %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- bsn, rlc_data->cs_last.name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ bsn, mcs_name(rlc_data->cs_last),</span><br><span> osmo_hexdump(rlc_data->block, block_data_len));</span><br><span> /* raise send state and set ack state array */</span><br><span> m_window.m_v_b.mark_unacked(bsn);</span><br><span>@@ -867,7 +868,7 @@</span><br><span> Encoding::rlc_write_dl_data_header(&rlc, msg_data);</span><br><span> </span><br><span> LOGPTBFDL(this, LOGL_DEBUG, "msg block (BSN %d, %s%s): %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- index, cs.name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ index, mcs_name(cs),</span><br><span> need_padding ? ", padded" : "",</span><br><span> msgb_hexdump(dl_msg));</span><br><span> </span><br><span>@@ -1281,7 +1282,7 @@</span><br><span> "FIXME: Software error: hit invalid condition. "</span><br><span> "headerType(%d) blockstatus(%d) cs(%s) PLEASE FIX!\n",</span><br><span> cs_current_trans.headerTypeData(),</span><br><span style="color: hsl(0, 100%, 40%);">- *block_status_dl, cs_init.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ *block_status_dl, mcs_name(cs_init));</span><br><span> break;</span><br><span> </span><br><span> }</span><br><span>diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp</span><br><span>index bc36733..0bf5765 100644</span><br><span>--- a/src/tbf_ul.cpp</span><br><span>+++ b/src/tbf_ul.cpp</span><br><span>@@ -43,6 +43,7 @@</span><br><span> #include <osmocom/gprs/gprs_bssgp_bss.h></span><br><span> #include <osmocom/gprs/protocol/gsm_08_18.h></span><br><span> #include <osmocom/gsm/tlv.h></span><br><span style="color: hsl(120, 100%, 40%);">+ #include "coding_scheme.h"</span><br><span> }</span><br><span> </span><br><span> #include <errno.h></span><br><span>@@ -212,7 +213,7 @@</span><br><span> </span><br><span> LOGPTBFUL(this, LOGL_DEBUG,</span><br><span> "Got %s RLC data block: CV=%d, BSN=%d, SPB=%d, PI=%d, E=%d, TI=%d, bitoffs=%d\n",</span><br><span style="color: hsl(0, 100%, 40%);">- rlc->cs.name(),</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(rlc->cs),</span><br><span> rdbi->cv, rdbi->bsn, rdbi->spb,</span><br><span> rdbi->pi, rdbi->e, rdbi->ti,</span><br><span> rlc->data_offs_bits[block_idx]);</span><br><span>@@ -278,7 +279,7 @@</span><br><span> bts->decode_error();</span><br><span> LOGPTBFUL(this, LOGL_NOTICE,</span><br><span> "Failed to decode TLLI of %s UL DATA TFI=%d.\n",</span><br><span style="color: hsl(0, 100%, 40%);">- rlc->cs.name(), rlc->tfi);</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(rlc->cs), rlc->tfi);</span><br><span> m_window.invalidate_bsn(rdbi->bsn);</span><br><span> continue;</span><br><span> }</span><br><span>@@ -479,7 +480,7 @@</span><br><span> </span><br><span> LOGPTBFUL(this, LOGL_DEBUG,</span><br><span> "Got SPB(%d) cs(%s) data block with BSN (%d), TFI(%d).\n",</span><br><span style="color: hsl(0, 100%, 40%);">- rdbi->spb, rlc->cs.name(), rdbi->bsn, rlc->tfi);</span><br><span style="color: hsl(120, 100%, 40%);">+ rdbi->spb, mcs_name(rlc->cs), rdbi->bsn, rlc->tfi);</span><br><span> </span><br><span> egprs_rlc_ul_reseg_bsn_state assemble_status = EGPRS_RESEG_INVALID;</span><br><span> </span><br><span>@@ -517,7 +518,7 @@</span><br><span> default:</span><br><span> LOGPTBFUL(this, LOGL_ERROR,</span><br><span> "cs(%s) Error in Upgrading to higher MCS\n",</span><br><span style="color: hsl(0, 100%, 40%);">- rlc->cs.name());</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(rlc->cs));</span><br><span> break;</span><br><span> }</span><br><span> }</span><br><span>diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp</span><br><span>index 23abada..41a1115 100644</span><br><span>--- a/tests/edge/EdgeTest.cpp</span><br><span>+++ b/tests/edge/EdgeTest.cpp</span><br><span>@@ -1118,7 +1118,7 @@</span><br><span> fprintf(stderr,</span><br><span> "Encoded message block, %s, idx %d, "</span><br><span> "pattern %02x: %s\n",</span><br><span style="color: hsl(0, 100%, 40%);">- rlc.cs.name(), block_idx, pattern,</span><br><span style="color: hsl(120, 100%, 40%);">+ mcs_name(rlc.cs), block_idx, pattern,</span><br><span> osmo_hexdump(bits, cs.sizeDL()));</span><br><span> </span><br><span> Decoding::rlc_copy_to_aligned_buffer(</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/13069">change 13069</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/13069"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I212ebb892ab162821633974d5a6c7e315d308370 </div>
<div style="display:none"> Gerrit-Change-Number: 13069 </div>
<div style="display:none"> Gerrit-PatchSet: 9 </div>
<div style="display:none"> Gerrit-Owner: Max <msuraev@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Max <msuraev@sysmocom.de> </div>