fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27986 )
Change subject: BTS_Tests: fix expectations in TC_speech_no_rtp_tch[fh]
......................................................................
BTS_Tests: fix expectations in TC_speech_no_rtp_tch[fh]
On receipt of a FACCH block, trxcon generates not only a DATA.ind,
but also one or two artificial TRAFFIC.ind with BFI. These BFIs
have CRC != 0 indicating their nature, so my initial assumption
about CRC being 0 was incorrect.
Instead of checking CRC, let's count received dummy FACCH frammes.
This patch makes both TC_speech_no_rtp_tch[fh] pass.
Change-Id: Ic680002f60e598cfeeb448c517581b3506355e5b
Related: SYS#5919
Fixes: OS#4823
---
M bts/BTS_Tests.ttcn
1 file changed, 27 insertions(+), 12 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/86/27986/1
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn
index 06fe43b..4bcb90b 100644
--- a/bts/BTS_Tests.ttcn
+++ b/bts/BTS_Tests.ttcn
@@ -7893,10 +7893,12 @@
Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
+/* Verify that we get dummy FACCH blocks on Downlink in the absence of RTP frames */
private function f_TC_speech_no_rtp(charstring id) runs on ConnHdlr {
- var template L1ctlDlMessage tr_bad_frame;
+ var integer facch_count := 0;
+ var integer facch_count_exp;
var L1ctlDlMessage l1_dl;
- timer T := 8.0;
+ timer T := 2.0;
f_l1_tune(L1CTL);
RSL.clear;
@@ -7907,27 +7909,40 @@
f_sleep(2.0); /* ... so let's give the L1 some time to stabilize */
L1CTL.clear;
- /* A universal template for bad Downlink frame: {DATA,TRAFFIC}.ind */
- tr_bad_frame := tr_L1CTL_TRAFFIC_IND(g_chan_nr, tr_RslLinkID_DCCH(0));
- tr_bad_frame.header.msg_type := (L1CTL_DATA_IND, L1CTL_TRAFFIC_IND);
- tr_bad_frame.dl_info.fire_crc := (1..255); /* != 0 */
- tr_bad_frame.payload := ?;
-
T.start;
alt {
- /* OS#4823: DATA.ind or TRAFFIC.ind with bad CRC most likely means that
- * the IUT is sending *dummy bursts*, so the L1 fails to decode them. */
- [] L1CTL.receive(tr_bad_frame) -> value l1_dl {
- setverdict(fail, "Received {DATA,TRAFFIC}.ind with bad CRC: ", l1_dl);
+ /* Expect dummy FACCH frames with LAPDm func=UI */
+ [] L1CTL.receive(tr_L1CTL_DATA_IND(g_chan_nr, tr_RslLinkID_DCCH(0))) -> value l1_dl {
+ var octetstring payload := l1_dl.payload.data_ind.payload;
+ /* XXX: TITAN does not support match(payload, '0303012b?#19'O) */
+ if (substr(payload, 0, 4) != '0303012B'O) {
+ setverdict(fail, "Unexpected FACCH payload := ", payload);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+ }
+ log("Rx FACCH frame: ", payload);
+ facch_count := facch_count + 1;
+ repeat;
}
[] as_l1_sacch();
[] L1CTL.receive { repeat; }
[] T.timeout {
/* We're done, break the loop */
+ log("Rx ", facch_count, " dummy FACCH blocks");
setverdict(pass);
}
}
+ /* Expect a certain number of FACCH frames depending on the channel rate */
+ if (match(g_chan_nr, t_RslChanNr_Bm(?))) {
+ facch_count_exp := 90; /* ~50 FACCH/F blocks/s, so at least 90 in 2s */
+ } else {
+ facch_count_exp := 40; /* ~25 FACCH/H blocks/s, so at least 40 in 2s */
+ }
+ if (facch_count < facch_count_exp) {
+ setverdict(fail, "Expected at least ", facch_count_exp, " DL FACCH frames, ",
+ "but received ", facch_count);
+ }
+
f_rsl_chan_deact();
f_L1CTL_DM_REL_REQ(L1CTL, g_chan_nr);
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27986
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ic680002f60e598cfeeb448c517581b3506355e5b
Gerrit-Change-Number: 27986
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newchange
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27973 )
Change subject: paging: Early stop work_timer when paging queue becomes empty
......................................................................
paging: Early stop work_timer when paging queue becomes empty
There's no need to keep the timer running, since anyway upon next
trigger it will simply early exit in paging_handle_pending_requests()
becuase there's no more work to do.
Change-Id: I096ab7231f52c741c5fded37acd5b309e1de06e3
---
M src/osmo-bsc/paging.c
1 file changed, 2 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index f2bcf96..fcb038b 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -84,6 +84,8 @@
llist_del(&to_be_deleted->entry);
bsc_subscr_put(to_be_deleted->bsub, BSUB_USE_PAGING_REQUEST);
talloc_free(to_be_deleted);
+ if (llist_empty(&paging_bts->pending_requests))
+ osmo_timer_del(&paging_bts->work_timer);
}
static void page_ms(struct gsm_paging_request *request)
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/27973
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I096ab7231f52c741c5fded37acd5b309e1de06e3
Gerrit-Change-Number: 27973
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27965 )
Change subject: paging: Increase T3113 based on paging group load in BSC queue
......................................................................
paging: Increase T3113 based on paging group load in BSC queue
Related: OS#5536
Change-Id: I904c008222ddc3d92843d87fb3182c30b484c8a2
---
M include/osmocom/bsc/paging.h
M src/osmo-bsc/paging.c
2 files changed, 37 insertions(+), 5 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: 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 8d5c9ac..9b63225 100644
--- a/include/osmocom/bsc/paging.h
+++ b/include/osmocom/bsc/paging.h
@@ -76,6 +76,8 @@
struct gsm_bts *bts;
/* what kind of channel type do we ask the MS to establish */
int chan_type;
+ /* paging group of the subscriber: */
+ uint8_t pgroup;
/* Timer 3113: how long do we try to page? */
struct osmo_timer_list T3113;
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 993e5df..f2bcf96 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -330,7 +330,9 @@
}
#define GSM51_MFRAME_DURATION_us (51 * GSM_TDMA_FN_DURATION_uS) /* 235365 us */
-static unsigned int calculate_timer_3113(struct gsm_paging_request *req)
+static unsigned int paging_estimate_delay_us(struct gsm_bts *bts, unsigned int num_reqs);
+
+static unsigned int calculate_timer_3113(struct gsm_paging_request *req, unsigned int reqs_before)
{
unsigned int to_us, to;
struct gsm_bts *bts = req->bts;
@@ -345,8 +347,6 @@
if (!bts->T3113_dynamic)
return d->val;
- /* TODO: take into account load of paging group for req->bsub */
-
/* MFRMS defines repeat interval of paging messages for MSs that belong
* to same paging group across multiple 51 frame multiframes.
* MAXTRANS defines maximum number of RACH retransmissions, spread over
@@ -358,6 +358,9 @@
to_us = GSM51_MFRAME_DURATION_us * bs_pa_mfrms +
GSM_TDMA_FN_DURATION_uS * rach_tx_integer * rach_max_trans;
+ /* Now add some extra time based on how many requests need to be transmitted before this one: */
+ to_us += paging_estimate_delay_us(bts, reqs_before);
+
/* ceiling in seconds + extra time */
to = (to_us + 999999) / 1000000 + d->val;
LOG_PAGING_BTS(req, bts, DPAG, LOGL_DEBUG, "Paging request: T3113 expires in %u seconds\n", to);
@@ -375,6 +378,9 @@
struct gsm_bts_paging_state *bts_entry = &bts->paging;
struct gsm_paging_request *req, *last_initial_req = NULL;
unsigned int t3113_timeout_s;
+ unsigned int reqs_before_same_pgroup = 0;
+ uint8_t pgroup = gsm0502_calc_paging_group(&bts->si_common.chan_desc,
+ str_to_imsi(params->bsub->imsi));
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_ATTEMPTED));
@@ -392,8 +398,15 @@
rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_ALREADY));
return -EEXIST;
}
- if (req->attempts == 0)
+ if (req->attempts == 0) {
last_initial_req = req;
+ if (req->pgroup == pgroup)
+ reqs_before_same_pgroup++;
+ } else if (last_initial_req == NULL) {
+ /* If no req with attempts=0 was found, we'll append to end of list, so keep counting. */
+ if (req->pgroup == pgroup)
+ reqs_before_same_pgroup++;
+ }
}
LOG_PAGING_BTS(params, bts, DPAG, LOGL_DEBUG, "Start paging\n");
@@ -405,6 +418,7 @@
bsc_subscr_get(req->bsub, BSUB_USE_PAGING_REQUEST);
req->bts = bts;
req->chan_type = params->chan_needed;
+ req->pgroup = pgroup;
req->msc = params->msc;
osmo_timer_setup(&req->T3113, paging_T3113_expired, req);
@@ -414,7 +428,7 @@
else/* Add in the middle of the list after last_initial_req */
__llist_add(&req->entry, &last_initial_req->entry, last_initial_req->entry.next);
- t3113_timeout_s = calculate_timer_3113(req);
+ t3113_timeout_s = calculate_timer_3113(req, reqs_before_same_pgroup);
osmo_timer_schedule(&req->T3113, t3113_timeout_s, 0);
paging_schedule_if_needed(bts_entry);
@@ -598,3 +612,19 @@
available_slots, time_span_s);
return available_slots;
}
+
+/*! Conservative estimate of time needed by BTS to schedule a number of paging
+ * requests (num_reqs), based on current load at the BSC queue (doesn't take into
+ * account BTs own buffer) */
+static unsigned int paging_estimate_delay_us(struct gsm_bts *bts, unsigned int num_reqs)
+{
+ unsigned int n_pag_blocks = gsm0502_get_n_pag_blocks(&bts->si_common.chan_desc);
+ unsigned int n_mframes = (num_reqs + (n_pag_blocks - 1)) / n_pag_blocks;
+ unsigned int time_us = n_mframes * GSM51_MFRAME_DURATION_us;
+ /* the multiframes are not consecutive for a paging group, let's add the spacing between: */
+ if (n_mframes > 1) {
+ unsigned int bs_pa_mfrms = (bts->si_common.chan_desc.bs_pa_mfrms + 2);
+ time_us += (n_mframes - 1) * bs_pa_mfrms * GSM51_MFRAME_DURATION_us;
+ }
+ return time_us;
+}
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/27965
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I904c008222ddc3d92843d87fb3182c30b484c8a2
Gerrit-Change-Number: 27965
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27944 )
Change subject: paging: Decouple retransmit period from regular worker interval
......................................................................
paging: Decouple retransmit period from regular worker interval
Before this patch, on each BTS a 500ms timer was used to schedule some
work, sending up to 20 paging requests verytime.
This means, however, for an initial paging request it may take up to
500ms delay to be scheduled to the BTS, which is huge.
While we still want to maintain this 500ms interval for retransmits, it
doesn't make sense to wait that much for other cases. It's far better
sending less requests (10 instead of 20) every half time (250ms instead
of 500ms), since it will spread the load and paging more over time,
allowing for other work to be done in the middle.
Change-Id: I7a1297452cc4734b6ee8c38fb94cf32f38d57c3d
---
M include/osmocom/bsc/paging.h
M src/osmo-bsc/paging.c
2 files changed, 33 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: 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 2102e04..d9fd501 100644
--- a/include/osmocom/bsc/paging.h
+++ b/include/osmocom/bsc/paging.h
@@ -82,6 +82,8 @@
/* How often did we ask the BTS to page? */
int attempts;
+ /* Timestamp of last time the subscriber was paged */
+ struct timespec last_attempt_ts;
/* MSC that has issued this paging */
struct bsc_msc_data *msc;
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 3da5f18..9bc0105 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -59,7 +59,19 @@
void *tall_paging_ctx = NULL;
/* How many paging requests to Tx on RSL at max before going back to main loop */
-#define MAX_PAGE_REQ_PER_ITER 20
+#define MAX_PAGE_REQ_PER_ITER 10
+
+/* How often to attempt sending new paging requests (initial, not retrans): 250ms */
+static const struct timespec initial_period = {
+ .tv_sec = 0,
+ .tv_nsec = 250 * 1000 * 1000,
+};
+
+/* Minimum period between retransmits of paging req to a subscriber: 500ms */
+static const struct timespec retrans_period = {
+ .tv_sec = 0,
+ .tv_nsec = 500 * 1000 * 1000,
+};
/*
* Kill one paging request update the internal list...
@@ -185,6 +197,7 @@
struct gsm_paging_request *request, *initial_request;
unsigned int num_paged = 0;
struct gsm_bts *bts = paging_bts->bts;
+ struct timespec now, retrans_ts;
/*
* Determine if the pending_requests list is empty and
@@ -199,6 +212,8 @@
if (!bts->c0->rsl_link_primary)
goto sched_next_iter;
+ osmo_clock_gettime(CLOCK_MONOTONIC, &now);
+
/* do while loop: Try send at most first MAX_PAGE_REQ_PER_ITER paging
* requests (or before if there are no more available slots). Since
* transmitted requests are re-appended at the end of the list, we check
@@ -223,9 +238,23 @@
goto sched_next_iter;
}
+ /* If we reach around back of the queue (retransmitions), check
+ * if time to retransmit has elapsed. Otherwise, wait until its
+ * time to retransmit. */
+ if (request->attempts > 0) {
+ timespecadd(&request->last_attempt_ts, &retrans_period, &retrans_ts);
+ if (timespeccmp(&now, &retrans_ts, <)) {
+ struct timespec tdiff;
+ timespecsub(&retrans_ts, &now, &tdiff);
+ osmo_timer_schedule(&paging_bts->work_timer, tdiff.tv_sec, tdiff.tv_nsec / 1000);
+ return;
+ }
+ }
+
/* handle the paging request now */
page_ms(request);
paging_bts->available_slots--;
+ request->last_attempt_ts = now;
request->attempts++;
num_paged++;
@@ -237,7 +266,7 @@
/* Once done iterating, prepare next scheduling: */
sched_next_iter:
- osmo_timer_schedule(&paging_bts->work_timer, 0, 500000);
+ osmo_timer_schedule(&paging_bts->work_timer, initial_period.tv_sec, initial_period.tv_nsec / 1000);
}
static void paging_worker(void *data)
3 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/27944
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I7a1297452cc4734b6ee8c38fb94cf32f38d57c3d
Gerrit-Change-Number: 27944
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27936 )
Change subject: paging: Rework timer lifecycle logic
......................................................................
paging: Rework timer lifecycle logic
Decouple credit_timer from event "available_slots became 0".
Let's actually relate credit_timer to the fact of not receiving CCCH
Load Indication: If no CCCH Load Indication is received (cch_load_ind_period * 2),
then assume we are below CCH Load Indication threshold (10% load) and
start estimating the available_slots in a cch_load_ind_period*2 time
frame.
Moreover, in paging_schedule_if_needed(), there's no use in delaying
start of processing work if the work_timer is not already doing work.
Related: OS#5537
Change-Id: I6a0da03c408270044079e81d431f6641527c00cd
---
M src/osmo-bsc/paging.c
1 file changed, 14 insertions(+), 20 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 5be7d81..74a550d 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -58,8 +58,6 @@
void *tall_paging_ctx = NULL;
-#define PAGING_TIMER 0, 500000
-
/* How many paging requests to Tx on RSL at max before going back to main loop */
#define MAX_PAGE_REQ_PER_ITER 20
@@ -106,23 +104,23 @@
log_set_context(LOG_CTX_BSC_SUBSCR, NULL);
}
+static void paging_handle_pending_requests(struct gsm_bts_paging_state *paging_bts);
+
static void paging_schedule_if_needed(struct gsm_bts_paging_state *paging_bts)
{
- if (llist_empty(&paging_bts->pending_requests))
- return;
-
+ /* paging_handle_pending_requests() will schedule work_timer if work
+ * needs to be partitioned in several iterations. */
if (!osmo_timer_pending(&paging_bts->work_timer))
- osmo_timer_schedule(&paging_bts->work_timer, PAGING_TIMER);
+ paging_handle_pending_requests(paging_bts);
}
-
-static void paging_handle_pending_requests(struct gsm_bts_paging_state *paging_bts);
static void paging_give_credit(void *data)
{
struct gsm_bts_paging_state *paging_bts_st = data;
struct gsm_bts *bts = paging_bts_st->bts;
paging_bts_st->available_slots = paging_estimate_available_slots(bts, bts->ccch_load_ind_period * 2);
- paging_handle_pending_requests(paging_bts_st);
+ paging_schedule_if_needed(paging_bts_st);
+ osmo_timer_schedule(&bts->paging.credit_timer, bts->ccch_load_ind_period * 2, 0);
}
/*! count the number of free channels for given RSL channel type required
@@ -210,16 +208,11 @@
struct gsm_paging_request, entry);
request = initial_request;
do {
- /*
- * In case the BTS does not provide us with load indication and we
- * ran out of slots, call an autofill routine. It might be that the
- * BTS did not like our paging messages and then we have counted down
- * to zero and we do not get any messages.
+ /* We run out of available slots. Wait until next CCCH Load Ind
+ * arrives or credit_timer triggers to keep processing requests.
*/
- if (paging_bts->available_slots == 0) {
- osmo_timer_schedule(&paging_bts->credit_timer, bts->ccch_load_ind_period * 2, 0);
+ if (paging_bts->available_slots == 0)
return;
- }
/* we need to determine the number of free channels */
if (paging_bts->free_chans_need != -1 &&
@@ -244,7 +237,7 @@
/* Once done iterating, prepare next scheduling: */
sched_next_iter:
- osmo_timer_schedule(&paging_bts->work_timer, PAGING_TIMER);
+ osmo_timer_schedule(&paging_bts->work_timer, 0, 500000);
}
static void paging_worker(void *data)
@@ -263,6 +256,7 @@
INIT_LLIST_HEAD(&bts->paging.pending_requests);
osmo_timer_setup(&bts->paging.work_timer, paging_worker, &bts->paging);
osmo_timer_setup(&bts->paging.credit_timer, paging_give_credit, &bts->paging);
+ osmo_timer_schedule(&bts->paging.credit_timer, bts->ccch_load_ind_period * 2, 0);
}
/* Called upon the bts struct being freed */
@@ -502,10 +496,10 @@
/*! Update the BTS paging buffer slots on given BTS */
void paging_update_buffer_space(struct gsm_bts *bts, uint16_t free_slots)
{
-
- osmo_timer_del(&bts->paging.credit_timer);
bts->paging.available_slots = free_slots;
paging_schedule_if_needed(&bts->paging);
+ /* Re-arm credit_timer */
+ osmo_timer_schedule(&bts->paging.credit_timer, bts->ccch_load_ind_period * 2, 0);
}
/*! Count the number of pending paging requests on given BTS */
3 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/27936
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I6a0da03c408270044079e81d431f6641527c00cd
Gerrit-Change-Number: 27936
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27943 )
Change subject: paging: Check C0 RSL link instead of OML link
......................................................................
paging: Check C0 RSL link instead of OML link
PAging happens over C0 RSL link, not over OML, so let's actually
validate that the C0 RSL link is up before paging instead of the OML
one.
Change-Id: I11e5bb6f952534763935aa01470e514d4af247ed
---
M src/osmo-bsc/paging.c
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 74a550d..3da5f18 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -196,7 +196,7 @@
}
/* Skip paging if the bts is down. */
- if (!bts->oml_link)
+ if (!bts->c0->rsl_link_primary)
goto sched_next_iter;
/* do while loop: Try send at most first MAX_PAGE_REQ_PER_ITER paging
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/27943
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I11e5bb6f952534763935aa01470e514d4af247ed
Gerrit-Change-Number: 27943
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged