aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2014-05-30tbf/bts: Rename tbf->snd_dl_ack to tbf->rcvd_dl_ackDaniel Willmann3-3/+3
This function is called to act upon a received DL ACK packet so this name makes more sense.
2014-05-30Fixed calculation of colliding UL/DL slots in TS allocation algorithm BAndreas Eversberg1-1/+1
Counter j must be wrapped to prevent beeing negative, when it is initialized. This wrapping happens, if TS 0 is used for PDCH in combination with regular GPRS phones (MS class 12 or similar).
2014-01-16tbf: Change the log area to RLCMACDL so we see it in a DL traceHolger Hans Peter Freyther1-4/+4
2014-01-16tbf: Make finding use-after-free more easy and set to NULL or returnHolger Hans Peter Freyther2-0/+5
Make finding use-after-free more easy by setting things to NULL or simply return after tbf_free(this) has been called.
2014-01-16tbf: Use past-tense and call it created_tsHolger Hans Peter Freyther2-6/+6
2014-01-15tbf: Save a timestamp at tbf allocation and print it in the VTYDaniel Willmann2-3/+14
2014-01-15pcu_vty: Add a command to print info about all TBFsDaniel Willmann2-3/+25
2014-01-15tbf: Add a function to output tbf info to VTYDaniel Willmann2-0/+34
2014-01-15rlc: Rename state() to show_state() to better reflect its functionDaniel Willmann3-3/+5
show_state() is only used for debugging output to make the v(b) array human readable.
2014-01-15rlc: Use an enum for the state array instead of charsDaniel Willmann2-35/+61
gprs_rlc_bsn_state is now used to hold the ACK state of sent/received rlc packets.
2014-01-15rlc/tbf: Move v_b into DL windowDaniel Willmann4-74/+80
Move functions resend_needed(), mark_for_resend(), update(), move_window(), state(), count_unacked() out of v_b directly into the UL window and provide a function get_state in v_b to access the v_b elements.
2014-01-15rlc/tbf: Add function receive_bsn that updates v_r, v_q, v_nDaniel Willmann3-4/+12
We don't need to expose the mecanics of updating the variables to the outside.
2014-01-15rlc/tbf: Move v_n into gprs_rlc_ul_window and adapt the testsDaniel Willmann5-29/+30
v_n is part of the UL window handling so move it inside the ul_window
2014-01-15rlc: Rename the simple raise_v_r method to avoid naming conflictsDaniel Willmann2-3/+3
2014-01-15alloc_algorithm_b: Remove obsolete 'i' incrementation from for-loopAndreas Eversberg1-1/+1
2014-01-15alloc_algorithm_b: Add seperate function to shrink rx window when TS are removedAndreas Eversberg1-6/+12
After reduce_rx_window() and update_rx_win_max() was called, one or more TS might be removed. tx_win_min and tx_win_max must be adjusted to the new range of allocated slots.
2014-01-15alloc_algorithm_b: Increment 'i', so allocated TS will not exceed tx_rangeAndreas Eversberg1-2/+2
2014-01-15alloc_algorithm_b: Do not select uplink slots that cannot be used for downlinkAndreas Eversberg1-4/+21
In order to poll MS, the mobile must be able to receive polling request. In order to allow the MS to transmit, the USF must be received by the mobile.
2014-01-15alloc_algorithm_b: Set tx_range to 8, if all 8 TS are supported by MSAndreas Eversberg1-0/+3
2014-01-15alloc_algorithm_b: For type 1 MS, limit number of donwlink TS to 5Andreas Eversberg1-0/+6
The algorithm does not support more than 5 TS on downlink for type 1 MS. Supporting more than 5 TS would require adding more complexity to this algorithm. MS that support more than 4 (or 5) TS on downlink are rare, if they really exist.
2014-01-15alloc_algorithm_b: Correctly increment RX/TX window, even if TS is not useableAndreas Eversberg1-8/+8
2014-01-15alloc: Move the uplink ts selection/pre-assignment out of the codeHolger Hans Peter Freyther1-87/+100
Create a select_ul_slots which is very (95%) similar to the select_dl_slots handling. This needs to be refactored and the todo for multiple uplink slots should be handled too. Add a warning about a potential failure on a busy PCU.
2014-01-15alloc: Move the selection of the first enabled pdch to a new methodHolger Hans Peter Freyther1-14/+23
2014-01-15alloc: Move the tx window calculation to a new methodHolger Hans Peter Freyther1-18/+24
2014-01-15alloc: Move upating of the rx window max for Type==1 to a new methodHolger Hans Peter Freyther1-10/+21
2014-01-15alloc: Move the collision handling to a new methodHolger Hans Peter Freyther1-64/+88
The naming of RX/TX still looks fishy and it should use DL/UL instead. Work on pointers right now. We could introduce a struct with the window min and max and pass this struct. The usage of 'D' appears wrong in the ul_usage..
2014-01-15alloc: Move the selection of downlink slots to a new methodHolger Hans Peter Freyther1-67/+86
This code could evolve into working for Uplink and Downlink. The only different for the final Uplink assignment is that free USFs are collected.
2014-01-15alloc: Simplify the assignment of Trb and TtbHolger Hans Peter Freyther1-6/+2
Put the cases for MS_A/MS_B and MS_A/MS_C together.
2014-01-15alloc: Add a note that the tx window handling differs from rxHolger Hans Peter Freyther1-0/+2
It looks like the code is different (without a reason) a good reason.
2014-01-15alloc/tests: Create an allocation test for various scenariousHolger Hans Peter Freyther1-5/+0
The allocation in the TBF/BTS code is quite complex. In parts this is due the assignment and requests occuring under differen circumstances. Attempt to re-create the commono scenarios. Remove the bogus msclass check in gprs_rlcmac_tbf::update as the allocation code will check the ms class anyway.
2014-01-15bts: Rename ts and trx to ts_no and trx_no as we operate on numberHolger Hans Peter Freyther1-6/+6
2014-01-15tbf: Kill the tsc member as it duplicates dataHolger Hans Peter Freyther5-8/+12
We can just use first_ts and the trx/pdch to extract this information. Avoid duplication of data.
2014-01-15tbf: Fix typo and call it sameHolger Hans Peter Freyther1-1/+1
2014-01-15Set csnStream direction *after* csnStreamInitDaniel Willmann1-1/+1
Fixes a bug introduced in commit 402cdc. That commit sets direction to zero so setting it to 1 should be done after the call to csnStreamInit(). This issue was discovered by the rlcmac test.
2014-01-09Fix warnings in gsm_rlcmac.cppIvan Kluchnikov2-0/+4
1. ar.direction variable was not initialized 2. overrunning array "data->RLC_DATA" of 20 bytes at byte offset 22 using index "i" (which evaluates to 22)
2014-01-09sysmo_l1_if: Fix off-by-one bug when sending UL messages to gsmtapDaniel Willmann1-2/+2
The first byte in data_ind->msgUnitParam.u8Buffer is not part of the GSM frame, but something else, it is also skipped in the call to pcu_rx_data_ind_pdtch(). This patch fixes GSM RLC/MAC UL packet decoding in wireshark, especially ACK/NACK packets are now displayed correctly (amongst others).
2013-12-25sched: Attempt to improve the fairness and schedule UL/AL ACK/ASSHolger Hans Peter Freyther2-14/+23
It is possible that certain UL ACK messages are not sent when there are many many uplink and downlink assignments. Try to be more fair and schedule them round-robin. This way no starvation should occur.
2013-12-25sched: Remove unused bts parameter from the internal methodHolger Hans Peter Freyther1-2/+2
2013-12-25llc: Calculate the average queuing delay of the LLC queuesDaniel Willmann3-4/+28
Use a formula like it is used with TCP. This can help to make decisions about if frames should be dropped or not at the time we enqueue them. This code will store two timeval structs in fron the of the actual data and compute the average at the time of the dequeue.
2013-12-25llc: Initialize the LLC frame with garbage to detect wrong usageHolger Hans Peter Freyther1-0/+2
2013-12-18llc: Count the number of frames queued inside the LLC queueHolger Hans Peter Freyther3-2/+10
2013-12-18rlc: Use sizeof() for the memset instead of ARRAY_SIZEHolger Hans Peter Freyther1-1/+1
In this case both will give the same result but it is better to use sizeof. But it is better to use the raw number of bytes instead of the number of elements.
2013-12-12l1if: Include string.h to fix possible coverity issueHolger Hans Peter Freyther1-0/+1
Coverity warns about the below lines of code. strerror is supposed to return a char* and %s should work on char. Let's see if including string.h will make coverity more happy. The pre-processes file looked sane as well. LOGP(DL1IF, LOGL_ERROR, "error writing to L1 msg_queue: %s\n", strerror(errno)); Coverity: CID 1040951, CID 1040950, CID 1040952
2013-12-12decoding: Cosmetic - change rbb decodingDaniel Willmann1-2/+4
2013-12-12rlc: Make the update loop more understandableDaniel Willmann1-7/+11
Add bitnum_to_bsn() as a convenience function to get the BSN, use it in the update handling and ignore rbb for values outside of our tx window.
2013-12-12decoding: Use 'I' and 'R' in rbb array for DLDaniel Willmann3-3/+3
We want to match up rbb decoding and encoding so it helps to use the same chars.
2013-12-12encoding: Factor out encode_rbb to help testingDaniel Willmann2-13/+24
2013-12-12encoding: Use ul_window ssn()/update_rbb() methods when encoding ul ACKDaniel Willmann1-20/+18
Use the ssn() and update_rbb() methods of gprs_rlc_ul_window when encoding the ACK/NACK packet in write_packet_uplink_ack()
2013-12-12encoding: Change wording to match that of 3GPP TS 04.60Daniel Willmann1-1/+1
The spec (in ch. 9.1.8.1) speaks of RECEIVED or INVALID in the RLC receiver, so change the wording in the log message to match.
2013-12-12rlc: Manage the received block bitmap in the ul_windowDaniel Willmann2-0/+20
Added two methods to gprs_rlc_ul_window * ssn() returns the starting sequence number * update_rbb() returns an array of chars representing the state of the received block bitmap. Each element is either 'I'nvalid or 'R'eceived. The rbb is generated from v_n rbb[63] relates to BSN ssn-1 ... rbb[0] relates to BSN ssn-64