path: root/src/tbf.h
diff options
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-21 17:25:52 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-21 19:26:23 +0200
commit66ba0844be5058032cb31c6ee3e31428417b171f (patch)
tree3dcda8f238959987e9a058f0d2b033ab3e9cf48e /src/tbf.h
parent6eed1911fd619fb594a9d1a7fc734c1f62ff2f08 (diff)
bssgp: Use measured leak rate for flow control (EXPERIMENTAL)
THIS IS EXPERIMENTAL, DO NOT USE IN PRODUCTION The leak rate sent to the SGSN does not reflect the current CS level, lost frames, and control message overhead. Use the ratio between sent blocks and successfully received bytes to derive the net leak rate. TODO: - The values are not stable, possibly resulting from interference with the sampling rate or from the interval between send and receive if they fall into different sampling intervals. - Perhaps the rate can be computed from sent data bytes / sent data frames or from the average packet size and the global nack rate.
Diffstat (limited to 'src/tbf.h')
1 files changed, 8 insertions, 1 deletions
diff --git a/src/tbf.h b/src/tbf.h
index 5c198d3..0a589dc 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -355,6 +355,13 @@ struct gprs_rlcmac_dl_tbf : public gprs_rlcmac_tbf {
} m_bw;
+ struct ana_result {
+ unsigned received_packets;
+ unsigned lost_packets;
+ unsigned received_bytes;
+ unsigned lost_bytes;
+ };
struct msgb *create_new_bsn(const uint32_t fn, const uint8_t ts);
struct msgb *create_dl_acked_block(const uint32_t fn, const uint8_t ts,
const int index);
@@ -363,7 +370,7 @@ protected:
bool dl_window_stalled() const;
void reuse_tbf();
void start_llc_timer();
- int analyse_errors(char *show_rbb, uint8_t ssn);
+ int analyse_errors(char *show_rbb, uint8_t ssn, ana_result *res);
void schedule_next_frame();
struct osmo_timer_list m_llc_timer;