tbf: Low prio for BSSPG values for GPRS/EGPRS MS class

Currently the values in the BSSGP RA Cap IE are eventually use
overwrite the 'good' values obtained from the MS earlier.

Use the 'good' values when the are present, which is assumed if
at least one of ms->ms_class() or ms->egprs_ms_class() is set.

Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2016-01-20 13:30:34 +01:00
parent 4a07a3be11
commit f4bb42459c
2 changed files with 18 additions and 15 deletions

View File

@ -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);

View File

@ -1532,8 +1532,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW): data_length=20, data=00 00 00 00 0
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
Got MS: TLLI = 0xf1223344, TA = 7
********** TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0
Slot Allocation (Algorithm A) for class 0
Allocating DL TBF: MS_CLASS=1/0
Slot Allocation (Algorithm A) for class 1
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
@ -1614,8 +1614,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW): data_length=20, data=00 00 00 00 0
- No gaps in received block, last block: BSN=0 CV=15
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
********** TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0
Slot Allocation (Algorithm A) for class 0
Allocating DL TBF: MS_CLASS=1/0
Slot Allocation (Algorithm A) for class 1
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
@ -1814,8 +1814,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW): data_length=20, data=00 00 00 00 0
- No gaps in received block, last block: BSN=0 CV=15
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
********** TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0
Slot Allocation (Algorithm A) for class 0
Allocating DL TBF: MS_CLASS=1/0
Slot Allocation (Algorithm A) for class 1
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
@ -1983,8 +1983,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW): data_length=20, data=00 00 00 00 0
- No gaps in received block, last block: BSN=0 CV=15
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
********** TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0
Slot Allocation (Algorithm A) for class 0
Allocating DL TBF: MS_CLASS=1/0
Slot Allocation (Algorithm A) for class 1
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
@ -2129,8 +2129,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW): data_length=20, data=00 00 00 00 0
- No gaps in received block, last block: BSN=0 CV=15
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)', TA=7
********** TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0
Slot Allocation (Algorithm A) for class 0
Allocating DL TBF: MS_CLASS=1/0
Slot Allocation (Algorithm A) for class 1
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled