diff options
author | Aravind Sirsikar <arvind.sirsikar@radisys.com> | 2016-03-23 18:29:45 +0530 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-03-30 22:02:47 +0200 |
commit | 7a05b039c835868eff34308d861edfeb28d1763b (patch) | |
tree | b0934c147826d4a9cbc5afe4034a58dd7190b7a2 | |
parent | e44383baa4a883beb49a4b0ec370ba3256389b94 (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.cpp | 3 | ||||
-rw-r--r-- | src/rlc.h | 24 |
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; } @@ -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, |