[PATCH] osmo-pcu[master]: Add BTS level counters

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

mrinal gerrit-no-reply at lists.osmocom.org
Thu Nov 3 06:12:37 UTC 2016


Hello Jenkins Builder, Holger Freyther,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/1167

to look at the new patch set (#4).

Add BTS level counters

Adds counters for MCS blocks, 11 bit Rach counters and others.

Change-Id: I605b0d66eb217decd35cbb8f87abfa577760245a
---
M src/bts.cpp
M src/bts.h
M src/tbf.cpp
M src/tbf.h
M src/tbf_dl.cpp
M src/tbf_ul.cpp
6 files changed, 296 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/67/1167/4

diff --git a/src/bts.cpp b/src/bts.cpp
index 4aa5c2c..febc45c 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -88,6 +88,46 @@
 	{ "llc.dl_bytes",               "RLC encapsulated PDUs"},
 	{ "llc.ul_bytes",               "full PDUs received   "},
 	{ "rach.requests",		"RACH requests        "},
+	{ "11bit_rach.requests",	"11BIT_RACH requests  "},
+	{ "immediate.assignment_UL",    "Immediate Assign UL  "},
+	{ "immediate.assignment_DL",    "Immediate Assign DL  "},
+	{ "pkt.ul_assignment",          "Packet UL Assignment "},
+	{ "pkt.dl_assignment",          "Packet DL Assignment "},
+	{ "ul.control",                 "UL control Block     "},
+	{ "ul.assignment_poll_timeout", "UL Assign Timeout    "},
+	{ "ul.assignment_failed",       "UL Assign Failed     "},
+	{ "dl.assignment_timeout",      "DL Assign Timeout    "},
+	{ "dl.assignment_failed",       "DL Assign Failed     "},
+	{ "pkt.ul_ack_nack_timeout",    "PUAN Poll Timeout    "},
+	{ "pkt.ul_ack_nack_failed",     "PUAN poll Failed     "},
+	{ "pkt.dl_ack_nack_timeout",    "PDAN poll Timeout    "},
+	{ "pkt.dl_ack_nack_failed",     "PDAN poll Failed     "},
+	{ "gprs.downlink_cs1",          "CS1 downlink         "},
+	{ "gprs.downlink_cs2",          "CS2 downlink         "},
+	{ "gprs.downlink_cs3",          "CS3 downlink         "},
+	{ "gprs.downlink_cs4",          "CS4 downlink         "},
+	{ "egprs.downlink_mcs1",        "MCS1 downlink        "},
+	{ "egprs.downlink_mcs2",        "MCS2 downlink        "},
+	{ "egprs.downlink_mcs3",        "MCS3 downlink        "},
+	{ "egprs.downlink_mcs4",        "MCS4 downlink        "},
+	{ "egprs.downlink_mcs5",        "MCS5 downlink        "},
+	{ "egprs.downlink_mcs6",        "MCS6 downlink        "},
+	{ "egprs.downlink_mcs7",        "MCS7 downlink        "},
+	{ "egprs.downlink_mcs8",        "MCS8 downlink        "},
+	{ "egprs.downlink_mcs9",        "MCS9 downlink        "},
+	{ "gprs.uplink_cs1",            "CS1 Uplink           "},
+	{ "gprs.uplink_cs2",            "CS2 Uplink           "},
+	{ "gprs.uplink_cs3",            "CS3 Uplink           "},
+	{ "gprs.uplink_cs4",            "CS4 Uplink           "},
+	{ "egprs.uplink_mcs1",          "MCS1 Uplink          "},
+	{ "egprs.uplink_mcs2",          "MCS2 Uplink          "},
+	{ "egprs.uplink_mcs3",          "MCS3 Uplink          "},
+	{ "egprs.uplink_mcs4",          "MCS4 Uplink          "},
+	{ "egprs.uplink_mcs5",          "MCS5 Uplink          "},
+	{ "egprs.uplink_mcs6",          "MCS6 Uplink          "},
+	{ "egprs.uplink_mcs7",          "MCS7 Uplink          "},
+	{ "egprs.uplink_mcs8",          "MCS8 Uplink          "},
+	{ "egprs.uplink_mcs9",          "MCS9 Uplink          "},
 };
 
 static const struct rate_ctr_group_desc bts_ctrg_desc = {
@@ -484,6 +524,9 @@
 
 	rach_frame();
 
+	if (is_11bit)
+		rach_frame_11bit();
+
 	LOGP(DRLCMAC, LOGL_DEBUG, "MS requests UL TBF on RACH, so we provide "
 		"one:\n");
 
@@ -550,8 +593,10 @@
 		m_bts.trx[trx_no].arfcn, ts_no, tsc, usf, 0, sb_fn,
 		m_bts.alpha, m_bts.gamma, -1, burst_type, sb);
 
-	if (plen >= 0)
+	if (plen >= 0) {
+		immediate_assignment_ul_tbf();
 		pcu_l1if_tx_agch(immediate_assignment, plen);
+	}
 
 	bitvec_free(immediate_assignment);
 
@@ -676,8 +721,11 @@
 		(tbf->pdch[ts]->last_rts_fn + 21216) % 2715648, tbf->ta(),
 		tbf->trx->arfcn, ts, tbf->tsc(), 7, poll,
 		tbf->poll_fn, m_bts.alpha, m_bts.gamma, -1);
-	if (plen >= 0)
+	if (plen >= 0) {
+		immediate_assignment_dl_tbf();
 		pcu_l1if_tx_pch(immediate_assignment, plen, imsi);
+	}
+
 	bitvec_free(immediate_assignment);
 }
 
@@ -1326,6 +1374,7 @@
 	decode_gsm_rlcmac_uplink(rlc_block, ul_control_block);
 	LOGPC(DCSN1, LOGL_NOTICE, "\n");
 	LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- RX : Uplink Control Block -------------------------\n");
+	bts()->rlc_rcvd_control();
 	switch (ul_control_block->u.MESSAGE_TYPE) {
 	case MT_PACKET_CONTROL_ACK:
 		rcv_control_ack(&ul_control_block->u.Packet_Control_Acknowledgement, fn);
diff --git a/src/bts.h b/src/bts.h
index 8bea371..33f5483 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -265,6 +265,46 @@
 		CTR_LLC_DL_BYTES,
 		CTR_LLC_UL_BYTES,
 		CTR_RACH_REQUESTS,
+		CTR_11BIT_RACH_REQUESTS,
+		CTR_IMMEDIATE_ASSIGN_UL_TBF,
+		CTR_IMMEDIATE_ASSIGN_DL_TBF,
+		CTR_PKT_UL_ASSIGNMENT,
+		CTR_PKT_DL_ASSIGNMENT,
+		CTR_RLC_RECV_CONTROL,
+		CTR_PUA_POLL_TIMEDOUT,
+		CTR_PUA_POLL_FAILED,
+		CTR_PDA_POLL_TIMEDOUT,
+		CTR_PDA_POLL_FAILED,
+		CTR_PUAN_POLL_TIMEDOUT,
+		CTR_PUAN_POLL_FAILED,
+		CTR_PDAN_POLL_TIMEDOUT,
+		CTR_PDAN_POLL_FAILED,
+		CTR_GPRS_DL_CS1,
+		CTR_GPRS_DL_CS2,
+		CTR_GPRS_DL_CS3,
+		CTR_GPRS_DL_CS4,
+		CTR_EGPRS_DL_MCS1,
+		CTR_EGPRS_DL_MCS2,
+		CTR_EGPRS_DL_MCS3,
+		CTR_EGPRS_DL_MCS4,
+		CTR_EGPRS_DL_MCS5,
+		CTR_EGPRS_DL_MCS6,
+		CTR_EGPRS_DL_MCS7,
+		CTR_EGPRS_DL_MCS8,
+		CTR_EGPRS_DL_MCS9,
+		CTR_GPRS_UL_CS1,
+		CTR_GPRS_UL_CS2,
+		CTR_GPRS_UL_CS3,
+		CTR_GPRS_UL_CS4,
+		CTR_EGPRS_UL_MCS1,
+		CTR_EGPRS_UL_MCS2,
+		CTR_EGPRS_UL_MCS3,
+		CTR_EGPRS_UL_MCS4,
+		CTR_EGPRS_UL_MCS5,
+		CTR_EGPRS_UL_MCS6,
+		CTR_EGPRS_UL_MCS7,
+		CTR_EGPRS_UL_MCS8,
+		CTR_EGPRS_UL_MCS9,
 	};
 
 	enum {
@@ -352,6 +392,46 @@
 	void llc_dl_bytes(int bytes);
 	void llc_ul_bytes(int bytes);
 	void rach_frame();
+	void rach_frame_11bit();
+	void immediate_assignment_ul_tbf();
+	void immediate_assignment_dl_tbf();
+	void pkt_ul_assignment();
+	void pkt_dl_assignemnt();
+	void rlc_rcvd_control();
+	void pua_poll_timedout();
+	void pua_poll_failed();
+	void pda_poll_timedout();
+	void pda_poll_failed();
+	void pkt_ul_ack_nack_poll_timedout();
+	void pkt_ul_ack_nack_poll_failed();
+	void pkt_dl_ack_nack_poll_timedout();
+	void pkt_dl_ack_nack_poll_failed();
+	void gprs_dl_cs1();
+	void gprs_dl_cs2();
+	void gprs_dl_cs3();
+	void gprs_dl_cs4();
+	void egprs_dl_mcs1();
+	void egprs_dl_mcs2();
+	void egprs_dl_mcs3();
+	void egprs_dl_mcs4();
+	void egprs_dl_mcs5();
+	void egprs_dl_mcs6();
+	void egprs_dl_mcs7();
+	void egprs_dl_mcs8();
+	void egprs_dl_mcs9();
+	void gprs_ul_cs1();
+	void gprs_ul_cs2();
+	void gprs_ul_cs3();
+	void gprs_ul_cs4();
+	void egprs_ul_mcs1();
+	void egprs_ul_mcs2();
+	void egprs_ul_mcs3();
+	void egprs_ul_mcs4();
+	void egprs_ul_mcs5();
+	void egprs_ul_mcs6();
+	void egprs_ul_mcs7();
+	void egprs_ul_mcs8();
+	void egprs_ul_mcs9();
 
 	void ms_present(int32_t n);
 	int32_t ms_present_get();
@@ -505,6 +585,46 @@
 CREATE_COUNT_ADD_INLINE(llc_dl_bytes, CTR_LLC_DL_BYTES);
 CREATE_COUNT_ADD_INLINE(llc_ul_bytes, CTR_LLC_UL_BYTES);
 CREATE_COUNT_INLINE(rach_frame, CTR_RACH_REQUESTS);
+CREATE_COUNT_INLINE(rach_frame_11bit, CTR_11BIT_RACH_REQUESTS);
+CREATE_COUNT_INLINE(immediate_assignment_ul_tbf, CTR_IMMEDIATE_ASSIGN_UL_TBF);
+CREATE_COUNT_INLINE(immediate_assignment_dl_tbf, CTR_IMMEDIATE_ASSIGN_DL_TBF);
+CREATE_COUNT_INLINE(pkt_ul_assignment, CTR_PKT_UL_ASSIGNMENT);
+CREATE_COUNT_INLINE(pkt_dl_assignemnt, CTR_PKT_DL_ASSIGNMENT);
+CREATE_COUNT_INLINE(rlc_rcvd_control, CTR_RLC_RECV_CONTROL);
+CREATE_COUNT_INLINE(pua_poll_timedout, CTR_PUA_POLL_TIMEDOUT);
+CREATE_COUNT_INLINE(pua_poll_failed, CTR_PUA_POLL_FAILED);
+CREATE_COUNT_INLINE(pda_poll_timedout, CTR_PDA_POLL_TIMEDOUT);
+CREATE_COUNT_INLINE(pda_poll_failed, CTR_PDA_POLL_FAILED);
+CREATE_COUNT_INLINE(pkt_ul_ack_nack_poll_timedout, CTR_PUAN_POLL_TIMEDOUT);
+CREATE_COUNT_INLINE(pkt_ul_ack_nack_poll_failed, CTR_PUAN_POLL_FAILED);
+CREATE_COUNT_INLINE(pkt_dl_ack_nack_poll_timedout, CTR_PDAN_POLL_TIMEDOUT);
+CREATE_COUNT_INLINE(pkt_dl_ack_nack_poll_failed, CTR_PDAN_POLL_FAILED);
+CREATE_COUNT_INLINE(gprs_dl_cs1, CTR_GPRS_DL_CS1);
+CREATE_COUNT_INLINE(gprs_dl_cs2, CTR_GPRS_DL_CS2);
+CREATE_COUNT_INLINE(gprs_dl_cs3, CTR_GPRS_DL_CS3);
+CREATE_COUNT_INLINE(gprs_dl_cs4, CTR_GPRS_DL_CS4);
+CREATE_COUNT_INLINE(egprs_dl_mcs1, CTR_EGPRS_DL_MCS1);
+CREATE_COUNT_INLINE(egprs_dl_mcs2, CTR_EGPRS_DL_MCS2);
+CREATE_COUNT_INLINE(egprs_dl_mcs3, CTR_EGPRS_DL_MCS3);
+CREATE_COUNT_INLINE(egprs_dl_mcs4, CTR_EGPRS_DL_MCS4);
+CREATE_COUNT_INLINE(egprs_dl_mcs5, CTR_EGPRS_DL_MCS5);
+CREATE_COUNT_INLINE(egprs_dl_mcs6, CTR_EGPRS_DL_MCS6);
+CREATE_COUNT_INLINE(egprs_dl_mcs7, CTR_EGPRS_DL_MCS7);
+CREATE_COUNT_INLINE(egprs_dl_mcs8, CTR_EGPRS_DL_MCS8);
+CREATE_COUNT_INLINE(egprs_dl_mcs9, CTR_EGPRS_DL_MCS9);
+CREATE_COUNT_INLINE(gprs_ul_cs1, CTR_GPRS_UL_CS1);
+CREATE_COUNT_INLINE(gprs_ul_cs2, CTR_GPRS_UL_CS2);
+CREATE_COUNT_INLINE(gprs_ul_cs3, CTR_GPRS_UL_CS3);
+CREATE_COUNT_INLINE(gprs_ul_cs4, CTR_GPRS_UL_CS4);
+CREATE_COUNT_INLINE(egprs_ul_mcs1, CTR_EGPRS_UL_MCS1);
+CREATE_COUNT_INLINE(egprs_ul_mcs2, CTR_EGPRS_UL_MCS2);
+CREATE_COUNT_INLINE(egprs_ul_mcs3, CTR_EGPRS_UL_MCS3);
+CREATE_COUNT_INLINE(egprs_ul_mcs4, CTR_EGPRS_UL_MCS4);
+CREATE_COUNT_INLINE(egprs_ul_mcs5, CTR_EGPRS_UL_MCS5);
+CREATE_COUNT_INLINE(egprs_ul_mcs6, CTR_EGPRS_UL_MCS6);
+CREATE_COUNT_INLINE(egprs_ul_mcs7, CTR_EGPRS_UL_MCS7);
+CREATE_COUNT_INLINE(egprs_ul_mcs8, CTR_EGPRS_UL_MCS8);
+CREATE_COUNT_INLINE(egprs_ul_mcs9, CTR_EGPRS_UL_MCS9);
 
 #undef CREATE_COUNT_INLINE
 
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 0ac8ace..19341af 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -508,12 +508,14 @@
 		}
 		ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE;
 		bts->rlc_ack_timedout();
+		bts->pkt_ul_ack_nack_poll_timedout();
 		if (state_is(GPRS_RLCMAC_FINISHED)) {
 			gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(this);
 			ul_tbf->m_n3103++;
 			if (ul_tbf->m_n3103 == ul_tbf->bts->bts_data()->n3103) {
 				LOGP(DRLCMAC, LOGL_NOTICE,
 					"- N3103 exceeded\n");
+				bts->pkt_ul_ack_nack_poll_failed();
 				ul_tbf->set_state(GPRS_RLCMAC_RELEASING);
 				tbf_timer_start(ul_tbf, 3169, ul_tbf->bts->bts_data()->t3169, 0);
 				return;
@@ -533,11 +535,13 @@
 		ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE;
 		n3105++;
 		bts->rlc_ass_timedout();
+		bts->pua_poll_timedout();
 		if (n3105 == bts_data()->n3105) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n");
 			set_state(GPRS_RLCMAC_RELEASING);
 			tbf_timer_start(this, 3195, bts_data()->t3195, 0);
 			bts->rlc_ass_failed();
+			bts->pua_poll_failed();
 			return;
 		}
 		/* reschedule UL assignment */
@@ -553,11 +557,13 @@
 		dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
 		n3105++;
 		bts->rlc_ass_timedout();
+		bts->pda_poll_timedout();
 		if (n3105 == bts->bts_data()->n3105) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n");
 			set_state(GPRS_RLCMAC_RELEASING);
 			tbf_timer_start(this, 3195, bts_data()->t3195, 0);
 			bts->rlc_ass_failed();
+			bts->pda_poll_failed();
 			return;
 		}
 		/* reschedule DL assignment */
@@ -574,12 +580,15 @@
 		dl_tbf->n3105++;
 		if (dl_tbf->state_is(GPRS_RLCMAC_RELEASING))
 			bts->rlc_rel_timedout();
-		else
+		else {
 			bts->rlc_ack_timedout();
+			bts->pkt_dl_ack_nack_poll_timedout();
+		}
 		if (dl_tbf->n3105 == dl_tbf->bts->bts_data()->n3105) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n");
 			dl_tbf->set_state(GPRS_RLCMAC_RELEASING);
 			tbf_timer_start(dl_tbf, 3195, dl_tbf->bts_data()->t3195, 0);
+			bts->pkt_dl_ack_nack_poll_failed();
 			bts->rlc_ack_failed();
 			return;
 		}
@@ -991,6 +1000,7 @@
 	encode_gsm_rlcmac_downlink(ass_vec, mac_control_block);
 	LOGPC(DCSN1, LOGL_NOTICE, "\n");
 	LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- TX : Packet Downlink Assignment -------------------------\n");
+	bts->pkt_dl_assignemnt();
 	bitvec_pack(ass_vec, msgb_put(msg, 23));
 	bitvec_free(ass_vec);
 	talloc_free(mac_control_block);
@@ -1064,6 +1074,7 @@
 	decode_gsm_rlcmac_downlink(ass_vec, mac_control_block);
 	LOGPC(DCSN1, LOGL_NOTICE, "\n");
 	LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- TX : Packet Uplink Assignment -------------------------\n");
+	bts->pkt_ul_assignment();
 	bitvec_free(ass_vec);
 	talloc_free(mac_control_block);
 
diff --git a/src/tbf.h b/src/tbf.h
index 3205f6e..2e93efc 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -377,6 +377,7 @@
 	int abort();
 
 	void egprs_calc_window_size();
+	void update_coding_scheme_counter_dl(const GprsCodingScheme cs);
 
 	/* TODO: add the gettimeofday as parameter */
 	struct msgb *llc_dequeue(bssgp_bvc_ctx *bctx);
@@ -465,6 +466,8 @@
 		struct gprs_rlc_data *block,
 		uint8_t *data, const uint8_t block_idx);
 
+	void update_coding_scheme_counter_ul(const GprsCodingScheme cs);
+
 	/* Please note that all variables here will be reset when changing
 	 * from WAIT RELEASE back to FLOW state (re-use of TBF).
 	 * All states that need reset must be in this struct, so this is why
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index f6836f8..920bc70 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -648,6 +648,7 @@
 		num_bsns += 1;
 	}
 
+	update_coding_scheme_counter_dl(cs);
 	/*
 	 * if the intial mcs is 8 and retransmission mcs is either 6 or 3
 	 * we have to include the padding of 6 octets in first segment
@@ -1330,3 +1331,57 @@
 
 	m_window.set_ws(ws);
 }
+
+
+void gprs_rlcmac_dl_tbf::update_coding_scheme_counter_dl(const GprsCodingScheme cs)
+{
+	uint8_t coding_scheme = 0;
+
+	coding_scheme = GprsCodingScheme::Scheme(cs);
+	if (cs.isGprs()) {
+		switch (coding_scheme) {
+		case GprsCodingScheme::CS1 :
+			bts->gprs_dl_cs1();
+			break;
+		case GprsCodingScheme::CS2 :
+			bts->gprs_dl_cs2();
+			break;
+		case GprsCodingScheme::CS3 :
+			bts->gprs_dl_cs3();
+			break;
+		case GprsCodingScheme::CS4 :
+			bts->gprs_dl_cs4();
+			break;
+		}
+	} else {
+		switch (coding_scheme) {
+		case GprsCodingScheme::MCS1 :
+			bts->egprs_dl_mcs1();
+			break;
+		case GprsCodingScheme::MCS2 :
+			bts->egprs_dl_mcs2();
+			break;
+		case GprsCodingScheme::MCS3 :
+			bts->egprs_dl_mcs3();
+			break;
+		case GprsCodingScheme::MCS4 :
+			bts->egprs_dl_mcs4();
+			break;
+		case GprsCodingScheme::MCS5 :
+			bts->egprs_dl_mcs5();
+			break;
+		case GprsCodingScheme::MCS6 :
+			bts->egprs_dl_mcs6();
+			break;
+		case GprsCodingScheme::MCS7 :
+			bts->egprs_dl_mcs7();
+			break;
+		case GprsCodingScheme::MCS8 :
+			bts->egprs_dl_mcs8();
+			break;
+		case GprsCodingScheme::MCS9 :
+			bts->egprs_dl_mcs9();
+			break;
+		}
+	}
+}
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index f67ffd7..387aa76 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -175,7 +175,7 @@
 
 	/* Increment RX-counter */
 	this->m_rx_counter++;
-
+	update_coding_scheme_counter_ul(rlc->cs);
 	/* Loop over num_blocks */
 	for (block_idx = 0; block_idx < rlc->num_data_blocks; block_idx++) {
 		int num_chunks;
@@ -517,3 +517,57 @@
 	}
 	return assemble_status;
 }
+
+void gprs_rlcmac_ul_tbf::update_coding_scheme_counter_ul(const GprsCodingScheme cs)
+{
+	uint8_t coding_scheme = 0;
+
+	coding_scheme = GprsCodingScheme::Scheme(cs);
+	if (cs.isGprs()) {
+		switch (coding_scheme) {
+		case GprsCodingScheme::CS1 :
+			bts->gprs_ul_cs1();
+			break;
+		case GprsCodingScheme::CS2 :
+			bts->gprs_ul_cs2();
+			break;
+		case GprsCodingScheme::CS3 :
+			bts->gprs_ul_cs3();
+			break;
+		case GprsCodingScheme::CS4 :
+			bts->gprs_ul_cs4();
+			break;
+		}
+
+	} else {
+		switch (coding_scheme) {
+		case GprsCodingScheme::MCS1 :
+			bts->egprs_ul_mcs1();
+			break;
+		case GprsCodingScheme::MCS2 :
+			bts->egprs_ul_mcs2();
+			break;
+		case GprsCodingScheme::MCS3 :
+			bts->egprs_ul_mcs3();
+			break;
+		case GprsCodingScheme::MCS4 :
+			bts->egprs_ul_mcs4();
+			break;
+		case GprsCodingScheme::MCS5 :
+			bts->egprs_ul_mcs5();
+			break;
+		case GprsCodingScheme::MCS6 :
+			bts->egprs_ul_mcs6();
+			break;
+		case GprsCodingScheme::MCS7 :
+			bts->egprs_ul_mcs7();
+			break;
+		case GprsCodingScheme::MCS8 :
+			bts->egprs_ul_mcs8();
+			break;
+		case GprsCodingScheme::MCS9 :
+			bts->egprs_ul_mcs9();
+			break;
+		}
+	}
+}

-- 
To view, visit https://gerrit.osmocom.org/1167
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I605b0d66eb217decd35cbb8f87abfa577760245a
Gerrit-PatchSet: 4
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: mrinal <mrinal.mishra at radisys.com>
Gerrit-Reviewer: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: arvind.sirsikar <arvind.sirsikar at radisys.com>
Gerrit-Reviewer: mrinal <mrinal.mishra at radisys.com>



More information about the gerrit-log mailing list