From 22a901905c9749b03fceccda4d550f3da799d524 Mon Sep 17 00:00:00 2001 From: Aravind Sirsikar Date: Thu, 15 Sep 2016 17:24:49 +0530 Subject: EGPRS: Fix issue with row 4 of Table 10.4.14a.1 of 44.060 version 7.27.0 Release 7 row 4 of Table 10.4.14a.1 of Spec 44.060 version 7.27.0 Release 7. Says "The previous RLC data block contains a Upper Layer PDU, or a part of it, that fills precisely the previous data block and for which there is no length indicator in that RLC data block. The current RLC data block contains a Upper Layer PDU that either fills the current RLC data block precisely or continues in the next RLC data block." So when we receive block with 1st LI: value=0 and Value of E bit in the same octet as 1, we expect 2 chunks with 1st chunk as length as 0 and complete and 2nd chunk as length non zero. But with this bug we see only 1 chunk causing incorrect assembling This issue has been fixed in this patch. Related: OS#1811 Change-Id: I2cd0fca3ed28a553ede3f4b8a7d3267284dd2c9b --- src/tbf_ul.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/tbf_ul.cpp') diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp index 7e0732c8..f67ffd77 100644 --- a/src/tbf_ul.cpp +++ b/src/tbf_ul.cpp @@ -67,14 +67,18 @@ int gprs_rlcmac_ul_tbf::assemble_forward_llc(const gprs_rlc_data *_data) for (i = 0; i < num_frames; i++) { frame = frames + i; - bts->rlc_ul_payload_bytes(frame->length); + if (frame->length) { + bts->rlc_ul_payload_bytes(frame->length); - LOGP(DRLCMACUL, LOGL_DEBUG, "-- Frame %d starts at offset %d, " - "length=%d, is_complete=%d\n", - i + 1, frame->offset, frame->length, frame->is_complete); + LOGP(DRLCMACUL, LOGL_DEBUG, "-- Frame %d " + "starts at offset %d, " + "length=%d, is_complete=%d\n", + i + 1, frame->offset, frame->length, + frame->is_complete); - m_llc.append_frame(data + frame->offset, frame->length); - m_llc.consume(frame->length); + m_llc.append_frame(data + frame->offset, frame->length); + m_llc.consume(frame->length); + } if (frame->is_complete) { /* send frame to SGSN */ -- cgit v1.2.3