diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/llc.cpp | 4 | ||||
-rw-r--r-- | src/llc.h | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/llc.cpp b/src/llc.cpp index d847c872..3388db1f 100644 --- a/src/llc.cpp +++ b/src/llc.cpp @@ -100,12 +100,14 @@ void gprs_llc_queue::init() { INIT_LLIST_HEAD(&m_queue); m_queue_size = 0; + m_queue_octets = 0; m_avg_queue_delay = 0; } void gprs_llc_queue::enqueue(struct msgb *llc_msg) { m_queue_size += 1; + m_queue_octets += msgb_length(llc_msg) - 2*sizeof(struct timeval); msgb_enqueue(&m_queue, llc_msg); } @@ -120,6 +122,7 @@ void gprs_llc_queue::clear(BTS *bts) } m_queue_size = 0; + m_queue_octets = 0; } #define ALPHA 0.5f @@ -136,6 +139,7 @@ struct msgb *gprs_llc_queue::dequeue() return NULL; m_queue_size -= 1; + m_queue_octets -= msgb_length(msg) - 2*sizeof(struct timeval); /* take the second time */ gettimeofday(&tv_now, NULL); @@ -73,10 +73,12 @@ struct gprs_llc_queue { struct msgb *dequeue(); void clear(BTS *bts); size_t size() const; + size_t octets() const; private: uint32_t m_avg_queue_delay; /* Average delay of data going through the queue */ size_t m_queue_size; + size_t m_queue_octets; struct llist_head m_queue; /* queued LLC DL data */ }; @@ -118,3 +120,8 @@ inline size_t gprs_llc_queue::size() const { return this ? m_queue_size : 0; } + +inline size_t gprs_llc_queue::octets() const +{ + return this ? m_queue_octets : 0; +} |