aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAravind Sirsikar <Arvind.Sirsikar@radisys.com>2016-08-03 11:48:01 +0530
committerAravind Sirsikar <Arvind.Sirsikar@radisys.com>2016-08-03 11:48:01 +0530
commit7631182563159c3316e5889ce9bc629f52eb06d4 (patch)
tree180df4b31f065dc48e247ab481e0d30751b04974
parent7b800323a5fb5ebd9aaf445b89328bfaa602eadd (diff)
Fix issue with DL window size calculation
During performance testing it is found that when DL data alone is triggered using Iperf, window size was being calculated as 160 for EGPRS DL even when window size 480 is configured from VTY of osmo-pcu.cfg. There was an issue with gprs_rlcmac_tbf::update function causing this erroneous behavior.
-rw-r--r--src/tbf.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 69b9e3a..8493505 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -375,6 +375,24 @@ int gprs_rlcmac_tbf::update()
return -rc;
}
+ /* Only for DL direction. update the window size*/
+ if (is_egprs_enabled()) {
+ unsigned int num_pdch = pcu_bitcount(dl_slots());
+ unsigned int ws = bts->bts_data()->ws_base + num_pdch * bts->bts_data()->ws_pdch;
+ ws = (ws / 32) * 32;
+ ws = OSMO_MAX(64, ws);
+ if (num_pdch == 1)
+ ws = OSMO_MIN(192, ws);
+ else
+ ws = OSMO_MIN(128 * num_pdch, ws);
+
+ LOGP(DRLCMAC, LOGL_INFO, "%s: Setting EGPRS window size to\
+ %d num_pdch(%d) ws_base(%d) ws_pdch(%d)\n",
+ name(), ws, num_pdch, bts->bts_data()->ws_base,
+ bts->bts_data()->ws_pdch);
+
+ window()->set_ws(ws);
+ }
return 0;
}