osmo-pcu/src
Jacob Erlbeck 70b96aa232 ms: Reduce DL CS level if only a few LLC bytes are left
If just a few bytes are left to send to the MS, it makes sense to
reduce the coding scheme level to increase the throughput. This
has been shown by Chen and Goodman in their paper "Theoretical
Analysis of GPRS Throughput and Delay". See their throughput over C/I
measurement graphs (figures 4 and 5 in the paper) for details.

This commit implements a simplified CS downgrade feature for the
downlink. The coding scheme will be downgraded if there are only a
few octets are left to be send over the TBF (see the
downgrade-threshold command below) and the NACK rate is not low (the
CS will not get degraded on a high quality RF link). As an exception,
CS-3 will be degraded to CS-1, since CS-2 does not improve the
throughput in general when a few small packets are sent and the
signal fades slowly (see Chen/Goodman).

The following VTY command is added to the config-pcu node:

- cs downgrade-threshold <1-10000>
- cs no downgrade-threshold

to set the threshold of the number of remaining bytes to be RLC/MAC
encoded. The CS will only be reduced, if the number is below the
threshold. The 'no' command disables this feature completely. The
default value is 200 octets.

Sponsored-by: On-Waves ehf
2015-06-22 10:39:06 +02:00
..
.gitignore Adding .gitignore to source directory 2012-06-27 17:45:15 +02:00
Makefile.am build: Add -lrt to AM_LDFLAGS 2015-06-22 10:36:50 +02:00
bitvector.cpp bitvector: Address compiler warnings about unsigned/signed 2013-08-02 13:39:13 +04:00
bitvector.h bitvector: Address compiler warnings about unsigned/signed 2013-08-02 13:39:13 +04:00
bts.cpp l1: Add debug log messages for I_LEVEL 2015-06-22 10:39:06 +02:00
bts.h ms: Reduce DL CS level if only a few LLC bytes are left 2015-06-22 10:39:06 +02:00
csn1.cpp csn1: Add spaces between string literal and identifier 2014-06-04 17:17:48 +02:00
csn1.h Ported fixes and improvements from Wireshark for RLC/MAC control block decoding. Part 1. 2012-10-10 19:43:37 +04:00
cxx_linuxlist.h llist: Add a C++ wrapper for linux_list 2015-05-20 11:36:06 +02:00
decoding.cpp decoding: Cosmetic - change rbb decoding 2013-12-12 11:09:17 +01:00
decoding.h tbf/rlc: Move the parsing of RBB to Decoding, move window marking out 2013-11-26 20:57:24 +01:00
encoding.cpp tbf: Move the current CS field to GprsMs 2015-06-08 09:39:25 +02:00
encoding.h encoding: Change function signature to use UL TBFs where it makes sense 2014-08-07 16:12:05 +02:00
femtobts.c femtobts: Remove code that is causing warnings with GCC 4.8 2013-08-02 13:36:52 +04:00
femtobts.h femtobts: Remove code that is causing warnings with GCC 4.8 2013-08-02 13:36:52 +04:00
gprs_bssgp_pcu.cpp bssgp: Calculate the avg_delay_ms in 32bit only (Coverity) 2015-06-11 13:13:55 +02:00
gprs_bssgp_pcu.h bssgp: Increment BSSGP flow control tag value 2015-05-06 15:26:08 +02:00
gprs_debug.cpp Introduce new file for various measurements 2013-03-17 17:16:44 +01:00
gprs_debug.h Introduce new file for various measurements 2013-03-17 17:16:44 +01:00
gprs_ms.cpp ms: Reduce DL CS level if only a few LLC bytes are left 2015-06-22 10:39:06 +02:00
gprs_ms.h ms: Reduce DL CS level if only a few LLC bytes are left 2015-06-22 10:39:06 +02:00
gprs_ms_storage.cpp ms: Add back pointer to BTS 2015-06-08 09:39:07 +02:00
gprs_ms_storage.h vty: Add 'show ms all' command 2015-06-08 09:39:51 +02:00
gprs_rlcmac.cpp debug_diagram: Remove the special debug_diagram compilation mode 2013-11-26 20:57:24 +01:00
gprs_rlcmac.h tbf, gprs_rlcmac_meas: Move the DL bandwidth variables to the DL TBF 2014-08-08 14:15:24 +02:00
gprs_rlcmac_meas.cpp tbf, gprs_rlcmac_meas: Move the DL bandwidth variables to the DL TBF 2014-08-08 14:15:24 +02:00
gprs_rlcmac_sched.cpp tbf: Poll MS on idle DL TBFs 2015-03-25 12:34:38 +01:00
gprs_rlcmac_ts_alloc.cpp tbf: Store MS class in GprsMs objects 2015-06-08 09:38:49 +02:00
gsm_rlcmac.cpp Fix warnings in gsm_rlcmac.cpp 2014-01-09 20:01:48 +01:00
gsm_rlcmac.h Ported fixes and improvements from Wireshark for RLC/MAC control block decoding. Part 1. 2012-10-10 19:43:37 +04:00
gsm_timer.cpp bts: Move the frame_number into the BTS sructure 2013-10-30 21:20:45 +01:00
gsm_timer.h move everything to src/ subdirectory 2012-06-14 20:48:42 +08:00
llc.cpp llc: Keep track of the number of stored LLC octets 2015-06-22 10:39:06 +02:00
llc.h llc: Keep track of the number of stored LLC octets 2015-06-22 10:39:06 +02:00
openbts_sock.cpp write_queue: Check the result of osmo_wqueue_enqueue and free 2015-05-22 10:37:57 +02:00
pcu_l1_if.cpp l1: Pass all L1 measurements upwards 2015-06-22 10:39:06 +02:00
pcu_l1_if.h l1: Store measurement values sent by the MS 2015-06-22 10:39:06 +02:00
pcu_main.cpp ms: Reduce DL CS level if only a few LLC bytes are left 2015-06-22 10:39:06 +02:00
pcu_utils.h tbf: Use a hysteresis when discarding DL LLC frames 2015-04-02 12:34:48 +02:00
pcu_vty.c ms: Reduce DL CS level if only a few LLC bytes are left 2015-06-22 10:39:06 +02:00
pcu_vty.h vty: Use libosmocore VTY standards 2015-04-09 17:05:19 +02:00
pcu_vty_functions.cpp ms: Store the NACK rate in the MS object 2015-06-22 10:39:06 +02:00
pcu_vty_functions.h vty: Add command to show detailed MS info 2015-06-08 09:41:24 +02:00
pcuif_proto.h Add RSSI of data blocks to PCU interface 2013-03-17 17:16:18 +01:00
poll_controller.cpp poll_controller: Be stricter with the timeout handling 2014-09-10 19:19:58 +02:00
poll_controller.h misc: Do not mix struct/class in the forward declaration 2014-07-02 14:48:44 +02:00
rlc.cpp tbf, ...: Make the fields in the dl/ul struct member variables 2014-08-07 16:12:05 +02:00
rlc.h tbf: Add adaptive DL CS adjustment 2015-06-08 09:40:09 +02:00
sba.cpp sba: Move freeing a sba into a central place 2013-10-30 21:24:12 +01:00
sba.h misc: Do not mix struct/class in the forward declaration 2014-07-02 14:48:44 +02:00
sysmo_l1_fwd.c Adding direct access to DSP of sysmoBTS for PDTCH traffice 2012-12-18 10:47:28 +01:00
sysmo_l1_hw.c l1if: Include string.h to fix possible coverity issue 2013-12-12 14:32:33 +01:00
sysmo_l1_if.c l1: Pass all L1 measurements upwards 2015-06-22 10:39:06 +02:00
sysmo_l1_if.h l1if: Add missing function prototypes 2015-05-04 10:02:01 +02:00
sysmo_sock.cpp Always exit and don't try to recover 2014-06-15 19:28:51 +02:00
tbf.cpp tbf: Check for NULL in name() (Coverity) 2015-06-11 13:13:55 +02:00
tbf.h tbf: Fix downlink packet loss 2015-06-22 10:39:06 +02:00
tbf.txt Doc: Update on README and tbf.txt 2012-12-18 10:04:03 +01:00
tbf_dl.cpp tbf: Fix downlink packet loss 2015-06-22 10:39:06 +02:00
tbf_ul.cpp ms: Store the L1 measurement values in the MS objects 2015-06-22 10:39:06 +02:00