Max has uploaded this change for review. ( https://gerrit.osmocom.org/13067


Change subject: Move blocks/bits size computation to C file
......................................................................

Move blocks/bits size computation to C file

Move functions which compute number of blocks or bits depending on
header type into C file to simplify further modifications and testing.

Change-Id: Id0873f85e1f16a72e17e7fbc4ad76b194917067f
---
M debian/copyright
M src/Makefile.am
A src/coding_scheme.c
M src/coding_scheme.h
M src/decoding.cpp
M src/encoding.cpp
M src/gprs_bssgp_pcu.cpp
M src/gprs_coding_scheme.cpp
M src/gprs_coding_scheme.h
M src/rlc.cpp
M src/tbf_dl.cpp
M tests/edge/EdgeTest.cpp
12 files changed, 125 insertions(+), 99 deletions(-)



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

diff --git a/debian/copyright b/debian/copyright
index 853cd6e..39e810c 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -13,6 +13,8 @@
 Files:     src/gprs_ms_storage.h
            src/gprs_ms_storage.cpp
            src/gprs_ms.h
+           src/coding_scheme.c
+           src/coding_scheme.h
            src/gprs_coding_scheme.cpp
            src/gprs_coding_scheme.h
            src/cxx_linuxlist.h
diff --git a/src/Makefile.am b/src/Makefile.am
index eb4a2bb..51b047e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -63,6 +63,7 @@
        rlc.cpp \
        osmobts_sock.cpp \
        gprs_codel.c \
+       coding_scheme.c \
        gprs_coding_scheme.cpp \
        egprs_rlc_compression.cpp

diff --git a/src/coding_scheme.c b/src/coding_scheme.c
new file mode 100644
index 0000000..91ece40
--- /dev/null
+++ b/src/coding_scheme.c
@@ -0,0 +1,61 @@
+/* coding_scheme.c
+ *
+ * Copyright (C) 2019 by sysmocom s.f.m.c. GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <osmocom/core/utils.h>
+
+#include "coding_scheme.h"
+
+static struct {
+       struct {
+               uint8_t data_header_bits;
+       } uplink, downlink;
+       uint8_t data_block_header_bits;
+       uint8_t num_blocks;
+       const char *name;
+} hdr_type_info[NUM_HEADER_TYPES] = {
+       { { 0 },         { 0 },         0, 0, "INVALID" },
+       { { 1 * 8 + 0 }, { 1 * 8 + 0 }, 0, 0, "CONTROL" },
+       { { 3 * 8 + 0 }, { 3 * 8 + 0 }, 0, 1, "GPRS_DATA" },
+       { { 5 * 8 + 6 }, { 5 * 8 + 0 }, 2, 2, "EGPRS_DATA_TYPE1" },
+       { { 4 * 8 + 5 }, { 3 * 8 + 4 }, 2, 1, "EGPRS_DATA_TYPE2" },
+       { { 3 * 8 + 7 }, { 3 * 8 + 7 }, 2, 1, "EGPRS_DATA_TYPE3" },
+};
+
+uint8_t numDataBlocks(enum HeaderType ht)
+{
+       return hdr_type_info[ht].num_blocks;
+}
+
+uint8_t numDataHeaderBitsUL(enum HeaderType ht)
+{
+       return hdr_type_info[ht].uplink.data_header_bits;
+}
+
+uint8_t numDataHeaderBitsDL(enum HeaderType ht)
+{
+       return hdr_type_info[ht].downlink.data_header_bits;
+}
+
+uint8_t numDataBlockHeaderBits(enum HeaderType ht)
+{
+       return hdr_type_info[ht].data_block_header_bits;
+}
diff --git a/src/coding_scheme.h b/src/coding_scheme.h
index 3705ea4..b7093d1 100644
--- a/src/coding_scheme.h
+++ b/src/coding_scheme.h
@@ -27,3 +27,20 @@
        MCS1, MCS2, MCS3, MCS4, MCS5, MCS6, MCS7, MCS8, MCS9,
        NUM_SCHEMES
 };
+
+enum HeaderType {
+       HEADER_INVALID,
+       HEADER_GPRS_CONTROL,
+       HEADER_GPRS_DATA,
+       HEADER_EGPRS_DATA_TYPE_1,
+       HEADER_EGPRS_DATA_TYPE_2,
+       HEADER_EGPRS_DATA_TYPE_3,
+       NUM_HEADER_TYPES
+};
+
+enum HeaderType headerTypeData(enum CodingScheme mcs);
+
+uint8_t numDataBlocks(enum HeaderType ht);
+uint8_t numDataHeaderBitsUL(enum HeaderType ht);
+uint8_t numDataHeaderBitsDL(enum HeaderType ht);
+uint8_t numDataBlockHeaderBits(enum HeaderType ht);
diff --git a/src/decoding.cpp b/src/decoding.cpp
index 0dbb10a..3410291 100644
--- a/src/decoding.cpp
+++ b/src/decoding.cpp
@@ -355,16 +355,16 @@
 {
        unsigned int cur_bit = 0;
        switch(cs.headerTypeData()) {
-       case GprsCodingScheme::HEADER_GPRS_DATA :
+       case HEADER_GPRS_DATA :
                cur_bit = rlc_parse_ul_data_header_gprs(rlc, data, cs);
                break;
-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3 :
+       case HEADER_EGPRS_DATA_TYPE_3 :
                cur_bit = rlc_parse_ul_data_header_egprs_type_3(rlc, data, cs);
                break;
-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2 :
+       case HEADER_EGPRS_DATA_TYPE_2 :
                cur_bit = rlc_parse_ul_data_header_egprs_type_2(rlc, data, cs);
                break;
-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1 :
+       case HEADER_EGPRS_DATA_TYPE_1 :
                cur_bit = rlc_parse_ul_data_header_egprs_type_1(rlc, data, cs);
                break;
        default:
diff --git a/src/encoding.cpp b/src/encoding.cpp
index 4c8cdb0..4a57ce3 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -1104,7 +1104,7 @@
        unsigned int bsn_delta;

        switch(cs.headerTypeData()) {
-       case GprsCodingScheme::HEADER_GPRS_DATA:
+       case HEADER_GPRS_DATA:
                gprs = static_cast<struct rlc_dl_header *>
                        ((void *)data);

@@ -1120,7 +1120,7 @@
                gprs->bsn   = rlc->block_info[0].bsn;
                break;

-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1:
+       case HEADER_EGPRS_DATA_TYPE_1:
                egprs1 = static_cast<struct gprs_rlc_dl_header_egprs_1 *>
                        ((void *)data);

@@ -1159,7 +1159,7 @@
                data[offs] = (data[offs] & 0b11110011) | e_fbi_header;
                break;

-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2:
+       case HEADER_EGPRS_DATA_TYPE_2:
                egprs2 = static_cast<struct gprs_rlc_dl_header_egprs_2 *>
                        ((void *)data);

@@ -1183,7 +1183,7 @@
                data[offs] = (data[offs] & 0b11001111) | e_fbi_header;
                break;

-       case GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3:
+       case HEADER_EGPRS_DATA_TYPE_3:
                egprs3 = static_cast<struct gprs_rlc_dl_header_egprs_3 *>
                        ((void *)data);

diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp
index f63fac3..ae2ab7c 100644
--- a/src/gprs_bssgp_pcu.cpp
+++ b/src/gprs_bssgp_pcu.cpp
@@ -26,6 +26,7 @@
 #include <tbf.h>
 #include <gprs_coding_scheme.h>
 #include <pdch.h>
+#include "coding_scheme.h"

 #define BSSGP_TIMER_T1 30      /* Guards the (un)blocking procedures */
 #define BSSGP_TIMER_T2 30      /* Guards the reset procedure */
@@ -607,7 +608,7 @@

 static uint32_t gprs_bssgp_max_leak_rate(GprsCodingScheme cs, int num_pdch)
 {
-       int bytes_per_rlc_block = cs.maxDataBlockBytes() * cs.numDataBlocks();
+       int bytes_per_rlc_block = cs.maxDataBlockBytes() * 
numDataBlocks(cs.headerTypeData());

        /* n byte payload per 20ms */
        return bytes_per_rlc_block * (1000 / 20) * num_pdch;
diff --git a/src/gprs_coding_scheme.cpp b/src/gprs_coding_scheme.cpp
index 1231f0e..d7934ec 100644
--- a/src/gprs_coding_scheme.cpp
+++ b/src/gprs_coding_scheme.cpp
@@ -75,55 +75,39 @@
        uint8_t data_bytes;
        uint8_t optional_padding_bits;
        const char *name;
-       GprsCodingScheme::HeaderType data_hdr;
+       enum HeaderType data_hdr;
        GprsCodingScheme::Family family;
 } mcs_info[NUM_SCHEMES] = {
        {{0, 0},   {0, 0},    0,  0, "UNKNOWN",
-               GprsCodingScheme::HEADER_INVALID, 
GprsCodingScheme::FAMILY_INVALID},
+               HEADER_INVALID, GprsCodingScheme::FAMILY_INVALID},
        {{23, 0},  {23, 0},  20,  0, "CS-1",
-               GprsCodingScheme::HEADER_GPRS_DATA, 
GprsCodingScheme::FAMILY_INVALID},
+               HEADER_GPRS_DATA, GprsCodingScheme::FAMILY_INVALID},
        {{33, 7},  {33, 7},  30,  0, "CS-2",
-               GprsCodingScheme::HEADER_GPRS_DATA, 
GprsCodingScheme::FAMILY_INVALID},
+               HEADER_GPRS_DATA, GprsCodingScheme::FAMILY_INVALID},
        {{39, 3},  {39, 3},  36,  0, "CS-3",
-               GprsCodingScheme::HEADER_GPRS_DATA, 
GprsCodingScheme::FAMILY_INVALID},
+               HEADER_GPRS_DATA, GprsCodingScheme::FAMILY_INVALID},
        {{53, 7},  {53, 7},  50,  0, "CS-4",
-               GprsCodingScheme::HEADER_GPRS_DATA, 
GprsCodingScheme::FAMILY_INVALID},
+               HEADER_GPRS_DATA, GprsCodingScheme::FAMILY_INVALID},

        {{26, 1},  {26, 1},  22,  0, "MCS-1",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3, 
GprsCodingScheme::FAMILY_C},
+               HEADER_EGPRS_DATA_TYPE_3, GprsCodingScheme::FAMILY_C},
        {{32, 1},  {32, 1},  28,  0, "MCS-2",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3, 
GprsCodingScheme::FAMILY_B},
+               HEADER_EGPRS_DATA_TYPE_3, GprsCodingScheme::FAMILY_B},
        {{41, 1},  {41, 1},  37, 48, "MCS-3",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3, 
GprsCodingScheme::FAMILY_A},
+               HEADER_EGPRS_DATA_TYPE_3, GprsCodingScheme::FAMILY_A},
        {{48, 1},  {48, 1},  44,  0, "MCS-4",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3, 
GprsCodingScheme::FAMILY_C},
+               HEADER_EGPRS_DATA_TYPE_3, GprsCodingScheme::FAMILY_C},

        {{60, 7},  {59, 6},  56,  0, "MCS-5",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2, 
GprsCodingScheme::FAMILY_B},
+               HEADER_EGPRS_DATA_TYPE_2, GprsCodingScheme::FAMILY_B},
        {{78, 7},  {77, 6},  74, 48, "MCS-6",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2, 
GprsCodingScheme::FAMILY_A},
+               HEADER_EGPRS_DATA_TYPE_2, GprsCodingScheme::FAMILY_A},
        {{118, 2}, {117, 4}, 56,  0, "MCS-7",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1, 
GprsCodingScheme::FAMILY_B},
+               HEADER_EGPRS_DATA_TYPE_1, GprsCodingScheme::FAMILY_B},
        {{142, 2}, {141, 4}, 68,  0, "MCS-8",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1, 
GprsCodingScheme::FAMILY_A},
+               HEADER_EGPRS_DATA_TYPE_1, GprsCodingScheme::FAMILY_A},
        {{154, 2}, {153, 4}, 74,  0, "MCS-9",
-               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1, 
GprsCodingScheme::FAMILY_A},
-};
-
-static struct {
-       struct {
-               uint8_t data_header_bits;
-       } uplink, downlink;
-       uint8_t data_block_header_bits;
-       uint8_t num_blocks;
-       const char *name;
-} hdr_type_info[GprsCodingScheme::NUM_HEADER_TYPES] = {
-       {{0},       {0},       0, 0, "INVALID"},
-       {{1*8 + 0}, {1*8 + 0}, 0, 0, "CONTROL"},
-       {{3*8 + 0}, {3*8 + 0}, 0, 1, "GPRS_DATA"},
-       {{5*8 + 6}, {5*8 + 0}, 2, 2, "EGPRS_DATA_TYPE1"},
-       {{4*8 + 5}, {3*8 + 4}, 2, 1, "EGPRS_DATA_TYPE2"},
-       {{3*8 + 7}, {3*8 + 7}, 2, 1, "EGPRS_DATA_TYPE3"},
+               HEADER_EGPRS_DATA_TYPE_1, GprsCodingScheme::FAMILY_A},
 };

 GprsCodingScheme GprsCodingScheme::getBySizeUL(unsigned size)
@@ -203,32 +187,12 @@
        return mcs_info[m_scheme].optional_padding_bits;
 }

-uint8_t GprsCodingScheme::numDataBlocks() const
-{
-       return hdr_type_info[headerTypeData()].num_blocks;
-}
-
-uint8_t GprsCodingScheme::numDataHeaderBitsUL() const
-{
-       return hdr_type_info[headerTypeData()].uplink.data_header_bits;
-}
-
-uint8_t GprsCodingScheme::numDataHeaderBitsDL() const
-{
-       return hdr_type_info[headerTypeData()].downlink.data_header_bits;
-}
-
-uint8_t GprsCodingScheme::numDataBlockHeaderBits() const
-{
-       return hdr_type_info[headerTypeData()].data_block_header_bits;
-}
-
 const char *GprsCodingScheme::name() const
 {
        return mcs_info[m_scheme].name;
 }

-GprsCodingScheme::HeaderType GprsCodingScheme::headerTypeData() const
+enum HeaderType GprsCodingScheme::headerTypeData() const
 {
        return mcs_info[m_scheme].data_hdr;
 }
@@ -315,11 +279,6 @@
        return family() == o.family();
 }

-bool GprsCodingScheme::isCombinable(GprsCodingScheme o) const
-{
-       return numDataBlocks() == o.numDataBlocks();
-}
-
 void GprsCodingScheme::decToSingleBlock(bool *needStuffing)
 {
        switch (m_scheme) {
diff --git a/src/gprs_coding_scheme.h b/src/gprs_coding_scheme.h
index 89054f5..8715f16 100644
--- a/src/gprs_coding_scheme.h
+++ b/src/gprs_coding_scheme.h
@@ -40,16 +40,6 @@
                EGPRS,
        };

-       enum HeaderType {
-               HEADER_INVALID,
-               HEADER_GPRS_CONTROL,
-               HEADER_GPRS_DATA,
-               HEADER_EGPRS_DATA_TYPE_1,
-               HEADER_EGPRS_DATA_TYPE_2,
-               HEADER_EGPRS_DATA_TYPE_3,
-               NUM_HEADER_TYPES
-       };
-
        enum Family {
                FAMILY_INVALID,
                FAMILY_A,
@@ -74,7 +64,6 @@
        bool isCompatible(Mode mode) const;
        bool isCompatible(GprsCodingScheme o) const;
        bool isFamilyCompatible(GprsCodingScheme o) const;
-       bool isCombinable(GprsCodingScheme o) const;

        void inc(Mode mode);
        void dec(Mode mode);
@@ -91,13 +80,9 @@
        uint8_t spareBitsUL() const;
        uint8_t spareBitsDL() const;
        uint8_t maxDataBlockBytes() const;
-       uint8_t numDataBlocks() const;
-       uint8_t numDataHeaderBitsUL() const;
-       uint8_t numDataHeaderBitsDL() const;
-       uint8_t numDataBlockHeaderBits() const;
        uint8_t optionalPaddingBits() const;
        const char *name() const;
-       HeaderType headerTypeData() const;
+       enum HeaderType headerTypeData() const;
        HeaderType headerTypeControl() const;
        Family family() const;

@@ -142,7 +127,7 @@
        return (isGprs() && o.isGprs()) || (isEgprs() && o.isEgprs());
 }

-inline GprsCodingScheme::HeaderType GprsCodingScheme::headerTypeControl() const
+inline enum HeaderType GprsCodingScheme::headerTypeControl() const
 {
        return HEADER_GPRS_CONTROL;
 }
diff --git a/src/rlc.cpp b/src/rlc.cpp
index 323fde4..b08ad48 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -336,7 +336,7 @@
        rlc->es_p = 0;
        rlc->rrbp = 0;
        rlc->pr = 0;
-       rlc->num_data_blocks = cs.numDataBlocks();
+       rlc->num_data_blocks = numDataBlocks(cs.headerTypeData());
        rlc->with_padding = with_padding;

        OSMO_ASSERT(rlc->num_data_blocks <= ARRAY_SIZE(rlc->block_info));
@@ -347,7 +347,7 @@

                rlc->data_offs_bits[i] =
                        header_bits + padding_bits +
-                       (i+1) * cs.numDataBlockHeaderBits() +
+                       (i+1) * numDataBlockHeaderBits(cs.headerTypeData()) +
                        i * 8 * rlc->block_info[0].data_len;
        }
 }
@@ -356,7 +356,7 @@
        GprsCodingScheme cs, bool with_padding, const unsigned int spb)
 {
        return gprs_rlc_data_header_init(rlc, cs, with_padding,
-               cs.numDataHeaderBitsDL(), spb);
+                                        
numDataHeaderBitsDL(cs.headerTypeData()), spb);
 }

 void gprs_rlc_data_info_init_ul(struct gprs_rlc_data_info *rlc,
@@ -367,7 +367,7 @@
         * for both DL and UL
         */
        return gprs_rlc_data_header_init(rlc, cs, with_padding,
-               cs.numDataHeaderBitsUL(), 0);
+                                        
numDataHeaderBitsUL(cs.headerTypeData()), 0);
 }

 void gprs_rlc_data_block_info_init(struct gprs_rlc_data_block_info *rdbi,
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 7b0052f..bebeb2a 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -457,7 +457,7 @@
                bts->rlc_resent();
        }

-       *may_combine = m_rlc.block(bsn)->cs_current_trans.numDataBlocks() > 1;
+       *may_combine = 
numDataBlocks(m_rlc.block(bsn)->cs_current_trans.headerTypeData()) > 1;

        return bsn;
 }
@@ -1259,7 +1259,7 @@
         * MCS4: second segment starts at 44/2 = 22
         */
        if (cs_current_trans.headerTypeData() ==
-                       GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3) {
+                       HEADER_EGPRS_DATA_TYPE_3) {
                if (*block_status_dl == EGPRS_RESEG_FIRST_SEG_SENT) {
                        switch (CodingScheme(cs_init)) {
                        case MCS6 :
@@ -1287,9 +1287,9 @@
                        }
                        return EGPRS_RESEG_SECOND_SEG_SENT;
                } else if ((cs_init.headerTypeData() ==
-                               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1) ||
+                               HEADER_EGPRS_DATA_TYPE_1) ||
                        (cs_init.headerTypeData() ==
-                               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2)) {
+                               HEADER_EGPRS_DATA_TYPE_2)) {
                        return EGPRS_RESEG_FIRST_SEG_SENT;
                } else if ((CodingScheme(cs_init) ==
                                        MCS4) &&
@@ -1327,7 +1327,7 @@

        /* Table 10.4.8b.1 of 44.060 */
        if (cs_current_trans.headerTypeData() ==
-                       GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_3) {
+                       HEADER_EGPRS_DATA_TYPE_3) {
        /*
         * if we are sending the second segment the spb should be 3
         * other wise it should be 2
@@ -1338,9 +1338,9 @@
                        bts->spb_downlink_second_segment();
                        return EGPRS_RLCMAC_DL_SEC_SEG;
                } else if ((cs_init.headerTypeData() ==
-                               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_1) ||
+                               HEADER_EGPRS_DATA_TYPE_1) ||
                        (cs_init.headerTypeData() ==
-                               GprsCodingScheme::HEADER_EGPRS_DATA_TYPE_2)) {
+                               HEADER_EGPRS_DATA_TYPE_2)) {
                        bts->spb_downlink_first_segment();
                        return EGPRS_RLCMAC_DL_FIRST_SEG;
                } else if ((CodingScheme(cs_init) ==
diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp
index 9f19872..c381d99 100644
--- a/tests/edge/EdgeTest.cpp
+++ b/tests/edge/EdgeTest.cpp
@@ -71,8 +71,8 @@
        OSMO_ASSERT(expected_size == cs.sizeDL());

        /* Check data block sizes */
-       OSMO_ASSERT(cs.maxDataBlockBytes() * cs.numDataBlocks() < 
cs.maxBytesDL());
-       OSMO_ASSERT(cs.maxDataBlockBytes() * cs.numDataBlocks() < 
cs.maxBytesUL());
+       OSMO_ASSERT(cs.maxDataBlockBytes() * numDataBlocks(cs.headerTypeData()) 
< cs.maxBytesDL());
+       OSMO_ASSERT(cs.maxDataBlockBytes() * numDataBlocks(cs.headerTypeData()) 
< cs.maxBytesUL());

        /* Check inc/dec */
        new_cs = cs;
@@ -160,9 +160,9 @@

                /* Check header types */
                OSMO_ASSERT(current_cs.headerTypeData() ==
-                       GprsCodingScheme::HEADER_GPRS_DATA);
+                       HEADER_GPRS_DATA);
                OSMO_ASSERT(current_cs.headerTypeControl() ==
-                       GprsCodingScheme::HEADER_GPRS_CONTROL);
+                       HEADER_GPRS_CONTROL);

                check_coding_scheme(current_cs, GprsCodingScheme::GPRS);
        }
@@ -1094,7 +1094,7 @@
                        test_block[cs.maxDataBlockBytes()-1] = pattern ^ 0xff;

                        for (block_idx = 0;
-                               block_idx < cs.numDataBlocks();
+                               block_idx < numDataBlocks(cs.headerTypeData());
                                block_idx++)
                        {
                                struct gprs_rlc_data_info rlc;

--
To view, visit https://gerrit.osmocom.org/13067
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id0873f85e1f16a72e17e7fbc4ad76b194917067f
Gerrit-Change-Number: 13067
Gerrit-PatchSet: 1
Gerrit-Owner: Max <[email protected]>

Reply via email to