Add data structure to handle Split block in EGPR DL

Modify the header files with necessary data structure to handle
Split block for EGPRS DL TBF.
This commit is contained in:
Aravind Sirsikar 2016-05-30 15:29:11 +05:30
parent b3c85bac48
commit b7cc6a4743
4 changed files with 27 additions and 1 deletions

View File

@ -183,6 +183,9 @@ struct gprs_rlcmac_bts {
uint8_t force_two_phase;
uint8_t alpha, gamma;
uint8_t egprs_enabled;
/* Value 0 to support resegmentation enabled in DL, 1 for no reseg */
uint8_t arq_type;
uint32_t dl_tbf_idle_msec; /* hold time for idle DL TBFs */
uint32_t ms_idle_sec;
uint8_t cs_adj_enabled;

View File

@ -30,7 +30,6 @@
* incremental redundancy
*/
/* TODO: Need to support ARQ type 1 */
enum GprsCodingScheme::Scheme GprsCodingScheme::egprs_mcs_retx_tbl[MAX_NUM_ARQ]
[MAX_NUM_MCS][MAX_NUM_MCS] = {
{

View File

@ -210,6 +210,12 @@ int main(int argc, char *argv[])
bts->dl_tbf_idle_msec = 2000;
bts->llc_idle_ack_csec = 10;
/*
* By default resegmentation is supported in DL
* TODO: VTY should be updated to make it configurable
*/
bts->arq_type = 0;
msgb_set_talloc_ctx(tall_pcu_ctx);
osmo_init_logging(&gprs_log_info);

View File

@ -64,6 +64,14 @@ enum egprs_rlc_ul_reseg_bsn_state {
EGPRS_RESEG_INVALID
};
/* EDGE resegment status information for DL */
enum egprs_rlc_dl_reseg_bsn_state {
EGPRS_RESEG_DL_DEFAULT = 0,
EGPRS_RESEG_FIRST_SEG_SENT = 0x01,
EGPRS_RESEG_SECOND_SEG_SENT = 0x02,
EGPRS_RESEG_DL_STATE_INVALID
};
/*
* Valid puncturing scheme values
* TS 44.060 10.4.8a.3.1, 10.4.8a.2.1, 10.4.8a.1.1
@ -139,11 +147,21 @@ struct gprs_rlc_data {
GprsCodingScheme cs_current_trans;
GprsCodingScheme cs;
/*
* The MCS of initial transmission
* This variable is used for split block
* processing in DL
*/
GprsCodingScheme cs_init;
/* puncturing scheme value to be used for next transmission*/
enum egprs_puncturing_values next_ps;
/* holds the current status of the block w.r.t UL split blocks*/
egprs_rlc_ul_reseg_bsn_state block_status_ul;
/* Holds the current status of the block w.r.t DL split blocks*/
egprs_rlc_dl_reseg_bsn_state block_status_dl;
};
void gprs_rlc_data_info_init_dl(struct gprs_rlc_data_info *rlc,