<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22191">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
lynxis lazus: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Move llc_* fields from BTS to PCU<br><br>Change-Id: Iffb916e53fdf99164ad07cd19e4b35a64136307e<br>---<br>M src/bts.cpp<br>M src/bts.h<br>M src/gprs_bssgp_pcu.cpp<br>M src/gprs_ms.c<br>M src/gprs_pcu.c<br>M src/gprs_pcu.h<br>M src/llc.cpp<br>M src/pcu_vty.c<br>M src/tbf_dl.cpp<br>9 files changed, 34 insertions(+), 65 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 450c04e..92abdbf 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -201,9 +201,6 @@</span><br><span> bts->n3105 = 8;</span><br><span> bts->si13_is_set = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_idle_ack_csec = 10;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> bts->app_info = NULL;</span><br><span> bts->bts = bts_obj;</span><br><span> bts->T_defs_bts = T_defs_bts;</span><br><span>diff --git a/src/bts.h b/src/bts.h</span><br><span>index 635c3c7..bf6e681 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -89,10 +89,6 @@</span><br><span> uint16_t mcs_mask; /* Allowed MCS mask from BTS */</span><br><span> uint8_t initial_cs_dl, initial_cs_ul;</span><br><span> uint8_t initial_mcs_dl, initial_mcs_ul;</span><br><span style="color: hsl(0, 100%, 40%);">- uint16_t force_llc_lifetime; /* overrides lifetime from SGSN */</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t llc_discard_csec;</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t llc_idle_ack_csec;</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t llc_codel_interval_msec; /* 0=disabled, -1=use default interval */</span><br><span> /* Timer defintions */</span><br><span> struct osmo_tdef *T_defs_bts; /* timers controlled by BTS, received through PCUIF */</span><br><span> uint8_t n3101;</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index c1a7a7d..1596d67 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -676,7 +676,7 @@</span><br><span> uint16_t bucket_time = the_pcu->vty.fc_bucket_time;</span><br><span> </span><br><span> if (bucket_time == 0)</span><br><span style="color: hsl(0, 100%, 40%);">- bucket_time = bts->force_llc_lifetime;</span><br><span style="color: hsl(120, 100%, 40%);">+ bucket_time = the_pcu->vty.force_llc_lifetime;</span><br><span> </span><br><span> if (bucket_time == 0xffff)</span><br><span> bucket_size = FC_MAX_BUCKET_SIZE;</span><br><span>diff --git a/src/gprs_ms.c b/src/gprs_ms.c</span><br><span>index 291f0e8..9d303d6 100644</span><br><span>--- a/src/gprs_ms.c</span><br><span>+++ b/src/gprs_ms.c</span><br><span>@@ -121,7 +121,7 @@</span><br><span> ms_set_mode(ms, GPRS);</span><br><span> </span><br><span> if (ms->bts)</span><br><span style="color: hsl(0, 100%, 40%);">- codel_interval = bts_data(ms->bts)->llc_codel_interval_msec;</span><br><span style="color: hsl(120, 100%, 40%);">+ codel_interval = the_pcu->vty.llc_codel_interval_msec;</span><br><span> </span><br><span> if (codel_interval) {</span><br><span> if (codel_interval == LLC_CODEL_USE_DEFAULT)</span><br><span>diff --git a/src/gprs_pcu.c b/src/gprs_pcu.c</span><br><span>index 18c5568..013c026 100644</span><br><span>--- a/src/gprs_pcu.c</span><br><span>+++ b/src/gprs_pcu.c</span><br><span>@@ -94,6 +94,8 @@</span><br><span> /* TODO: increase them when CRBB decoding is implemented */</span><br><span> pcu->vty.ws_base = 64;</span><br><span> pcu->vty.ws_pdch = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ pcu->vty.llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(120, 100%, 40%);">+ pcu->vty.llc_idle_ack_csec = 10;</span><br><span> </span><br><span> pcu->T_defs = T_defs_pcu;</span><br><span> osmo_tdefs_reset(pcu->T_defs);</span><br><span>diff --git a/src/gprs_pcu.h b/src/gprs_pcu.h</span><br><span>index b4e7c13..8fc15dc 100644</span><br><span>--- a/src/gprs_pcu.h</span><br><span>+++ b/src/gprs_pcu.h</span><br><span>@@ -97,6 +97,10 @@</span><br><span> enum gprs_ns2_dialect ns_dialect; /* Are we talking Gb with IP-SNS (true) or classic Gb? */</span><br><span> uint16_t ws_base;</span><br><span> uint16_t ws_pdch; /* increase WS by this value per PDCH */</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t force_llc_lifetime; /* overrides lifetime from SGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t llc_discard_csec;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t llc_idle_ack_csec;</span><br><span style="color: hsl(120, 100%, 40%);">+ uint32_t llc_codel_interval_msec; /* 0=disabled, -1=use default interval */</span><br><span> } vty;</span><br><span> </span><br><span> struct gsmtap_inst *gsmtap;</span><br><span>diff --git a/src/llc.cpp b/src/llc.cpp</span><br><span>index d1122f5..51cb15a 100644</span><br><span>--- a/src/llc.cpp</span><br><span>+++ b/src/llc.cpp</span><br><span>@@ -224,8 +224,8 @@</span><br><span> void gprs_llc_queue::calc_pdu_lifetime(BTS *bts, const uint16_t pdu_delay_csec, struct timespec *tv)</span><br><span> {</span><br><span> uint16_t delay_csec;</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->bts_data()->force_llc_lifetime)</span><br><span style="color: hsl(0, 100%, 40%);">- delay_csec = bts->bts_data()->force_llc_lifetime;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (bts->pcu->vty.force_llc_lifetime)</span><br><span style="color: hsl(120, 100%, 40%);">+ delay_csec = bts->pcu->vty.force_llc_lifetime;</span><br><span> else</span><br><span> delay_csec = pdu_delay_csec;</span><br><span> </span><br><span>diff --git a/src/pcu_vty.c b/src/pcu_vty.c</span><br><span>index 5e9da45..0be914b 100644</span><br><span>--- a/src/pcu_vty.c</span><br><span>+++ b/src/pcu_vty.c</span><br><span>@@ -201,24 +201,24 @@</span><br><span> if (the_pcu->vty.dl_arq_type == EGPRS_ARQ2)</span><br><span> vty_out(vty, " egprs dl arq-type arq2%s", VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->force_llc_lifetime == 0xffff)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.force_llc_lifetime == 0xffff)</span><br><span> vty_out(vty, " queue lifetime infinite%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- else if (bts->force_llc_lifetime)</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " queue lifetime %d%s", bts->force_llc_lifetime,</span><br><span style="color: hsl(120, 100%, 40%);">+ else if (the_pcu->vty.force_llc_lifetime)</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " queue lifetime %d%s", the_pcu->vty.force_llc_lifetime,</span><br><span> VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->llc_discard_csec)</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " queue hysteresis %d%s", bts->llc_discard_csec,</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_discard_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " queue hysteresis %d%s", the_pcu->vty.llc_discard_csec,</span><br><span> VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->llc_idle_ack_csec)</span><br><span style="color: hsl(0, 100%, 40%);">- vty_out(vty, " queue idle-ack-delay %d%s", bts->llc_idle_ack_csec,</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_idle_ack_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out(vty, " queue idle-ack-delay %d%s", the_pcu->vty.llc_idle_ack_csec,</span><br><span> VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts->llc_codel_interval_msec == LLC_CODEL_USE_DEFAULT)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_codel_interval_msec == LLC_CODEL_USE_DEFAULT)</span><br><span> vty_out(vty, " queue codel%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">- else if (bts->llc_codel_interval_msec == LLC_CODEL_DISABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+ else if (the_pcu->vty.llc_codel_interval_msec == LLC_CODEL_DISABLE)</span><br><span> vty_out(vty, " no queue codel%s", VTY_NEWLINE);</span><br><span> else</span><br><span> vty_out(vty, " queue codel interval %d%s",</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_codel_interval_msec/10, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_codel_interval_msec/10, VTY_NEWLINE);</span><br><span> </span><br><span> if (the_pcu->alloc_algorithm == alloc_algorithm_a)</span><br><span> vty_out(vty, " alloc-algorithm a%s", VTY_NEWLINE);</span><br><span>@@ -579,11 +579,8 @@</span><br><span> "queue lifetime <1-65534>",</span><br><span> QUEUE_STR LIFETIME_STR "Lifetime in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span> uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->force_llc_lifetime = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.force_llc_lifetime = csec;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -593,10 +590,7 @@</span><br><span> "queue lifetime infinite",</span><br><span> QUEUE_STR LIFETIME_STR "Infinite lifetime")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->force_llc_lifetime = 0xffff;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.force_llc_lifetime = 0xffff;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -607,10 +601,7 @@</span><br><span> NO_STR QUEUE_STR "Disable lifetime limit of LLC frame (use value given "</span><br><span> "by SGSN)\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->force_llc_lifetime = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.force_llc_lifetime = 0;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -623,11 +614,8 @@</span><br><span> "queue hysteresis <1-65535>",</span><br><span> QUEUE_STR QUEUE_HYSTERESIS_STR "Hysteresis in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span> uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_discard_csec = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_discard_csec = csec;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -637,10 +625,7 @@</span><br><span> "no queue hysteresis",</span><br><span> NO_STR QUEUE_STR QUEUE_HYSTERESIS_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_discard_csec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_discard_csec = 0;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -651,10 +636,7 @@</span><br><span> "queue codel",</span><br><span> QUEUE_STR QUEUE_CODEL_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -664,11 +646,8 @@</span><br><span> "queue codel interval <1-1000>",</span><br><span> QUEUE_STR QUEUE_CODEL_STR "Specify interval\n" "Interval in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span> uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_codel_interval_msec = 10*csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_codel_interval_msec = 10*csec;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -678,10 +657,7 @@</span><br><span> "no queue codel",</span><br><span> NO_STR QUEUE_STR QUEUE_CODEL_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_codel_interval_msec = LLC_CODEL_DISABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_codel_interval_msec = LLC_CODEL_DISABLE;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -694,11 +670,8 @@</span><br><span> QUEUE_STR QUEUE_IDLE_ACK_STR "Idle ACK delay in centi-seconds",</span><br><span> CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span> uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_idle_ack_csec = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_idle_ack_csec = csec;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -708,10 +681,7 @@</span><br><span> NO_STR QUEUE_STR QUEUE_IDLE_ACK_STR,</span><br><span> CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- bts->llc_idle_ack_csec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_idle_ack_csec = 0;</span><br><span> return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 653db14..ab34ea1 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -202,9 +202,9 @@</span><br><span> </span><br><span> void gprs_rlcmac_dl_tbf::start_llc_timer()</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">- if (bts_data()->llc_idle_ack_csec > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_idle_ack_csec > 0) {</span><br><span> struct timespec tv;</span><br><span style="color: hsl(0, 100%, 40%);">- csecs_to_timespec(bts_data()->llc_idle_ack_csec, &tv);</span><br><span style="color: hsl(120, 100%, 40%);">+ csecs_to_timespec(the_pcu->vty.llc_idle_ack_csec, &tv);</span><br><span> osmo_timer_schedule(&m_llc_timer, tv.tv_sec, tv.tv_nsec / 1000);</span><br><span> }</span><br><span> }</span><br><span>@@ -348,8 +348,8 @@</span><br><span> const unsigned keep_small_thresh = 60;</span><br><span> const MetaInfo *info;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- if (bts_data()->llc_discard_csec)</span><br><span style="color: hsl(0, 100%, 40%);">- csecs_to_timespec(bts_data()->llc_discard_csec, &hyst_delta);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_discard_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+ csecs_to_timespec(the_pcu->vty.llc_discard_csec, &hyst_delta);</span><br><span> </span><br><span> osmo_clock_gettime(CLOCK_MONOTONIC, &tv_now);</span><br><span> timespecadd(&tv_now, &hyst_delta, &tv_now2);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22191">change 22191</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-pcu/+/22191"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iffb916e53fdf99164ad07cd19e4b35a64136307e </div>
<div style="display:none"> Gerrit-Change-Number: 22191 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>