diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tbf_dl.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp index 1827469b..a55f179e 100644 --- a/src/tbf_dl.cpp +++ b/src/tbf_dl.cpp @@ -181,7 +181,7 @@ static int tbf_new_dl_assignment(struct gprs_rlcmac_bts *bts, */ int gprs_rlcmac_dl_tbf::handle(struct gprs_rlcmac_bts *bts, const uint32_t tlli, const uint32_t tlli_old, const char *imsi, - const uint8_t ms_class, uint8_t egprs_ms_class, + uint8_t ms_class, uint8_t egprs_ms_class, const uint16_t delay_csec, const uint8_t *data, const uint16_t len) { @@ -191,12 +191,15 @@ int gprs_rlcmac_dl_tbf::handle(struct gprs_rlcmac_bts *bts, /* check for existing TBF */ ms = bts->bts->ms_store().get_ms(tlli, tlli_old, imsi); - if (ms) + if (ms) { dl_tbf = ms->dl_tbf(); - /* Work-around to get EGPRS MS class */ - if (ms && !egprs_ms_class) - egprs_ms_class = ms->egprs_ms_class(); + /* If we known the GPRS/EGPRS MS class, use it */ + if (ms->ms_class() || ms->egprs_ms_class()) { + ms_class = ms->ms_class(); + egprs_ms_class = ms->egprs_ms_class(); + } + } if (ms && strlen(ms->imsi()) == 0) { ms_old = bts->bts->ms_store().get_ms(0, 0, imsi); |