Bug #1883
closedRACH load computation is wrong
100%
Description
l1sap_info_time_ind()
is suposed to be called [at least] once every TDMA frame.
To be sure, we count the number of frames expired based on info_time_ind->fn - btsb->gsm_time.fn
[btw: there could/should be an assert or a big fat LOGL_ERROR message if we ever have more than one FN difference]
We then take the number of RACH slots per multiframe (27 or 51, depending on combined/non-combined CCCH) and multiply that with frames_expired
. This is clearly wrong.
We should instead check if the currently processed/expired frame number was a rach slot (e.g. by some array index), and if yes increment btsb->load.rach.total by one.
Related issues
Updated by laforge over 7 years ago
It also seems that btsb->load.rach.busy, btsb->load.rach.access and btsb->load.rach.total is always only incremented and never reset. They should probably all be re-set in reset_load_counters() just after we sent a load indication (and thus concluded a load indication period).
Updated by laforge over 7 years ago
- Related to Feature #1884: distribute measurement processing accross timeslots added
Updated by dexter over 7 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 20
- For the non combined case: B0, B1 ... B50 --> Each frame carries a RACH channel --> Increment each time.
- For the combined case: B4, B5, B14, B15 ... B36, B45, B46 => Only the mentioned blocks contain a rach channel --> Use modulo operation to calculate if the given frame number falls into one of the mentioned blocks, if yes increment.
Updated by dexter over 7 years ago
- Status changed from In Progress to Resolved
- % Done changed from 20 to 100
The counting of the already expired rach frames is now fixed:
Non combined CCCH:- Lookup from SI3 how many physical CCCH channels are used.
- Multiply the expired frames with that number (we may do this, all of the 51 frames are containing the RACH channel)
- Multiply the result by 4 (One block is consists of 4 bursts, one rach request only occupies 1 burst ==> 4)
- Add the final result to the expired rach slot counter
- Calculate the blocknumber from the framenumber (Modulo 51)
- Check if that block number falls into a rach block, if yes, multiply expired frames by 4.
- Add the final result to the expired rach slot counter
See also: https://gerrit.osmocom.org/#/c/1573/