aboutsummaryrefslogtreecommitdiffstats
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
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
-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 79d8f48..0e16ee8 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 3f10f8c..19dccbe 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,