diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bts.h | 6 | ||||
-rw-r--r-- | src/gprs_ms.cpp | 8 | ||||
-rw-r--r-- | src/pcu_main.cpp | 8 |
3 files changed, 13 insertions, 9 deletions
@@ -45,7 +45,9 @@ extern "C" { #define LLC_CODEL_DISABLE 0 #define LLC_CODEL_USE_DEFAULT (-1) -#define MAX_GPRS_CS 9 + +#define MAX_EDGE_MCS 9 +#define MAX_GPRS_CS 4 /* see bts->gsmtap_categ_mask */ enum pcu_gsmtap_category { @@ -143,7 +145,7 @@ struct gprs_rlcmac_bts { uint8_t cs_adj_upper_limit; uint8_t cs_adj_lower_limit; struct {int16_t low; int16_t high; } cs_lqual_ranges[MAX_GPRS_CS]; - struct {int16_t low; int16_t high; } mcs_lqual_ranges[MAX_GPRS_CS]; + struct {int16_t low; int16_t high; } mcs_lqual_ranges[MAX_EDGE_MCS]; uint16_t cs_downgrade_threshold; /* downgrade if less packets left (DL) */ uint16_t ws_base; uint16_t ws_pdch; /* increase WS by this value per PDCH */ diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp index 740ef6b1..87a35d18 100644 --- a/src/gprs_ms.cpp +++ b/src/gprs_ms.cpp @@ -620,7 +620,7 @@ void GprsMs::update_cs_ul(const pcu_l1_meas *meas) int low; int high; GprsCodingScheme new_cs_ul = m_current_cs_ul; - unsigned current_cs_num = m_current_cs_ul.to_num(); + uint8_t current_cs_num = m_current_cs_ul.to_num(); bts_data = m_bts->bts_data(); @@ -642,11 +642,13 @@ void GprsMs::update_cs_ul(const pcu_l1_meas *meas) old_link_qual = meas->link_qual; if (m_current_cs_ul.isGprs()) { + if (current_cs_num > MAX_GPRS_CS) + current_cs_num = MAX_GPRS_CS; low = bts_data->cs_lqual_ranges[current_cs_num-1].low; high = bts_data->cs_lqual_ranges[current_cs_num-1].high; } else if (m_current_cs_ul.isEgprs()) { - if (current_cs_num > MAX_GPRS_CS) - current_cs_num = MAX_GPRS_CS; + if (current_cs_num > MAX_EDGE_MCS) + current_cs_num = MAX_EDGE_MCS; low = bts_data->mcs_lqual_ranges[current_cs_num-1].low; high = bts_data->mcs_lqual_ranges[current_cs_num-1].high; } else { diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index fe851600..a0f31d16 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -214,10 +214,10 @@ int main(int argc, char *argv[]) bts->cs_adj_enabled = 1; bts->cs_adj_upper_limit = 33; /* Decrease CS if the error rate is above */ bts->cs_adj_lower_limit = 10; /* Increase CS if the error rate is below */ - bts->max_cs_ul = 4; - bts->max_cs_dl = 4; - bts->max_mcs_ul = MAX_GPRS_CS; - bts->max_mcs_dl = MAX_GPRS_CS; + bts->max_cs_ul = MAX_GPRS_CS; + bts->max_cs_dl = MAX_GPRS_CS; + bts->max_mcs_ul = MAX_EDGE_MCS; + bts->max_mcs_dl = MAX_EDGE_MCS; /* CS-1 to CS-4 */ bts->cs_lqual_ranges[0].low = -256; bts->cs_lqual_ranges[0].high = 6; |