aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs_rlcmac.h
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2013-06-18 21:55:22 +0400
committerIvan Kluchnikov <kluchnikovi@gmail.com>2013-06-18 21:55:22 +0400
commit07cd260d9d9a6da0b3856c87852ee8039640d745 (patch)
tree3fb6057cb9fbe229fc040f10abb4725c46e8bf6c /src/gprs_rlcmac.h
parenta004e6a8233695abd417a97d6f81a802b605038a (diff)
Implemented estimated C/I algorithm for link adaptation.link_adaptation
Description of algorithm: 1. Start with initial coding scheme. 2. Transmit RLC blocks until the end of the reporting window (Packet Downlink Ack/Nack message is received) 3. Estimate the average C/I for the previous reporting window and change CS, if it is necessary. 4. If there is more data to transmit return to step 2. Added configuration options to enable/disable link adaptation and setting maximum C/I level for CS1, CS2, CS3, CS4.
Diffstat (limited to 'src/gprs_rlcmac.h')
-rw-r--r--src/gprs_rlcmac.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h
index c5af6029..17b34ef0 100644
--- a/src/gprs_rlcmac.h
+++ b/src/gprs_rlcmac.h
@@ -73,6 +73,11 @@ struct gprs_rlcmac_bts {
uint8_t cs3;
uint8_t cs4;
uint8_t initial_cs_dl, initial_cs_ul;
+ uint8_t cs_link_adaptation; /* CS link adaptation */
+ float cs1_ci_level; /* maximum C/I level for CS1 */
+ float cs2_ci_level; /* maximum C/I level for CS2 */
+ float cs3_ci_level; /* maximum C/I level for CS3 */
+ float cs4_ci_level; /* maximum C/I level for CS4 */
uint8_t force_cs; /* 0=use from BTS 1=use from VTY */
uint16_t force_llc_lifetime; /* overrides lifetime from SGSN */
uint8_t t3142;
@@ -351,7 +356,7 @@ int gprs_rlcmac_rcv_block(uint8_t trx, uint8_t ts, uint8_t *data, uint8_t len,
int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra,
uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc,
uint8_t tfi, uint8_t usf, uint32_t tlli, uint8_t polling,
- uint32_t fn, uint8_t single_block, uint8_t alpha, uint8_t gamma,
+ uint32_t fn, uint8_t single_block, uint8_t alpha, uint8_t gamma, uint8_t cs,
int8_t ta_idx);
void write_packet_uplink_assignment(bitvec * dest, uint8_t old_tfi,
@@ -429,6 +434,14 @@ int recall_timing_advance(uint32_t tlli);
int flush_timing_advance(void);
+int remember_cs(uint32_t tlli, uint8_t cs);
+
+int recall_cs(uint32_t tlli);
+
+int flush_cs(void);
+
+uint8_t link_adaptation(float i_level);
+
extern "C" {
#endif
int alloc_algorithm_a(struct gprs_rlcmac_tbf *old_tbf,