aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAravind Sirsikar <arvind.sirsikar@radisys.com>2016-03-23 18:29:45 +0530
committerHarald Welte <laforge@gnumonks.org>2016-03-30 22:02:47 +0200
commit7a05b039c835868eff34308d861edfeb28d1763b (patch)
treeb0934c147826d4a9cbc5afe4034a58dd7190b7a2 /src
parente44383baa4a883beb49a4b0ec370ba3256389b94 (diff)
Add data structure for CPS calculation in DL
Define new data structure with respect to TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1 for puncturing scheme values and initialize the variable introduced
Diffstat (limited to 'src')
-rw-r--r--src/rlc.cpp3
-rw-r--r--src/rlc.h24
2 files changed, 27 insertions, 0 deletions
diff --git a/src/rlc.cpp b/src/rlc.cpp
index 79d8f48a..0e16ee88 100644
--- a/src/rlc.cpp
+++ b/src/rlc.cpp
@@ -33,6 +33,9 @@ uint8_t *gprs_rlc_data::prepare(size_t block_data_len)
memset(block, 0x0, sizeof(block));
memset(block, 0x2b, block_data_len);
+ /* Initial value of puncturing scheme */
+ next_ps = EGPRS_PS_1;
+
return block;
}
diff --git a/src/rlc.h b/src/rlc.h
index 3f10f8c2..19dccbee 100644
--- a/src/rlc.h
+++ b/src/rlc.h
@@ -56,6 +56,27 @@ enum gprs_rlc_dl_bsn_state {
GPRS_RLC_DL_BSN_MAX,
};
+/*
+ * Valid puncturing scheme values
+ * TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1
+ */
+enum egprs_puncturing_values {
+ EGPRS_PS_1,
+ EGPRS_PS_2,
+ EGPRS_PS_3,
+ EGPRS_PS_INVALID,
+};
+
+/*
+ * EGPRS_MAX_PS_NUM_2 is valid for MCS 1,2,5,6.
+ * And EGPRS_MAX_PS_NUM_3 is valid for MCS 3,4,7,8,9
+ * TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1
+ */
+enum egprs_puncturing_types {
+ EGPRS_MAX_PS_NUM_2 = 2,
+ EGPRS_MAX_PS_NUM_3,
+ EGPRS_MAX_PS_NUM_INVALID,
+};
static inline uint16_t mod_sns_half()
{
@@ -100,6 +121,9 @@ struct gprs_rlc_data {
struct gprs_rlc_data_block_info block_info;
GprsCodingScheme cs;
+
+ /* puncturing scheme value to be used for next transmission*/
+ enum egprs_puncturing_values next_ps;
};
void gprs_rlc_data_info_init_dl(struct gprs_rlc_data_info *rlc,