tbf_dl: factor out EGPRS DL window size calculation
A subsequent patch needs to call this from gprs_rlcmac_tbf::update(),
so to avoid code dup, put the calculation in a separate function.
Related: OS#1808
Change-Id: I7c7777d43f843bbd3421503fc2a8600f148ca035
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 7a15547..cbc0710 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -781,20 +781,8 @@
return NULL;
}
- if (tbf->is_egprs_enabled()) {
- unsigned int num_pdch = pcu_bitcount(tbf->dl_slots());
- unsigned int ws = bts->ws_base + num_pdch * bts->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\n",
- tbf->name(), ws);
- tbf->m_window.set_ws(ws);
- }
+ if (tbf->is_egprs_enabled())
+ tbf->egprs_calc_window_size();
llist_add(&tbf->list(), &bts->bts->dl_tbfs());
tbf->bts->tbf_dl_created();