From 7d89c5524689595fef131cabbbf48f1fb3afb684 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 28 Jun 2012 08:43:14 +0200 Subject: gsm_data_shared: add structure for decoded parameters of RLC config this is primarily needed on the BTS side, but we should also use it on the BSC side and make the parameters VTY-configurable. --- openbsc/include/openbsc/gsm_data_shared.h | 45 +++++++++++++++++++++++++++++++ openbsc/src/libcommon/gsm_data_shared.c | 24 +++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h index 4b23613c9..b3ea20b9b 100644 --- a/openbsc/include/openbsc/gsm_data_shared.h +++ b/openbsc/include/openbsc/gsm_data_shared.h @@ -433,6 +433,50 @@ struct gsm_bts_gprs_nsvc { struct gsm_abis_mo mo; }; +enum gprs_rlc_par { + RLC_T3142, + RLC_T3169, + RLC_T3191, + RLC_T3193, + RLC_T3195, + RLC_N3101, + RLC_N3103, + RLC_N3105, + CV_COUNTDOWN, + T_DL_TBF_EXT, /* ms */ + T_UL_TBF_EXT, /* ms */ + _NUM_RLC_PAR +}; + +enum gprs_cs { + GPRS_CS1, + GPRS_CS2, + GPRS_CS3, + GPRS_CS4, + GPRS_MCS1, + GPRS_MCS2, + GPRS_MCS3, + GPRS_MCS4, + GPRS_MCS5, + GPRS_MCS6, + GPRS_MCS7, + GPRS_MCS8, + GPRS_MCS9, + _NUM_GRPS_CS +}; + +struct gprs_rlc_cfg { + uint16_t parameter[_NUM_RLC_PAR]; + struct { + uint16_t repeat_time; /* ms */ + uint8_t repeat_count; + } paging; + uint32_t cs_mask; /* bitmask of gprs_cs */ + uint8_t initial_cs; + uint8_t initial_mcs; +}; + + enum neigh_list_manual_mode { NL_MODE_AUTOMATIC = 0, NL_MODE_MANUAL = 1, @@ -553,6 +597,7 @@ struct gsm_bts { struct gsm_abis_mo mo; uint16_t bvci; uint8_t timer[11]; + struct gprs_rlc_cfg rlc_cfg; } cell; struct gsm_bts_gprs_nsvc nsvc[2]; uint8_t rac; diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c index 06a095e27..9e7b59c9f 100644 --- a/openbsc/src/libcommon/gsm_data_shared.c +++ b/openbsc/src/libcommon/gsm_data_shared.c @@ -173,6 +173,28 @@ struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts) static const uint8_t bts_nse_timer_default[] = { 3, 3, 3, 3, 30, 3, 10 }; static const uint8_t bts_cell_timer_default[] = { 3, 3, 3, 3, 3, 10, 3, 10, 3, 10, 3 }; +static const struct gprs_rlc_cfg rlc_cfg_default = { + .parameter = { + [RLC_T3142] = 20, + [RLC_T3169] = 5, + [RLC_T3191] = 5, + [RLC_T3193] = 200, /* 10ms */ + [RLC_T3195] = 5, + [RLC_N3101] = 10, + [RLC_N3103] = 4, + [RLC_N3105] = 8, + [CV_COUNTDOWN] = 15, + [T_DL_TBF_EXT] = 250 * 10, /* ms */ + [T_UL_TBF_EXT] = 250 * 10, /* ms */ + }, + .paging = { + .repeat_time = 5 * 50, /* ms */ + .repeat_count = 3, + }, + .cs_mask = 0x1fff, + .initial_cs = 2, + .initial_mcs = 6, +}; struct gsm_bts *gsm_bts_alloc(void *ctx) { @@ -205,6 +227,8 @@ struct gsm_bts *gsm_bts_alloc(void *ctx) sizeof(bts->gprs.cell.timer)); gsm_mo_init(&bts->gprs.cell.mo, bts, NM_OC_GPRS_CELL, bts->nr, 0xff, 0xff); + memcpy(&bts->gprs.cell.rlc_cfg, &rlc_cfg_default, + sizeof(bts->gprs.cell.rlc_cfg)); /* create our primary TRX */ bts->c0 = gsm_bts_trx_alloc(bts); -- cgit v1.2.3