forked from cellular-infrastructure/osmo-pcu
bssgp: Adapt flowcontrol MS default to current alloc algorithm
Currently the values Bmax/R default MS are computed under the assumption than min(4, N_PDCH) DL slots are allocated for an MS, even if multislot assignment is not enabled. This commit changes the computation to assume 1 DL slot if algorithm A is selected or the dynamic algorithm is used and has disabled multislot assigment due to high load. Sponsored-by: On-Waves ehf
This commit is contained in:
parent
77da35515c
commit
7f79f0d332
|
@ -620,13 +620,16 @@ int gprs_bssgp_tx_fc_bvc(void)
|
|||
|
||||
if (ms_leak_rate == 0) {
|
||||
int ms_num_pdch;
|
||||
int max_pdch = gprs_alloc_max_dl_slots_per_ms(bts);
|
||||
|
||||
if (num_pdch < 0)
|
||||
num_pdch = count_pdch(bts);
|
||||
|
||||
ms_num_pdch = num_pdch;
|
||||
if (ms_num_pdch > FC_MS_MAX_RX_SLOTS)
|
||||
ms_num_pdch = FC_MS_MAX_RX_SLOTS;
|
||||
if (max_pdch > FC_MS_MAX_RX_SLOTS)
|
||||
max_pdch = FC_MS_MAX_RX_SLOTS;
|
||||
if (ms_num_pdch > max_pdch)
|
||||
ms_num_pdch = max_pdch;
|
||||
|
||||
ms_leak_rate = gprs_bssgp_max_leak_rate(bts->initial_cs_dl,
|
||||
ms_num_pdch);
|
||||
|
|
|
@ -93,6 +93,9 @@ int gprs_rlcmac_rcv_rts_block(struct gprs_rlcmac_bts *bts,
|
|||
uint8_t trx, uint8_t ts, uint16_t arfcn,
|
||||
uint32_t fn, uint8_t block_nr);
|
||||
|
||||
int gprs_alloc_max_dl_slots_per_ms(struct gprs_rlcmac_bts *bts,
|
||||
uint8_t ms_class = 0);
|
||||
|
||||
extern "C" {
|
||||
#endif
|
||||
int alloc_algorithm_a(struct gprs_rlcmac_bts *bts,
|
||||
|
|
|
@ -1077,3 +1077,24 @@ int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts,
|
|||
rc = alloc_algorithm_a(bts, ms_, tbf_, cust, single, use_trx);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int gprs_alloc_max_dl_slots_per_ms(struct gprs_rlcmac_bts *bts, uint8_t ms_class)
|
||||
{
|
||||
int rx;
|
||||
|
||||
if (ms_class >= ARRAY_SIZE(gprs_ms_multislot_class))
|
||||
ms_class = 0;
|
||||
|
||||
rx = gprs_ms_multislot_class[ms_class].rx;
|
||||
|
||||
if (rx == MS_NA)
|
||||
rx = 4;
|
||||
|
||||
if (bts->alloc_algorithm == alloc_algorithm_a)
|
||||
return 1;
|
||||
|
||||
if (bts->multislot_disabled)
|
||||
return 1;
|
||||
|
||||
return rx;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue