Attention is currently required from: Hoernchen.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-trx/+/30415
to look at the new patch set (#3).
Change subject: vita demod by piotr krysik, modified
......................................................................
vita demod by piotr krysik, modified
Grabbed from gr-gsm 2de47e28ce1fb9a518337bfc0add36c8e3cff5eb
Had a few rounds of extensive cleanup (not the va itself). Uses gcc
multiversioning for x86 targets.
Change-Id: I5466c522cf4de984a4810ec46df43a10b52ed78f
---
A Transceiver52M/grgsm_vitac/constants.h
A Transceiver52M/grgsm_vitac/grgsm_vitac.cpp
A Transceiver52M/grgsm_vitac/grgsm_vitac.h
A Transceiver52M/grgsm_vitac/viterbi_detector.cc
A Transceiver52M/grgsm_vitac/viterbi_detector.h
5 files changed, 959 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/15/30415/3
--
To view, visit https://gerrit.osmocom.org/c/osmo-trx/+/30415
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: I5466c522cf4de984a4810ec46df43a10b52ed78f
Gerrit-Change-Number: 30415
Gerrit-PatchSet: 3
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: pespin.
Hello Jenkins Builder, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-trx/+/30413
to look at the new patch set (#2).
Change subject: bladerf xa4 support
......................................................................
bladerf xa4 support
This is not really finished, there are multiple reasons to not use this:
1) main clock is not a gsm multiple, so it will continously drift
2) small buffer sizes lead to tx gaps that are hard to detect and break
everything.
Change-Id: I455c34bb9520d5f09eeb1ac76fceb4bdea94d1ac
---
M .gitignore
M Transceiver52M/Makefile.am
M Transceiver52M/device/Makefile.am
A Transceiver52M/device/bladerf/Makefile.am
A Transceiver52M/device/bladerf/bladerf.cpp
A Transceiver52M/device/bladerf/bladerf.h
M configure.ac
7 files changed, 920 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/13/30413/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-trx/+/30413
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: I455c34bb9520d5f09eeb1ac76fceb4bdea94d1ac
Gerrit-Change-Number: 30413
Gerrit-PatchSet: 2
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: pespin.
Hoernchen has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-trx/+/30413 )
Change subject: bladerf xa4 support
......................................................................
Patch Set 1:
(1 comment)
File Transceiver52M/device/bladerf/bladerf.cpp:
https://gerrit.osmocom.org/c/osmo-trx/+/30413/comment/edb8462c_7592e075
PS1, Line 727: #ifndef IPCMAGIC
> what's this for?
This is related to the ipc interface test that uses the uhd backend for the ipc side,which is where the file is copied from.
--
To view, visit https://gerrit.osmocom.org/c/osmo-trx/+/30413
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: I455c34bb9520d5f09eeb1ac76fceb4bdea94d1ac
Gerrit-Change-Number: 30413
Gerrit-PatchSet: 1
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 01 Dec 2022 14:23:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/30347 )
Change subject: paging: Replace reqs waiting for retransmission with new incoming inital req if queue is full
......................................................................
paging: Replace reqs waiting for retransmission with new incoming inital req if queue is full
If queue size (in transmit delay of requests) is too long (above
threshold) when a new initial incoming request arrives, instead of
directly discarding it, see if we can drop a pending retransmission and
insert the new one instead, in order to avoid losing initial requests.
This is done under the assumption that it is more important to transmit
intial requests than to retransmit already transmitted ones. The
rationale is that there's lower chances that an MS which didn't answer
lately will answer now (aka being reachable at the cell), so it's better
to allocate resources for new requests (new MS) which may be available
in the cell.
Change-Id: Idfd93254ae456b1ee08416e05479488299dd063d
Related: OS#5552
---
M src/osmo-bsc/net_init.c
M src/osmo-bsc/paging.c
M tests/timer.vty
3 files changed, 19 insertions(+), 11 deletions(-)
Approvals:
Jenkins Builder: Verified
daniel: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/src/osmo-bsc/net_init.c b/src/osmo-bsc/net_init.c
index 75dcbf3..ad2f8c4 100644
--- a/src/osmo-bsc/net_init.c
+++ b/src/osmo-bsc/net_init.c
@@ -77,8 +77,9 @@
{ .T = -3111, .default_val = 4, .desc = "Wait time after lchan was released in error (should be T3111 + 2s)" },
{ .T = -3113, .default_val = PAGING_THRESHOLD_X3113_DEFAULT_SEC,
.desc = "Maximum Paging Request Transmit Delay Threshold: " \
- "If the estimated transmit delay of the messages of the paging queue surpasses this threshold, new incoming "
- "paging requests are discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. "
+ "If the estimated transmit delay of the messages in the paging queue surpasses this threshold, then new incoming "
+ "paging requests will if possible replace a request in retransmission state from the queue or otherwise be discarded, "
+ "hence limiting the size of the queue and maximum delay of its scheduled requests. "
"X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response" },
{ .T = -3210, .default_val = 20, .desc = "After L3 Complete, wait for MSC to confirm" },
{}
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index fda508e..657665c 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -509,13 +509,6 @@
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_ATTEMPTED));
- /* Don't try to queue more requests than we can realistically handle within X3113 seconds,
- * see PAGING_THRESHOLD_X3113_DEFAULT_SEC. */
- if (paging_pending_requests_nr(bts) > paging_estimate_available_slots(bts, x3113_s)) {
- rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_OVERLOAD));
- return -ENOSPC;
- }
-
/* Find if we already have one for the given subscriber on this BTS: */
if (bsc_subscr_find_req_by_bts(params->bsub, bts)) {
LOG_PAGING_BTS(params, bts, DPAG, LOGL_INFO, "Paging request already pending for this subscriber\n");
@@ -523,6 +516,20 @@
return -EEXIST;
}
+ /* Don't try to queue more requests than we can realistically handle within X3113 seconds,
+ * see PAGING_THRESHOLD_X3113_DEFAULT_SEC. */
+ if (paging_pending_requests_nr(bts) > paging_estimate_available_slots(bts, x3113_s)) {
+ struct gsm_paging_request *first_retrans_req;
+ rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_OVERLOAD));
+ /* Need to drop a retrans from the queue if possible, in order to make space for the new initial req. */
+ if (bts_entry->retrans_req_list_len == 0) {
+ /* There are no retrans to be replaced by this initial request, discard it. */
+ return -ENOSPC;
+ }
+ first_retrans_req = llist_first_entry(&bts_entry->retrans_req_list, struct gsm_paging_request, entry);
+ paging_remove_request(first_retrans_req);
+ }
+
/* The incoming new req will be stored in initial_req_list giving higher prio
* to it over retransmissions. This avoids new subscribers being paged to
* be delayed if the paging queue is full due to a lot of retranmissions.
diff --git a/tests/timer.vty b/tests/timer.vty
index 731d134..9573a09 100644
--- a/tests/timer.vty
+++ b/tests/timer.vty
@@ -35,7 +35,7 @@
net: X18 = 60000 ms Forget-sum period for all_allocated:* rate counters: after this amount of idle time, forget internally cumulated time remainders. Zero to always keep remainders. See also X16, X17. (default: 60000 ms)
net: X25 = 5 s Timeout for initial user data after an MSC initiated an SCCP connection to the BSS (default: 5 s)
net: X3111 = 4 s Wait time after lchan was released in error (should be T3111 + 2s) (default: 4 s)
-net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages of the paging queue surpasses this threshold, new incoming paging requests are discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
+net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages in the paging queue surpasses this threshold, then new incoming paging requests will if possible replace a request in retransmission state from the queue or otherwise be discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
net: X3210 = 20 s After L3 Complete, wait for MSC to confirm (default: 20 s)
mgw: X2427 = 5 s timeout for MGCP response from MGW (default: 5 s)
@@ -90,7 +90,7 @@
net: X18 = 60000 ms Forget-sum period for all_allocated:* rate counters: after this amount of idle time, forget internally cumulated time remainders. Zero to always keep remainders. See also X16, X17. (default: 60000 ms)
net: X25 = 5 s Timeout for initial user data after an MSC initiated an SCCP connection to the BSS (default: 5 s)
net: X3111 = 4 s Wait time after lchan was released in error (should be T3111 + 2s) (default: 4 s)
-net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages of the paging queue surpasses this threshold, new incoming paging requests are discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
+net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages in the paging queue surpasses this threshold, then new incoming paging requests will if possible replace a request in retransmission state from the queue or otherwise be discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
net: X3210 = 20 s After L3 Complete, wait for MSC to confirm (default: 20 s)
mgw: X2427 = 5 s timeout for MGCP response from MGW (default: 5 s)
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/30347
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Idfd93254ae456b1ee08416e05479488299dd063d
Gerrit-Change-Number: 30347
Gerrit-PatchSet: 7
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/30370 )
Change subject: paging: Optimize retrieving number of request per paging group
......................................................................
paging: Optimize retrieving number of request per paging group
This patch caches the counts of initial paging requests for each paging
group. This count is needed to estimate T3113 when a new incoming paging
request is received and it has to be inserted into the queue.
With this there's no need to traverse the whole initial_req_list every
time a new incoming paging request is receiving, potentially saving lots
of iteration and hence lots of CPU when the queue is long.
Related: SYS#6200
Change-Id: I6994127827d120a0b4dd3de51e1ddde39f2fe531
---
M include/osmocom/bsc/paging.h
M src/osmo-bsc/paging.c
2 files changed, 17 insertions(+), 20 deletions(-)
Approvals:
Jenkins Builder: Verified
daniel: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/include/osmocom/bsc/paging.h b/include/osmocom/bsc/paging.h
index b10c398..15eb49e 100644
--- a/include/osmocom/bsc/paging.h
+++ b/include/osmocom/bsc/paging.h
@@ -61,6 +61,9 @@
*/
#define PAGING_THRESHOLD_X3113_DEFAULT_SEC 60
+#define MAX_PAGING_BLOCKS_CCCH 9
+#define MAX_BS_PA_MFRMS 9
+
struct bsc_paging_params {
enum bsc_paging_reason reason;
struct bsc_msc_data *msc;
@@ -117,6 +120,9 @@
/* Number of requests in pending_requests_len */
unsigned int retrans_req_list_len;
+ /* Number of requests in initial_req_list, indexed by pgroup. */
+ unsigned int initial_req_pgroup_counts[MAX_PAGING_BLOCKS_CCCH * MAX_BS_PA_MFRMS];
+
struct gsm_bts *bts;
struct osmo_timer_list work_timer;
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 657665c..e6f6fe4 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -88,10 +88,12 @@
osmo_timer_del(&req->T3113);
llist_del(&req->entry);
- if (req->attempts == 0)
+ if (req->attempts == 0) {
bts_pag_st->initial_req_list_len--;
- else
+ bts_pag_st->initial_req_pgroup_counts[req->pgroup]--;
+ } else {
bts_pag_st->retrans_req_list_len--;
+ }
osmo_stat_item_dec(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_PAGING_REQ_QUEUE_LENGTH), 1);
bsc_subscr_remove_active_paging_request(req->bsub, req);
talloc_free(req);
@@ -220,6 +222,7 @@
if (request->attempts == 0) {
/* req is removed from initial_req_list and inserted into retrans_req_list, update list lengths: */
bts_pag_st->initial_req_list_len--;
+ bts_pag_st->initial_req_pgroup_counts[request->pgroup]--;
bts_pag_st->retrans_req_list_len++;
}
llist_del(&request->entry);
@@ -503,9 +506,8 @@
struct gsm_paging_request *req;
unsigned int t3113_timeout_s;
unsigned int x3113_s = osmo_tdef_get(bts->network->T_defs, -3113, OSMO_TDEF_S, -1);
- unsigned int reqs_before = 0, reqs_before_same_pgroup = 0;
- uint8_t pgroup = gsm0502_calc_paging_group(&bts->si_common.chan_desc,
- str_to_imsi(params->bsub->imsi));
+ uint8_t pgroup;
+ unsigned int reqs_before, reqs_before_same_pgroup;
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_ATTEMPTED));
@@ -530,21 +532,9 @@
paging_remove_request(first_retrans_req);
}
- /* The incoming new req will be stored in initial_req_list giving higher prio
- * to it over retransmissions. This avoids new subscribers being paged to
- * be delayed if the paging queue is full due to a lot of retranmissions.
- * Retranmissions usually mean MS are not reachable/available, so the
- * rationale here is to prioritize new subs which may be available.
- *
- * Count initial reqs already stored in initial_req_list, since those
- * will be scheduled for transmission before current incoming req and
- need to be taken into account when calculating T3113 for it.
- */
- llist_for_each_entry(req, &bts_entry->initial_req_list, entry) {
- reqs_before++;
- if (req->pgroup == pgroup)
- reqs_before_same_pgroup++;
- }
+ pgroup = gsm0502_calc_paging_group(&bts->si_common.chan_desc, str_to_imsi(params->bsub->imsi));
+ reqs_before = bts_entry->initial_req_list_len;
+ reqs_before_same_pgroup = bts_entry->initial_req_pgroup_counts[pgroup];
LOG_PAGING_BTS(params, bts, DPAG, LOGL_DEBUG, "Start paging\n");
req = talloc_zero(tall_paging_ctx, struct gsm_paging_request);
@@ -559,6 +549,7 @@
bsc_subscr_add_active_paging_request(req->bsub, req);
bts_entry->initial_req_list_len++;
+ bts_entry->initial_req_pgroup_counts[req->pgroup]++;
osmo_stat_item_inc(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_PAGING_REQ_QUEUE_LENGTH), 1);
llist_add_tail(&req->entry, &bts_entry->initial_req_list);
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/30370
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I6994127827d120a0b4dd3de51e1ddde39f2fe531
Gerrit-Change-Number: 30370
Gerrit-PatchSet: 5
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged