aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs_rlcmac.h
AgeCommit message (Collapse)AuthorFilesLines
2016-01-22Get rid of duplicated timer codeMax1-1/+0
Sponsored-by: On-Waves ehf
2015-07-17bssgp: Adapt flowcontrol MS default to current alloc algorithmJacob Erlbeck1-0/+3
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
2015-07-16alloc: Add 'dynamic' allocation algorithmJacob Erlbeck1-0/+5
The idea behind this meta algorithm is to automatically select one of the other algorithms based on the system state. Basically algorithm B will be selected if the PDCH usage is low to improve throughput and latency. Algorithm A will be selected to support more concurrent MS. This commit adds a first simple state-less version of this algorithm that always tries B first and only if that fails A is tried afterwards. The following VTY command is added to the 'pcu' node: - alloc-algorithm dynamic Ticket: #1934 Sponsored-by: On-Waves ehf
2015-07-16tbf: Move TFI selection into alloc_algorithmJacob Erlbeck1-2/+4
Currently the TFI and the TRX have to be determined before the actual TBF allocation function is called, passing TFI and TRX number as parameters. This does fit to TFI reuse for different slots, since this were tightly coupled with the slot selection. This commit just moves the TFI selection into the alloc_algorithm functions. The tfi parameter is removed from the the TFI alloc functions. The trx parameter is changed into use_trx to optionally limit the trx selection (same semantics like in tfi_find_free). Sponsored-by: On-Waves ehf
2015-06-29tbf: Pass the MS object around instead of old_tbfJacob Erlbeck1-2/+3
Currently the old TBF (either uplink or downlink) is passed around at TBF allocation mainly to get information about the MS. To implement more complex allocation algorithms, the MS object itself will be needed anyway. This commit replaces the old_tbf arguments by MS object arguments. Sponsored-by: On-Waves ehf
2014-08-08tbf, gprs_rlcmac_meas: Move the DL bandwidth variables to the DL TBFDaniel Willmann1-3/+3
The bandwidth calculation as well as loss report is only done for DL TBF so move everything related to that in there. Ticket: SYS#389 Sponsored by: On-Waves ehf
2013-11-26debug_diagram: Remove the special debug_diagram compilation modeHolger Hans Peter Freyther1-9/+0
This approach is somehow flawed. We need/want to debug problems on systems with real traffic and re-compiling it with debug_diagram is not an option. All internal logging needs to be expressive enough so we can understand what is going on (e.g. create a script to post-process the output).
2013-10-30tbf: Move gprs_rlcmac_send_data_block_acknowledged into tbfHolger Hans Peter Freyther1-3/+0
We can now remove the gprs_rlcmac_data as the code has been moved into the tbf, pdch and bts.
2013-10-30tbf: Move gprs_rlcmac_send_packet_uplink_assignment into the tbfHolger Hans Peter Freyther1-4/+0
2013-10-30tbf: Move gprs_rlcmac_send_packet_uplink_assignment to the tbfHolger Hans Peter Freyther1-3/+0
Again the function was called send but didn't do any sending
2013-10-30tbf: Move gprs_rlcmac_send_uplink_ack into the tbfHolger Hans Peter Freyther1-4/+0
The method was called send but didn't send anything. Move it to the tbf
2013-10-30bts: Move gprs_rlcmac_rcv_rach into the BTS classHolger Hans Peter Freyther1-2/+0
2013-10-30tbf: Move gprs_rlcmac_send_packet_downlink_assignment into the tbfHolger Hans Peter Freyther1-3/+0
This method was called _send_packet_ but actually didn't do any sending at all. It just formated the right assignment. I replaced tbf-> with nothing.
2013-10-30bts: Move gprs_rlcmac_trigger_downlink_assignment into BTSHolger Hans Peter Freyther1-4/+0
2013-10-30tbf: Move gprs_rlcmac_poll_timeout into the tbfHolger Hans Peter Freyther1-2/+0
Move the gprs_rlcmac_poll_timeout method into the tbf class and gprs_rlcmac_downlink_assignment into the BTS.
2013-10-30bts: Move rcv_imm_ass_cnf into the bts codeHolger Hans Peter Freyther1-2/+0
2013-10-30pdch: Move the giant switch/case of gprs_rlcmac_rcv_control_blockHolger Hans Peter Freyther1-4/+0
Move the dispatch into the PDCH. This needs to be split up further into understandable blocks.
2013-10-30pdch/tbf: Move gprs_rlcmac_rcv_data_block_acknowledged into the pdchHolger Hans Peter Freyther1-4/+0
Move the method into the PDCH. Extract the finding of TLLI into a new class called Decoding. Move the assemble and forward LLC frames into the TBF as it is poking in the internals of the TBF.
2013-10-30pdch: Move the dispatch of gprs_rlcmac_rcv_block into the pdchHolger Hans Peter Freyther1-4/+0
2013-10-30misc: Remove the bts parameter from calls that take a tbfHolger Hans Peter Freyther1-6/+3
Mark some of the tbf manipulation that is burried in the data sending routine.. that it should be moved around.
2013-10-30data: Move gprs_rlcmac_cs to the place it is used and make staticHolger Hans Peter Freyther1-2/+0
2013-10-30bts/tbf: Move the lists into the BTS and do the look-up from the BTSHolger Hans Peter Freyther1-3/+4
The list belongs to the BTS. This makes cleaning this up more easy and establishes a hierachy of resources that start from the BTS. The debug_diagram code is now broken.
2013-10-30sba: Create a SBAController that will manage the sbas for a BTSHolger Hans Peter Freyther1-19/+0
The PollController is a friend of the SBAController and is allowed to access the internal list. The list is hidden from everyone else. This is done because the calculation of timeout should belong into the PollController and not into the SBAController.
2013-10-30sba: Move the sba code to a dedicated fileHolger Hans Peter Freyther1-0/+2
Move the code around and then turn it into an object...
2013-10-30ta: Create TimingAdvance class and make it belong to the BTSHolger Hans Peter Freyther1-6/+0
This allows us to easily flush the state in case a PCU/BTS connection is lost.
2013-10-30encoding: Move the functions into the encoding classHolger Hans Peter Freyther1-31/+0
Add some TODO to this class. E.g. they could all work on the bitvec and the parameter handling could better.
2013-10-30encoding: Move encoding routines into a separate fileHolger Hans Peter Freyther1-0/+2
2013-10-30bts/pdch: Move the adding of paging to the BTS/PDCH objectsHolger Hans Peter Freyther1-2/+0
Only the gprs_rlcmac_pdch will manipulate the paging list now. There can be various more refactorings of the code but they can be done later. E.g. on memory allocation failure we can continue instead of leaving the code, we should also set any_tbf only after things have been paged.
2013-10-30pdch: Move paging dequeue into the PDCH objectHolger Hans Peter Freyther1-6/+0
Rely on packet_paging_request returning NULL in case the queue is empty. We should move the write_packet_paging_request into a separate file/object as well.
2013-10-30bts: Introduce a singleton for the BTS and use it in the codeHolger Hans Peter Freyther1-2/+1
Compared to the previous code there will be a branch to get the global pointer so the code will be slightly slower than the previous version but it allows us to start creating objects but still use the code from C. It is best approach I have found so far. One downside of C++ is that by default talloc will not be used (unless we override the new operator to use talloc. Right now we need to memset the C data structure by hand. The benefit of enforcing a better structure should is more important though.
2013-10-30bts: Move struct gprs_rlcmac_bts and other structs into a bts.hHolger Hans Peter Freyther1-49/+0
Begin to make the BTS a real C++ object with real responsibilities. The biggest issue will be the pcu_vty.c that might not like C++ at all.
2013-10-30bts: Remove global state from gprs_rlcmac_rcv_rts_blockHolger Hans Peter Freyther1-1/+2
2013-10-30bts: Remove global state from gprs_rlcmac_add_pagingHolger Hans Peter Freyther1-1/+1
2013-10-30bts: Remove global state from write_immediate_assignmentHolger Hans Peter Freyther1-1/+3
2013-10-30bts: Remove global state from write_packet_uplink_assignmentHolger Hans Peter Freyther1-1/+3
2013-10-30bts: Remove global state from gprs_rlcmac_send_packet_uplink_assignmentHolger Hans Peter Freyther1-0/+1
This was the last method of gprs_rlcmac_data.cpp to access the gprs_rlcmac_bts variable.
2013-10-30bts: Remove global state frm gprs_rlcmac_rcv_control_blockHolger Hans Peter Freyther1-1/+2
2013-10-30bts: Remove global state from gprs_rlcmac_send_data_block_acknowledgedHolger Hans Peter Freyther1-0/+1
2013-10-30bts: Remove global state from gprs_rlcmac_send_packet_downlink_assignmentHolger Hans Peter Freyther1-0/+1
2013-10-30bts: Remove global state from gprs_rlcmac_rcv_rachHolger Hans Peter Freyther1-1/+1
2013-10-30bts: Remove global state from gprs_rlcmac_rcv_data_block_acknowledgedHolger Hans Peter Freyther1-2/+4
2013-10-30bts: Remove the global state from write_packet_uplink_ackHolger Hans Peter Freyther1-2/+3
Similiar to the previous patches
2013-10-30bts: Remove the global state gprs_rlcmac_trigger_downlink_assignmentHolger Hans Peter Freyther1-3/+5
Remove the global state from gprs_rlcmac_trigger_downlink_assignment and walk up to the pcu_l1_if.cpp where I find the timeout handling that should be part of the SBA and TBF functionality. In terms of hierachies things start to be more clear. There should be the BTS object. That holds the SBA and TBF Controllers that can allocate TBFs and SBAs and will handle the timeout polling for a BTS.
2013-10-30bts: Remove global state and the usage of the gprs_rlcmac_btsHolger Hans Peter Freyther1-1/+1
Global state makes mocking/writing tests more difficult. Continue by removing direct usage of the bts and adding it as pointer to the function calls (showing the true dependencies of the functions)
2013-10-28tbf: Move the tbf_timer_cb into the tbf classHolger Hans Peter Freyther1-2/+0
Introduce the first instance method for printing out diagonistic about itself and create a jump function for it.
2013-10-28tbf: Move header definition from gprs_rlcmac to the tbfHolger Hans Peter Freyther1-94/+0
2013-10-28tbf: Move the struct to the tbf.h header fileHolger Hans Peter Freyther1-97/+0
This is the begin of a long march of turning tbf into a C++ class and properly hiding the secrets inside this implementation instead of having it spread across various different files.
2013-10-02tbf: constify the IMSI argument for the downlink assignmentHolger Hans Peter Freyther1-1/+1
2013-10-02tfi: The tfi_alloc doesn't allocate anything, rename the functionHolger Hans Peter Freyther1-1/+2
Call things by what they do and this function doesn't allocate anything but it is searching for the first unallocated tbf index.
2013-09-04rlcmac: Reduce the depedency on the global gprs_rlcmac_bts variableHolger Hans Peter Freyther1-7/+12
For mocking/unit-testing/emulation (and a dual trx-systems) having global state is quite bad. Cut back on the usage of the global struct gprs_rlcmac_bts. It also makes the complexity of certain routines more clear.