From 03e3fae639a46fe5a2cffbda640c3a4a224beb51 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 23 May 2019 23:50:41 +0200 Subject: l1sap: Correctly count RACH slots in calc_exprd_rach_frames() We used a bogus multiplication factor of four when computing the number of expired RACH slots. While there are four RACH slots per block (i.e. 4 times more RACH received than normal MAC blocks), that multiplier doesn't apply here: We are calling this function per *frame* and not per *block*. So the maximum number of RACH slots per *frame* is (in most suual cases with a single CCCH) at maximum 1. Only some obscure configurations with multiple CCCHs in a single cell would render higher values. In any case, *blocks* never even enter this equation. This wrong multiplier resulted in rather weird RACH load reports to the BSC. Related: OS#3750 Change-Id: I6b14fd6e7819f9164fb4a09b432a9f419e3b6e5c --- src/common/l1sap.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/common/l1sap.c b/src/common/l1sap.c index f31d8229..d9ffdb8f 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -484,10 +484,7 @@ static unsigned int calc_exprd_rach_frames(struct gsm_bts *bts, uint32_t fn) rach_frames_expired = 1; } - /* Each Frame has room for 4 RACH slots, since RACH - * slots are short enough to fit into a single radio - * burst, so we need to multiply the final result by 4 */ - return rach_frames_expired * 4; + return rach_frames_expired; } /* time information received from bts model */ -- cgit v1.2.3