osmo-bts[master]: sysmo: Allow passing low quality buffers to upper layers

2017-06-29 Thread Harald Welte

Patch Set 3: Code-Review-1

(1 comment)

https://gerrit.osmocom.org/#/c/3056/3/src/osmo-bts-sysmo/l1_if.c
File src/osmo-bts-sysmo/l1_if.c:

PS3, Line 992: 1sap->u.data.lqual_cb
this is where/how we report linqQuality to the common part in l1sap.  I think 
it would make a lot of sense to remove the "drop frames in case of bad link 
quality from the BTS-specific parts and move it into the code above l1sap.  
We'd have to add ber10k andlqual_cb to ph_tch_param, like we have it in 
ph_data_param already (libosmocore l1sap.h).


-- 
To view, visit https://gerrit.osmocom.org/3056
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
Gerrit-PatchSet: 3
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: Yes


osmo-bts[master]: octphy: Allow passing low quality buffers to upper layers

2017-06-29 Thread Harald Welte

Patch Set 1: Code-Review-1

(1 comment)

https://gerrit.osmocom.org/#/c/3078/1/src/osmo-bts-octphy/l1_tch.c
File src/osmo-bts-octphy/l1_tch.c:

Line 201:   rmsg = msgb_alloc_headroom(256, 128, "L1C-to-RTP");
L1C is L1 Control (channel activation, ...). L1P is L1 [data] primitive. L1C is 
thus wrong here and also in the LOGP above.


-- 
To view, visit https://gerrit.osmocom.org/3078
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I02bf4bca041fccf96fe2986480251f96248ce2d1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: Yes


osmo-bts[master]: Revert "osmo-bts-sysmo: Include frame number in MEAS IND"

2017-06-29 Thread Harald Welte

Patch Set 2:

might be useful to explain *why* it is being reverted.

-- 
To view, visit https://gerrit.osmocom.org/3051
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib50c813c470bf6ea740fe6667431eaa1a23fdd8d
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


[MERGED] libosmo-abis[master]: osmo_ortp.c: Duration of a RTP frame affects timestamp of th...

2017-06-29 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: osmo_ortp.c: Duration of a RTP frame affects timestamp of the 
next one
..


osmo_ortp.c: Duration of a RTP frame affects timestamp of the next one

Duration of an RTP frames dictates the timestamp used for the next
frame, not for the one being sent now. It was done like this before to
account for possible losses.
Implementation wise, the duration was understood as "duration
between last frame was sent and now when current one is sent". It makes
more sense to use it as the duration in number of sampling ticks
as described on the function documentation, specially now that we can
account for extra time by means of osmo_rtp_skipped_frame.

Change-Id: Ib8f5fa5509059fe908c09a4381844c613d478548
---
M src/trau/osmo_ortp.c
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index c9480ff..c49a23d 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -496,9 +496,9 @@
return -ENOMEM;
 
rtp_set_markbit(mblk, marker);
-   rs->tx_timestamp += duration;
rc = rtp_session_sendm_with_ts(rs->sess, mblk,
   rs->tx_timestamp);
+   rs->tx_timestamp += duration;
if (rc < 0) {
/* no need to free() the mblk, as rtp_session_rtp_send()
 * unconditionally free()s the mblk even in case of

-- 
To view, visit https://gerrit.osmocom.org/3083
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib8f5fa5509059fe908c09a4381844c613d478548
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder


libosmo-abis[master]: osmo_ortp.c: Duration of a RTP frame affects timestamp of th...

2017-06-29 Thread Harald Welte

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3083
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib8f5fa5509059fe908c09a4381844c613d478548
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


[MERGED] libosmo-abis[master]: osmo_ortp: Add osmo_rtp_drop_frame API

2017-06-29 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: osmo_ortp: Add osmo_rtp_drop_frame API
..


osmo_ortp: Add osmo_rtp_drop_frame API

This API will be used by osmo-bts to maintain the sampling clock of the
RTP socket whenever a frame should be sent but it is not available, for
instance due to low quality of signal.

Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
---
M include/osmocom/trau/osmo_ortp.h
M src/trau/osmo_ortp.c
2 files changed, 23 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/trau/osmo_ortp.h b/include/osmocom/trau/osmo_ortp.h
index 9eb176f..578b1cb 100644
--- a/include/osmocom/trau/osmo_ortp.h
+++ b/include/osmocom/trau/osmo_ortp.h
@@ -76,6 +76,7 @@
 int osmo_rtp_socket_connect(struct osmo_rtp_socket *rs, const char *ip, 
uint16_t port);
 int osmo_rtp_socket_set_pt(struct osmo_rtp_socket *rs, int payload_type);
 int osmo_rtp_socket_free(struct osmo_rtp_socket *rs);
+int osmo_rtp_skipped_frame(struct osmo_rtp_socket *rs, unsigned int duration);
 int osmo_rtp_send_frame(struct osmo_rtp_socket *rs, const uint8_t *payload,
unsigned int payload_len, unsigned int duration);
 int osmo_rtp_send_frame_ext(struct osmo_rtp_socket *rs, const uint8_t *payload,
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index b2ee040..c9480ff 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -436,6 +436,28 @@
return osmo_rtp_socket_fdreg(rs);
 }
 
+/*! \brief Increment timestamp on a RTP socket without sending any packet
+ *  \param[in] rs OsmoRTP socket
+ *  \param[in] duration duration in number of RTP clock ticks
+ *
+ * Useful to keep the RTP internal clock up to date if an RTP frame should be
+ * send at a given time but no audio content is available. When next packet is
+ * sent, the receiver will see a different increase on the sequence number and
+ * the timestamp, and it should then take it as a synchronization point. For
+ * that same reason, it is advisable to enable the marker bit on the next RTP
+ * packet to be sent after calling this function.
+ *
+ *  \returns 0 on success, <0 in case of error.
+ */
+int osmo_rtp_skipped_frame(struct osmo_rtp_socket *rs, unsigned int duration)
+{
+   if (rs->flags & OSMO_RTP_F_DISABLED)
+   return 0;
+
+   rs->tx_timestamp += duration;
+   return 0;
+}
+
 /*! \brief Send one RTP frame via a RTP socket
  *  \param[in] rs OsmoRTP socket
  *  \param[in] payload pointer to buffer with RTP payload data

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 3
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 


libosmo-abis[master]: osmo_ortp: Add osmo_rtp_drop_frame API

2017-06-29 Thread Harald Welte

Patch Set 3: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 3
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


[MERGED] osmo-bts[master]: osmo-bts-litecell15: Fix missing frame number in MEAS IND

2017-06-29 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: osmo-bts-litecell15: Fix missing frame number in MEAS IND
..


osmo-bts-litecell15: Fix missing frame number in MEAS IND

The layer 1 interface (l1_if.c) for osmo-bts-litecell15 does not include
the frame number into the measurement indications it forwards
to higher layers. The frame number is required to properly
detect the end of a measurement period.

change process_meas_res() to properly include the frame number into the
l1sap primitive (struct osmo_phsap_prim *l1sap)

Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
---
M src/osmo-bts-litecell15/l1_if.c
1 file changed, 3 insertions(+), 2 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index 71bb833..d6cffc9 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -901,7 +901,7 @@
 }
 
 static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
-   GsmL1_MeasParam_t *m)
+   GsmL1_MeasParam_t *m, uint32_t fn)
 {
struct osmo_phsap_prim l1sap;
memset(, 0, sizeof(l1sap));
@@ -912,6 +912,7 @@
l1sap.u.info.u.meas_ind.ta_offs_qbits = m->i16BurstTiming;
l1sap.u.info.u.meas_ind.ber10k = (unsigned int) (m->fBer * 100);
l1sap.u.info.u.meas_ind.inv_rssi = (uint8_t) (m->fRssi * -1);
+   l1sap.u.info.u.meas_ind.fn = fn;
 
/* l1sap wants to take msgb ownership.  However, as there is no
 * msg, it will msgb_free(l1sap.oph.msg == NULL) */
@@ -941,7 +942,7 @@
fn = data_ind->u32Fn;
link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
 
-   process_meas_res(trx, chan_nr, _ind->measParam);
+   process_meas_res(trx, chan_nr, _ind->measParam, fn);
 
if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
 && data_ind->msgUnitParam.u8Size != 0) {

-- 
To view, visit https://gerrit.osmocom.org/2861
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 


[MERGED] osmo-bts[master]: osmo-bts-trx: fix missing frame number in MEAS IND

2017-06-29 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: osmo-bts-trx: fix missing frame number in MEAS IND
..


osmo-bts-trx: fix missing frame number in MEAS IND

The layer 1 interface (l1_if.c) for osmo-bts-trx does not include
the frame number into the measurement indications it forwards
to higher layers. The frame number is required to properly
detect the end of a measurement period.

Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
---
M src/osmo-bts-trx/l1_if.c
M src/osmo-bts-trx/l1_if.h
2 files changed, 4 insertions(+), 3 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index a7bcd2c..3517787 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -528,7 +528,7 @@
 
 
 void l1if_fill_meas_res(struct osmo_phsap_prim *l1sap, uint8_t chan_nr, float 
ta,
-   float ber, float rssi)
+   float ber, float rssi, uint32_t fn)
 {
memset(l1sap, 0, sizeof(*l1sap));
osmo_prim_init(>oph, SAP_GSM_PH, PRIM_MPH_INFO,
@@ -538,6 +538,7 @@
l1sap->u.info.u.meas_ind.ta_offs_qbits = (int16_t)(ta*4);
l1sap->u.info.u.meas_ind.ber10k = (unsigned int) (ber * 1);
l1sap->u.info.u.meas_ind.inv_rssi = (uint8_t) (rssi * -1);
+   l1sap->u.info.u.meas_ind.fn = fn;
 }
 
 int l1if_process_meas_res(struct gsm_bts_trx *trx, uint8_t tn, uint32_t fn, 
uint8_t chan_nr,
@@ -553,7 +554,7 @@
gsm_lchan_name(lchan), fn, chan_nr, 
ms_pwr_dbm(lchan->ts->trx->bts->band, lchan->ms_power),
rssi, ber*100, n_errors, n_bits_total, lchan->meas.l1_info[1], 
lchan->rqd_ta, toa);
 
-   l1if_fill_meas_res(, chan_nr, lchan->rqd_ta + toa, ber, rssi);
+   l1if_fill_meas_res(, chan_nr, lchan->rqd_ta + toa, ber, rssi, fn);
 
return l1sap_up(trx, );
 }
diff --git a/src/osmo-bts-trx/l1_if.h b/src/osmo-bts-trx/l1_if.h
index 1864857..fdc40f2 100644
--- a/src/osmo-bts-trx/l1_if.h
+++ b/src/osmo-bts-trx/l1_if.h
@@ -69,7 +69,7 @@
 int l1if_provision_transceiver(struct gsm_bts *bts);
 int l1if_mph_time_ind(struct gsm_bts *bts, uint32_t fn);
 void l1if_fill_meas_res(struct osmo_phsap_prim *l1sap, uint8_t chan_nr, float 
ta,
-   float ber, float rssi);
+   float ber, float rssi, uint32_t fn);
 int l1if_process_meas_res(struct gsm_bts_trx *trx, uint8_t tn, uint32_t fn, 
uint8_t chan_nr,
int n_errors, int n_bits_total, float rssi, float toa);
 

-- 
To view, visit https://gerrit.osmocom.org/2813
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Neels Hofmeyr 


osmo-bts[master]: osmo-bts-trx: fix missing frame number in MEAS IND

2017-06-29 Thread Harald Welte

Patch Set 5: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/2813
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-HasComments: No


osmo-bts[master]: osmo-bts-litecell15: Fix missing frame number in MEAS IND

2017-06-29 Thread Harald Welte

Patch Set 5: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/2861
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-HasComments: No


osmo-trx[master]: Add '-t' command line option to enable SCHED_RR

2017-06-29 Thread Harald Welte

Patch Set 1:

Please see https://osmocom.org/issues/2344 for my test results.  With this 
patch (and associated '-t 1') I can sustain a load of >= 100 on the system 
running osmo-trx + osmo-bts.  Without the patch, it fails within seconds.

Hence my argument to even make it default, and to use a even "stronger" (lover 
numeric, higher conceptual) priority than osmo-bts. And make osmo-bts also use 
SCHED_RR unconditionally.

-- 
To view, visit https://gerrit.osmocom.org/3080
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou 
Gerrit-HasComments: No


osmo-trx[master]: Add '-t' command line option to enable SCHED_RR

2017-06-29 Thread Tom Tsou

Patch Set 1:

> I would actually vote for making SCHED_RR a default, preferrably
 > with an even higher priority (e.g. 10) than what we'd use as
 > osmo-bts-trx, as osmo-trx is even more important to schedule than
 > osmo-bts.  What do you guys think?

These settings can be very tricky. osmo-trx already sets SCHED_RR and 
priorities through the UHD priority interface. 

https://github.com/EttusResearch/uhd/blob/master/host/lib/utils/thread_priority.cpp

But, importantly, the current settings were added years ago to be independent 
of underlying UHD libusb threads - which may not be ideal. UHD maintains a 
separate internal thread for driving libusb asynchronous I/O. That thread is 
indirectly controlled by the priority level at the time of construction - which 
is main() in osmo-trx.

So this patch could perform better than the current priority settings. Does 
testing confirm that?

-- 
To view, visit https://gerrit.osmocom.org/3080
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou 
Gerrit-HasComments: No


osmo-trx[master]: LimeSDR: set approximate tx offset value to make GSM work

2017-06-29 Thread Tom Tsou

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3072
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ied215ca9e9d9c346c2a654f96785d1b87b075129
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou 
Gerrit-HasComments: No


[MERGED] osmo-trx[master]: LimeSDR: set approximate tx offset value to make GSM work

2017-06-29 Thread Tom Tsou
Tom Tsou has submitted this change and it was merged.

Change subject: LimeSDR: set approximate tx offset value to make GSM work
..


LimeSDR: set approximate tx offset value to make GSM work

may be fine-tuned in the future

Modified to match current master by Harald Welte.

Change-Id: Ied215ca9e9d9c346c2a654f96785d1b87b075129
---
M Transceiver52M/UHDDevice.cpp
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Tom Tsou: Looks good to me, approved
  Harald Welte: Looks good to me, but someone else must approve
  Jenkins Builder: Verified



diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp
index a766ddc..9ab96f6 100644
--- a/Transceiver52M/UHDDevice.cpp
+++ b/Transceiver52M/UHDDevice.cpp
@@ -130,7 +130,7 @@
{ std::make_tuple(UMTRX, 1, 1), { 2, 0.0,  GSMRATE, 9.9692e-5,  "UmTRX 
1 SPS"} },
{ std::make_tuple(UMTRX, 4, 1), { 2, 0.0,  GSMRATE, 7.3846e-5,  "UmTRX 
4/1 Tx/Rx SPS"} },
{ std::make_tuple(UMTRX, 4, 4), { 2, 0.0,  GSMRATE, 5.1503e-5,  "UmTRX 
4 SPS"} },
-   { std::make_tuple(LIMESDR, 4, 4), { 1, GSMRATE*32, GSMRATE, 
16.5/GSMRATE, "STREAM/LimeSDR (4 SPS TX/RX)" } },
+   { std::make_tuple(LIMESDR, 4, 4), { 1, GSMRATE*32, GSMRATE, 8.9e-5, 
"LimeSDR 4 SPS"  } },
{ std::make_tuple(B2XX_MCBTS, 4, 4), { 1, 51.2e6, MCBTS_SPACING*4, 
B2XX_TIMING_MCBTS, "B200/B210 4 SPS Multi-ARFCN" } },
 };
 

-- 
To view, visit https://gerrit.osmocom.org/3072
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ied215ca9e9d9c346c2a654f96785d1b87b075129
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou 


Build failure of network:osmocom:nightly/libosmocore in xUbuntu_17.04/x86_64

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/xUbuntu_17.04/x86_64

Package network:osmocom:nightly/libosmocore failed to build in 
xUbuntu_17.04/x86_64

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  212s] | 
[  212s] | This file was extended by libosmocore config.status 0.9.6.20170629, 
which was
[  212s] | generated by GNU Autoconf 2.69.  Invocation command line was
[  212s] | 
[  212s] |   CONFIG_FILES= 
[  212s] |   CONFIG_HEADERS  = 
[  212s] |   CONFIG_LINKS= 
[  212s] |   CONFIG_COMMANDS = 
[  212s] |   $ ./config.status Doxyfile.core
[  212s] | 
[  212s] | on build35
[  212s] | 
[  212s] | config.status:1171: creating Doxyfile.core
[  212s] 
[  212s] debian/rules:26: recipe for target 'override_dh_auto_test' failed
[  212s] make[1]: *** [override_dh_auto_test] Error 1
[  212s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  212s] debian/rules:15: recipe for target 'build' failed
[  212s] make: *** [build] Error 2
[  212s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  212s] 
[  212s] build35 failed "build libosmocore_0.9.6.20170629.dsc" at Thu Jun 29 
19:54:17 UTC 2017.
[  212s] 
[  212s] ### VM INTERACTION START ###
[  215s] [  196.479529] reboot: Power down
[  216s] ### VM INTERACTION END ###
[  216s] 
[  216s] build35 failed "build libosmocore_0.9.6.20170629.dsc" at Thu Jun 29 
19:54:22 UTC 2017.
[  216s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in xUbuntu_17.04/i586

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/xUbuntu_17.04/i586

Package network:osmocom:nightly/libosmocore failed to build in 
xUbuntu_17.04/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  223s] | 
[  223s] | This file was extended by libosmocore config.status 0.9.6.20170629, 
which was
[  223s] | generated by GNU Autoconf 2.69.  Invocation command line was
[  223s] | 
[  223s] |   CONFIG_FILES= 
[  223s] |   CONFIG_HEADERS  = 
[  223s] |   CONFIG_LINKS= 
[  223s] |   CONFIG_COMMANDS = 
[  223s] |   $ ./config.status Doxyfile.core
[  223s] | 
[  223s] | on cumulus2
[  223s] | 
[  223s] | config.status:1171: creating Doxyfile.core
[  223s] 
[  223s] debian/rules:26: recipe for target 'override_dh_auto_test' failed
[  223s] make[1]: *** [override_dh_auto_test] Error 1
[  223s] make[1]: Leaving directory '/usr/src/packages/BUILD'
[  223s] debian/rules:15: recipe for target 'build' failed
[  223s] make: *** [build] Error 2
[  223s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[  223s] 
[  223s] cumulus2 failed "build libosmocore_0.9.6.20170629.dsc" at Thu Jun 29 
19:54:22 UTC 2017.
[  223s] 
[  223s] ### VM INTERACTION START ###
[  226s] [  206.600870] reboot: Power down
[  226s] ### VM INTERACTION END ###
[  226s] 
[  226s] cumulus2 failed "build libosmocore_0.9.6.20170629.dsc" at Thu Jun 29 
19:54:26 UTC 2017.
[  226s] 

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


[PATCH] libosmocore[master]: BSSGP: add function to reset all PTP BVC

2017-06-29 Thread Max
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3088

to look at the new patch set (#2).

BSSGP: add function to reset all PTP BVC

Change-Id: I9bf8f4dd784ccddbb9926492a85fff3293a0e913
Related: OS#1638
---
M include/osmocom/gprs/gprs_bssgp_bss.h
M src/gb/gprs_bssgp.c
M src/gb/libosmogb.map
3 files changed, 28 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/88/3088/2

diff --git a/include/osmocom/gprs/gprs_bssgp_bss.h 
b/include/osmocom/gprs/gprs_bssgp_bss.h
index 9374e73..74211fd 100644
--- a/include/osmocom/gprs/gprs_bssgp_bss.h
+++ b/include/osmocom/gprs/gprs_bssgp_bss.h
@@ -26,7 +26,7 @@
 #include 
 
 uint8_t *bssgp_msgb_tlli_put(struct msgb *msg, uint32_t tlli);
-
+int bssgp_tx_bvc_ptp_reset(uint16_t nsei, enum gprs_bssgp_cause cause);
 int bssgp_tx_suspend(uint16_t nsei, uint32_t tlli,
 const struct gprs_ra_id *ra_id);
 
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 8daf39f..2552849 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -35,6 +35,7 @@
 #include 
 
 #include 
+#include 
 #include 
 
 #include "common_vty.h"
@@ -77,6 +78,31 @@
return NULL;
 }
 
+/*! Initiate reset procedure for all PTP BVC on a given NSEI.
+ *
+ *  This function initiates reset procedure for all PTP BVC with a given cause.
+ *  \param[in] nsei NSEI to which PTP BVC should belong to
+ *  \param[in] cause Cause of BVC RESET
+ *  \returns 0 on success, negative error code otherwise
+ */
+int bssgp_tx_bvc_ptp_reset(uint16_t nsei, enum gprs_bssgp_cause cause)
+{
+   int rc;
+   struct bssgp_bvc_ctx *bctx;
+
+   llist_for_each_entry(bctx, _bvc_ctxts, list) {
+   if (bctx->nsei == nsei && bctx->bvci != BVCI_SIGNALLING) {
+   LOGP(DBSSGP, LOGL_DEBUG, "NSEI=%u/BVCI=%u RESET due to 
%s\n",
+nsei, bctx->bvci, bssgp_cause_str(cause));
+   rc = bssgp_tx_bvc_reset(bctx, bctx->bvci, cause);
+   if (rc < 0)
+   return rc;
+   }
+   }
+
+   return 0;
+}
+
 /* Find a BTS context based on BVCI+NSEI tuple */
 struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei)
 {
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index 6aad8fd..9a0dba5 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -34,6 +34,7 @@
 bssgp_rx_paging;
 bssgp_set_log_ss;
 bssgp_tx_dl_ud;
+bssgp_tx_bvc_ptp_reset;
 bssgp_tx_paging;
 bssgp_vty_init;
 bssgp_nsi;

-- 
To view, visit https://gerrit.osmocom.org/3088
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I9bf8f4dd784ccddbb9926492a85fff3293a0e913
Gerrit-PatchSet: 2
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Max 
Gerrit-Reviewer: Jenkins Builder


osmo-bts[master]: l1sap.c: fn_ms_adj: Add err logging and always return GSM_RT...

2017-06-29 Thread Max

Patch Set 1:

Have it been tested with DTX active?

-- 
To view, visit https://gerrit.osmocom.org/3084
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I9d112c6db142be138e71393e77129e6d069d9973
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-HasComments: No


[PATCH] osmo-pcu[master]: BSSGP: Use libosmocore for BVC-RESET

2017-06-29 Thread Max

Review at  https://gerrit.osmocom.org/3089

BSSGP: Use libosmocore for BVC-RESET

Implement proper BVC RESET procedure by using libosmocore code to handle
BVCI reset and initiate PTP BVC reset if necessary.

Related: OS#1638
Change-Id: I718c949759688cb34ce6bcbb3da2092fcdfa6989
---
M src/gprs_bssgp_pcu.cpp
1 file changed, 22 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/89/3089/1

diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp
index d3c8491..437479b 100644
--- a/src/gprs_bssgp_pcu.cpp
+++ b/src/gprs_bssgp_pcu.cpp
@@ -325,14 +325,15 @@
struct bssgp_ud_hdr *budh = (struct bssgp_ud_hdr *) msgb_bssgph(msg);
struct tlv_parsed tp;
enum bssgp_pdu_type pdu_type = (enum bssgp_pdu_type) bgph->pdu_type;
-   uint16_t ns_bvci = msgb_bvci(msg);
+   enum gprs_bssgp_cause cause = BSSGP_CAUSE_OML_INTERV;
+   uint16_t ns_bvci = msgb_bvci(msg), nsei = msgb_nsei(msg);
int data_len;
int rc = 0;
struct bssgp_bvc_ctx *bctx;
 
if (pdu_type == BSSGP_PDUT_STATUS)
/* Pass the message to the generic BSSGP parser, which handles
-* STATUS message in either direction. */
+* STATUS and RESET messages in either direction. */
return bssgp_rcvmsg(msg);
 
/* Identifiers from DOWN: NSEI, BVCI (both in msg->cb) */
@@ -349,6 +350,23 @@
rc = bssgp_tlv_parse(, budh->data, data_len);
}
 
+   if (pdu_type == BSSGP_PDUT_BVC_RESET) {
+   rc = bssgp_rcvmsg(msg);
+   if (ns_bvci != BVCI_SIGNALLING)
+   return rc;
+
+   if (TLVP_PRES_LEN(, BSSGP_IE_CAUSE, 1))
+   cause = (enum gprs_bssgp_cause)*TLVP_VAL(, 
BSSGP_IE_CAUSE);
+   else
+   LOGP(DBSSGP, LOGL_ERROR, "NSEI=%u BVC RESET without 
cause?!\n", nsei);
+
+   rc = bssgp_tx_bvc_ptp_reset(nsei, cause);
+   if (rc < 0)
+   LOGP(DBSSGP, LOGL_ERROR, "NSEI=%u BVC PTP reset 
procedure failed: %d\n", nsei, rc);
+
+   return rc;
+   }
+
/* look-up or create the BTS context for this BVC */
bctx = btsctx_by_bvci_nsei(ns_bvci, msgb_nsei(msg));
 
@@ -357,9 +375,8 @@
 && pdu_type != BSSGP_PDUT_BVC_UNBLOCK_ACK
 && pdu_type != BSSGP_PDUT_PAGING_PS)
{
-   LOGP(DBSSGP, LOGL_NOTICE, "NSEI=%u/BVCI=%u Rejecting PDU "
-   "type %s for unknown BVCI\n", msgb_nsei(msg), ns_bvci,
-   bssgp_pdu_str(pdu_type));
+   LOGP(DBSSGP, LOGL_NOTICE, "NSEI=%u/BVCI=%u Rejecting PDU type 
%s for unknown BVCI\n",
+nsei, ns_bvci, bssgp_pdu_str(pdu_type));
return bssgp_tx_status(BSSGP_CAUSE_UNKNOWN_BVCI, NULL, msg);
}
 

-- 
To view, visit https://gerrit.osmocom.org/3089
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I718c949759688cb34ce6bcbb3da2092fcdfa6989
Gerrit-PatchSet: 1
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max 


[PATCH] libosmocore[master]: BSSGP: add function to reset all PTP BVC

2017-06-29 Thread Max

Review at  https://gerrit.osmocom.org/3088

BSSGP: add function to reset all PTP BVC

Change-Id: I9bf8f4dd784ccddbb9926492a85fff3293a0e913
Related: OS#1638
---
M include/osmocom/gprs/gprs_bssgp_bss.h
M src/gb/gprs_bssgp.c
M src/gb/libosmogb.map
3 files changed, 27 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/88/3088/1

diff --git a/include/osmocom/gprs/gprs_bssgp_bss.h 
b/include/osmocom/gprs/gprs_bssgp_bss.h
index 9374e73..74211fd 100644
--- a/include/osmocom/gprs/gprs_bssgp_bss.h
+++ b/include/osmocom/gprs/gprs_bssgp_bss.h
@@ -26,7 +26,7 @@
 #include 
 
 uint8_t *bssgp_msgb_tlli_put(struct msgb *msg, uint32_t tlli);
-
+int bssgp_tx_bvc_ptp_reset(uint16_t nsei, enum gprs_bssgp_cause cause);
 int bssgp_tx_suspend(uint16_t nsei, uint32_t tlli,
 const struct gprs_ra_id *ra_id);
 
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index 8daf39f..92cd5ad 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -77,6 +77,31 @@
return NULL;
 }
 
+/*! Initiate reset procedure for all PTP BVC on a given NSEI.
+ *
+ *  This function initiates reset procedure for all PTP BVC with a given cause.
+ *  \param[in] nsei NSEI to which PTP BVC should belong to
+ *  \param[in] cause Cause of BVC RESET
+ *  \returns 0 on success, negative error code otherwise
+ */
+int bssgp_tx_bvc_ptp_reset(uint16_t nsei, enum gprs_bssgp_cause cause)
+{
+   int rc;
+   struct bssgp_bvc_ctx *bctx;
+
+   llist_for_each_entry(bctx, _bvc_ctxts, list) {
+   if (bctx->nsei == nsei && bctx->bvci != BVCI_SIGNALLING) {
+   LOGP(DBSSGP, LOGL_DEBUG, "NSEI=%u/BVCI=%u RESET due to 
%s\n",
+nsei, bctx->bvci, bssgp_cause_str(cause));
+   rc = bssgp_tx_bvc_reset(bctx, bctx->bvci, cause);
+   if (rc < 0)
+   return rc;
+   }
+   }
+
+   return 0;
+}
+
 /* Find a BTS context based on BVCI+NSEI tuple */
 struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei)
 {
diff --git a/src/gb/libosmogb.map b/src/gb/libosmogb.map
index 6aad8fd..9a0dba5 100644
--- a/src/gb/libosmogb.map
+++ b/src/gb/libosmogb.map
@@ -34,6 +34,7 @@
 bssgp_rx_paging;
 bssgp_set_log_ss;
 bssgp_tx_dl_ud;
+bssgp_tx_bvc_ptp_reset;
 bssgp_tx_paging;
 bssgp_vty_init;
 bssgp_nsi;

-- 
To view, visit https://gerrit.osmocom.org/3088
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9bf8f4dd784ccddbb9926492a85fff3293a0e913
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Max 


[PATCH] libosmo-sccp[master]: sccp_helpers.h: remove duplicate declaration of osmo_sccp_ma...

2017-06-29 Thread Neels Hofmeyr

Review at  https://gerrit.osmocom.org/3086

sccp_helpers.h: remove duplicate declaration of osmo_sccp_make_addr_pc_ssn()

Change-Id: Ifbb03de3df3b9bac86fb97dfc8e81e99fc172292
---
M include/osmocom/sigtran/sccp_helpers.h
1 file changed, 0 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/86/3086/1

diff --git a/include/osmocom/sigtran/sccp_helpers.h 
b/include/osmocom/sigtran/sccp_helpers.h
index bbd0364..ecf583e 100644
--- a/include/osmocom/sigtran/sccp_helpers.h
+++ b/include/osmocom/sigtran/sccp_helpers.h
@@ -4,8 +4,6 @@
 #include 
 #include 
 
-void osmo_sccp_make_addr_pc_ssn(struct osmo_sccp_addr *addr, uint32_t pc, 
uint32_t ssn);
-
 int osmo_sccp_tx_unitdata(struct osmo_sccp_user *scu,
  const struct osmo_sccp_addr *calling_addr,
  const struct osmo_sccp_addr *called_addr,

-- 
To view, visit https://gerrit.osmocom.org/3086
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifbb03de3df3b9bac86fb97dfc8e81e99fc172292
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 


libosmo-sccp[master]: fix compiler warning: xua_test: hexdump pointer type

2017-06-29 Thread Neels Hofmeyr

Patch Set 2: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3030
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Iab5529f6919fd22902a8b39e8a52079f08deb851
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


[MERGED] libosmo-sccp[master]: fix compiler warning: xua_test: hexdump pointer type

2017-06-29 Thread Neels Hofmeyr
Neels Hofmeyr has submitted this change and it was merged.

Change subject: fix compiler warning: xua_test: hexdump pointer type
..


fix compiler warning: xua_test: hexdump pointer type

Was recently introduced by a70b4599f63b50c4d654eb9e1b1a099a7c8cdc36.

Change-Id: Iab5529f6919fd22902a8b39e8a52079f08deb851
---
M tests/xua/xua_test.c
1 file changed, 2 insertions(+), 2 deletions(-)

Approvals:
  Pau Espin Pedrol: Looks good to me, but someone else must approve
  Neels Hofmeyr: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/tests/xua/xua_test.c b/tests/xua/xua_test.c
index 4af0836..c496cc4 100644
--- a/tests/xua/xua_test.c
+++ b/tests/xua/xua_test.c
@@ -155,7 +155,7 @@
 
printf("Testing Decoded GT -> SUA encoding\n");
printf("IN: %s\n", osmo_sccp_gt_dump(gt_in));
-   printf("%s\n", osmo_hexdump_nospc(gt_in, sizeof(struct 
osmo_sccp_gt)));
+   printf("%s\n", osmo_hexdump_nospc((const unsigned char*)gt_in, 
sizeof(struct osmo_sccp_gt)));
 
/* encode sccp_addr to SUA GT */
xua_part_add_gt(msg, gt_in);
@@ -168,7 +168,7 @@
/* parse + compare */
sua_parse_gt(_out, msgb_data(msg), msgb_length(msg));
printf("OUT:%s\n", osmo_sccp_gt_dump(_out));
-   printf("%s\n", osmo_hexdump_nospc(_out, sizeof(struct 
osmo_sccp_gt)));
+   printf("%s\n", osmo_hexdump_nospc((const unsigned char*)_out, 
sizeof(struct osmo_sccp_gt)));
OSMO_ASSERT(!memcmp(gt_in, _out, sizeof(gt_out)));
 
msgb_free(msg);

-- 
To view, visit https://gerrit.osmocom.org/3030
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iab5529f6919fd22902a8b39e8a52079f08deb851
Gerrit-PatchSet: 3
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pau Espin Pedrol 


[PATCH] osmo-gsm-tester[master]: jenkins: build msc using libosmo-sccp master

2017-06-29 Thread Neels Hofmeyr

Review at  https://gerrit.osmocom.org/3085

jenkins: build msc using libosmo-sccp master

Since 81c0bcab068174036f6897e69311f413d94c74d4 was merged, it is not necessary
to build the neels/aoip branch anymore. Other patches on that branch are not
necessary either.

Change-Id: I850e0dd2fc61d59d56c0dd69ee00b6e19685fb95
---
M contrib/jenkins-build-osmo-msc.sh
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/85/3085/1

diff --git a/contrib/jenkins-build-osmo-msc.sh 
b/contrib/jenkins-build-osmo-msc.sh
index 53a23fe..f9710c0 100755
--- a/contrib/jenkins-build-osmo-msc.sh
+++ b/contrib/jenkins-build-osmo-msc.sh
@@ -9,7 +9,7 @@
 build_repo libosmo-netif
 build_repo openggsn
 build_repo libsmpp34
-build_repo libosmo-sccp neels/aoip # TEMPORARY BRANCH
+build_repo libosmo-sccp
 build_repo libasn1c
 build_repo osmo-iuh neels/sigtran # TEMPORARY BRANCH
 build_repo openbsc aoip --enable-smpp --enable-osmo-bsc --enable-nat 
--enable-iu

-- 
To view, visit https://gerrit.osmocom.org/3085
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I850e0dd2fc61d59d56c0dd69ee00b6e19685fb95
Gerrit-PatchSet: 1
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 


[PATCH] osmo-bts[master]: l1sap.c: fn_ms_adj: Add err logging and always return GSM_RT...

2017-06-29 Thread Pau Espin Pedrol

Review at  https://gerrit.osmocom.org/3084

l1sap.c: fn_ms_adj: Add err logging and always return GSM_RTP_DURATION

After latest changes, l2 expects to receive an event for every TCH
frame, that is, no TCH frame event should be lost on that layer. We
should now then be safe returning always GSM_RTP_DURATION.

The code which used to calculate the variable duration is left there to
assert that indeed we are not longer having this kind of issues.

Change-Id: I9d112c6db142be138e71393e77129e6d069d9973
---
M src/common/l1sap.c
1 file changed, 3 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/84/3084/1

diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 80fafb8..a2aef9f 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -77,10 +77,6 @@
 {
uint32_t samples_passed, r;
 
-   /* don't adjust duration when DTX is not enabled */
-   if (lchan->ts->trx->bts->dtxu == GSM48_DTX_SHALL_NOT_BE_USED)
-   return GSM_RTP_DURATION;
-
if (lchan->tch.last_fn != LCHAN_FN_DUMMY) {
/* 12/13 frames usable for audio in TCH,
   160 samples per RTP packet,
@@ -90,7 +86,9 @@
   GSM_RTP_DURATION */
r = samples_passed + GSM_RTP_DURATION / 2;
r -= r % GSM_RTP_DURATION;
-   return r;
+
+   if (r != GSM_RTP_DURATION)
+   LOGP(DL1P, LOGL_ERROR, "RTP clock out of sync with 
lower layer!\n");
}
return GSM_RTP_DURATION;
 }

-- 
To view, visit https://gerrit.osmocom.org/3084
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9d112c6db142be138e71393e77129e6d069d9973
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 


[PATCH] libosmo-abis[master]: osmo_ortp.c: Duration of a RTP frame affects timestamp of th...

2017-06-29 Thread Pau Espin Pedrol

Review at  https://gerrit.osmocom.org/3083

osmo_ortp.c: Duration of a RTP frame affects timestamp of the next one

Duration of an RTP frames dictates the timestamp used for the next
frame, not for the one being sent now. It was done like this before to
account for possible losses.
Implementation wise, the duration was understood as "duration
between last frame was sent and now when current one is sent". It makes
more sense to use it as the duration in number of sampling ticks
as described on the function documentation, specially now that we can
account for extra time by means of osmo_rtp_skipped_frame.

Change-Id: Ib8f5fa5509059fe908c09a4381844c613d478548
---
M src/trau/osmo_ortp.c
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/83/3083/1

diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index c9480ff..c49a23d 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -496,9 +496,9 @@
return -ENOMEM;
 
rtp_set_markbit(mblk, marker);
-   rs->tx_timestamp += duration;
rc = rtp_session_sendm_with_ts(rs->sess, mblk,
   rs->tx_timestamp);
+   rs->tx_timestamp += duration;
if (rc < 0) {
/* no need to free() the mblk, as rtp_session_rtp_send()
 * unconditionally free()s the mblk even in case of

-- 
To view, visit https://gerrit.osmocom.org/3083
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib8f5fa5509059fe908c09a4381844c613d478548
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 


[PATCH] osmo-bts[master]: osmo-bts-litecell15: Fix missing frame number in MEAS IND

2017-06-29 Thread dexter
Hello Max, Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/2861

to look at the new patch set (#5).

osmo-bts-litecell15: Fix missing frame number in MEAS IND

The layer 1 interface (l1_if.c) for osmo-bts-litecell15 does not include
the frame number into the measurement indications it forwards
to higher layers. The frame number is required to properly
detect the end of a measurement period.

change process_meas_res() to properly include the frame number into the
l1sap primitive (struct osmo_phsap_prim *l1sap)

Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
---
M src/osmo-bts-litecell15/l1_if.c
1 file changed, 3 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/61/2861/5

diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index 71bb833..d6cffc9 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -901,7 +901,7 @@
 }
 
 static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
-   GsmL1_MeasParam_t *m)
+   GsmL1_MeasParam_t *m, uint32_t fn)
 {
struct osmo_phsap_prim l1sap;
memset(, 0, sizeof(l1sap));
@@ -912,6 +912,7 @@
l1sap.u.info.u.meas_ind.ta_offs_qbits = m->i16BurstTiming;
l1sap.u.info.u.meas_ind.ber10k = (unsigned int) (m->fBer * 100);
l1sap.u.info.u.meas_ind.inv_rssi = (uint8_t) (m->fRssi * -1);
+   l1sap.u.info.u.meas_ind.fn = fn;
 
/* l1sap wants to take msgb ownership.  However, as there is no
 * msg, it will msgb_free(l1sap.oph.msg == NULL) */
@@ -941,7 +942,7 @@
fn = data_ind->u32Fn;
link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
 
-   process_meas_res(trx, chan_nr, _ind->measParam);
+   process_meas_res(trx, chan_nr, _ind->measParam, fn);
 
if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
 && data_ind->msgUnitParam.u8Size != 0) {

-- 
To view, visit https://gerrit.osmocom.org/2861
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 


[PATCH] osmo-bts[master]: osmo-bts-trx: fix missing frame number in MEAS IND

2017-06-29 Thread dexter
Hello Max, Neels Hofmeyr, Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/2813

to look at the new patch set (#5).

osmo-bts-trx: fix missing frame number in MEAS IND

The layer 1 interface (l1_if.c) for osmo-bts-trx does not include
the frame number into the measurement indications it forwards
to higher layers. The frame number is required to properly
detect the end of a measurement period.

Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
---
M src/osmo-bts-trx/l1_if.c
M src/osmo-bts-trx/l1_if.h
2 files changed, 4 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/13/2813/5

diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index a7bcd2c..3517787 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -528,7 +528,7 @@
 
 
 void l1if_fill_meas_res(struct osmo_phsap_prim *l1sap, uint8_t chan_nr, float 
ta,
-   float ber, float rssi)
+   float ber, float rssi, uint32_t fn)
 {
memset(l1sap, 0, sizeof(*l1sap));
osmo_prim_init(>oph, SAP_GSM_PH, PRIM_MPH_INFO,
@@ -538,6 +538,7 @@
l1sap->u.info.u.meas_ind.ta_offs_qbits = (int16_t)(ta*4);
l1sap->u.info.u.meas_ind.ber10k = (unsigned int) (ber * 1);
l1sap->u.info.u.meas_ind.inv_rssi = (uint8_t) (rssi * -1);
+   l1sap->u.info.u.meas_ind.fn = fn;
 }
 
 int l1if_process_meas_res(struct gsm_bts_trx *trx, uint8_t tn, uint32_t fn, 
uint8_t chan_nr,
@@ -553,7 +554,7 @@
gsm_lchan_name(lchan), fn, chan_nr, 
ms_pwr_dbm(lchan->ts->trx->bts->band, lchan->ms_power),
rssi, ber*100, n_errors, n_bits_total, lchan->meas.l1_info[1], 
lchan->rqd_ta, toa);
 
-   l1if_fill_meas_res(, chan_nr, lchan->rqd_ta + toa, ber, rssi);
+   l1if_fill_meas_res(, chan_nr, lchan->rqd_ta + toa, ber, rssi, fn);
 
return l1sap_up(trx, );
 }
diff --git a/src/osmo-bts-trx/l1_if.h b/src/osmo-bts-trx/l1_if.h
index 1864857..fdc40f2 100644
--- a/src/osmo-bts-trx/l1_if.h
+++ b/src/osmo-bts-trx/l1_if.h
@@ -69,7 +69,7 @@
 int l1if_provision_transceiver(struct gsm_bts *bts);
 int l1if_mph_time_ind(struct gsm_bts *bts, uint32_t fn);
 void l1if_fill_meas_res(struct osmo_phsap_prim *l1sap, uint8_t chan_nr, float 
ta,
-   float ber, float rssi);
+   float ber, float rssi, uint32_t fn);
 int l1if_process_meas_res(struct gsm_bts_trx *trx, uint8_t tn, uint32_t fn, 
uint8_t chan_nr,
int n_errors, int n_bits_total, float rssi, float toa);
 

-- 
To view, visit https://gerrit.osmocom.org/2813
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Neels Hofmeyr 


osmo-bts[master]: l1sap: Don't enqueue PTCCH blocks for loopback

2017-06-29 Thread Max

Patch Set 1: Code-Review+1

-- 
To view, visit https://gerrit.osmocom.org/3081
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I7ef40d9bdf74a99375bc6568ed9483499664bf6f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-HasComments: No


[PATCH] osmo-bts[master]: l1sap.c: Avoid sending RTP frame with empty payload

2017-06-29 Thread Pau Espin Pedrol
Hello Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3071

to look at the new patch set (#4).

l1sap.c: Avoid sending RTP frame with empty payload

Depends on libosmo-abis Id6099372b6231c0a4b6ea0716f46f5daee7049e1

Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
---
M src/common/l1sap.c
1 file changed, 24 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/71/3071/4

diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 1fb6134..80fafb8 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -1011,22 +1011,32 @@
 
msgb_pull(msg, sizeof(*l1sap));
 
-   /* hand msg to RTP code for transmission */
-   if (lchan->abis_ip.rtp_socket)
-   osmo_rtp_send_frame_ext(lchan->abis_ip.rtp_socket,
-   msg->data, msg->len, fn_ms_adj(fn, lchan), 
lchan->rtp_tx_marker);
-
-   /* if loopback is enabled, also queue received RTP data */
-   if (lchan->loopback) {
-   /* make sure the queue doesn't get too long */
-   queue_limit_to(gsm_lchan_name(lchan), >dl_tch_queue, 1);
-   /* add new frame to queue */
-   msgb_enqueue(>dl_tch_queue, msg);
-   /* Return 1 to signal that we're still using msg and it should 
not be freed */
-   return 1;
+   /* Low level layers always call us when TCH content is expected to be
+* available, even if the content is not available due to decoding
+* issues. Content not available is expected as empty payload. */
+   if (msg->len) {
+   /* hand msg to RTP code for transmission */
+   if (lchan->abis_ip.rtp_socket)
+   osmo_rtp_send_frame_ext(lchan->abis_ip.rtp_socket,
+   msg->data, msg->len, fn_ms_adj(fn, lchan), 
lchan->rtp_tx_marker);
+   /* if loopback is enabled, also queue received RTP data */
+   if (lchan->loopback) {
+   /* make sure the queue doesn't get too long */
+   queue_limit_to(gsm_lchan_name(lchan), 
>dl_tch_queue, 1);
+   /* add new frame to queue */
+   msgb_enqueue(>dl_tch_queue, msg);
+   /* Return 1 to signal that we're still using msg and it 
should not be freed */
+   return 1;
+   }
+   /* Only clear the marker bit once we have sent a RTP packet 
with it */
+   lchan->rtp_tx_marker = false;
+   } else {
+   DEBUGP(DL1P, "Skipping RTP frame with lost payload\n");
+   if (lchan->abis_ip.rtp_socket)
+   osmo_rtp_skipped_frame(lchan->abis_ip.rtp_socket, 
fn_ms_adj(fn, lchan));
+   lchan->rtp_tx_marker = true;
}
 
-   lchan->rtp_tx_marker = false;
lchan->tch.last_fn = fn;
return 0;
 }

-- 
To view, visit https://gerrit.osmocom.org/3071
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
Gerrit-PatchSet: 4
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder


[PATCH] libosmo-abis[master]: osmo_ortp: Add osmo_rtp_drop_frame API

2017-06-29 Thread Pau Espin Pedrol
Hello Max, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3070

to look at the new patch set (#3).

osmo_ortp: Add osmo_rtp_drop_frame API

This API will be used by osmo-bts to maintain the sampling clock of the
RTP socket whenever a frame should be sent but it is not available, for
instance due to low quality of signal.

Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
---
M include/osmocom/trau/osmo_ortp.h
M src/trau/osmo_ortp.c
2 files changed, 23 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/70/3070/3

diff --git a/include/osmocom/trau/osmo_ortp.h b/include/osmocom/trau/osmo_ortp.h
index 9eb176f..578b1cb 100644
--- a/include/osmocom/trau/osmo_ortp.h
+++ b/include/osmocom/trau/osmo_ortp.h
@@ -76,6 +76,7 @@
 int osmo_rtp_socket_connect(struct osmo_rtp_socket *rs, const char *ip, 
uint16_t port);
 int osmo_rtp_socket_set_pt(struct osmo_rtp_socket *rs, int payload_type);
 int osmo_rtp_socket_free(struct osmo_rtp_socket *rs);
+int osmo_rtp_skipped_frame(struct osmo_rtp_socket *rs, unsigned int duration);
 int osmo_rtp_send_frame(struct osmo_rtp_socket *rs, const uint8_t *payload,
unsigned int payload_len, unsigned int duration);
 int osmo_rtp_send_frame_ext(struct osmo_rtp_socket *rs, const uint8_t *payload,
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index b2ee040..c9480ff 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -436,6 +436,28 @@
return osmo_rtp_socket_fdreg(rs);
 }
 
+/*! \brief Increment timestamp on a RTP socket without sending any packet
+ *  \param[in] rs OsmoRTP socket
+ *  \param[in] duration duration in number of RTP clock ticks
+ *
+ * Useful to keep the RTP internal clock up to date if an RTP frame should be
+ * send at a given time but no audio content is available. When next packet is
+ * sent, the receiver will see a different increase on the sequence number and
+ * the timestamp, and it should then take it as a synchronization point. For
+ * that same reason, it is advisable to enable the marker bit on the next RTP
+ * packet to be sent after calling this function.
+ *
+ *  \returns 0 on success, <0 in case of error.
+ */
+int osmo_rtp_skipped_frame(struct osmo_rtp_socket *rs, unsigned int duration)
+{
+   if (rs->flags & OSMO_RTP_F_DISABLED)
+   return 0;
+
+   rs->tx_timestamp += duration;
+   return 0;
+}
+
 /*! \brief Send one RTP frame via a RTP socket
  *  \param[in] rs OsmoRTP socket
  *  \param[in] payload pointer to buffer with RTP payload data

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 3
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 


osmo-bts[master]: TRX: permit transmission of all-zero loopback frames

2017-06-29 Thread Harald Welte

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3082
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I6388de98e4a7e20843a1be88a58bba8d2c9aa0d5
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-HasComments: No


[PATCH] osmo-bts[master]: TRX: permit transmission of all-zero loopback frames

2017-06-29 Thread Harald Welte

Review at  https://gerrit.osmocom.org/3082

TRX: permit transmission of all-zero loopback frames

For some reason, osmo-bts-trx attempted to interpret/validate the
contents of the downlink TCH block that it was about to transmit.  If
such checks are made, they should clearly be in the common part above
L1SAP, and not in the bts-model specific part.

Also, having the checks in place didn't allow us to send an all-zero
downlink block, as is required for detection of uplink FER in a loopback
testing setup, e.g. with CMU-300.

Change-Id: I6388de98e4a7e20843a1be88a58bba8d2c9aa0d5
---
M src/osmo-bts-trx/scheduler_trx.c
1 file changed, 5 insertions(+), 30 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/82/3082/1

diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c
index a9bcbda..4c3330f 100644
--- a/src/osmo-bts-trx/scheduler_trx.c
+++ b/src/osmo-bts-trx/scheduler_trx.c
@@ -471,42 +471,15 @@
 
switch (tch_mode) {
case GSM48_CMODE_SPEECH_V1: /* FR / HR */
-   if (chan != TRXC_TCHF) { /* HR */
+   if (chan != TRXC_TCHF) /* HR */
len = 15;
-   if (msgb_l2len(msg_tch) >= 1
-&& (msg_tch->l2h[0] & 0xf0) != 0x00) {
-   LOGP(DL1C, LOGL_NOTICE, "%s "
-   "Transmitting 'bad "
-   "HR frame' trx=%u ts=%u at "
-   "fn=%u.\n",
-   trx_chan_desc[chan].name,
-   l1t->trx->nr, tn, fn);
-   goto free_bad_msg;
-   }
-   break;
-   }
-   len = GSM_FR_BYTES;
-   if (msgb_l2len(msg_tch) >= 1
-&& (msg_tch->l2h[0] >> 4) != 0xd) {
-   LOGP(DL1C, LOGL_NOTICE, "%s Transmitting 'bad "
-   "FR frame' trx=%u ts=%u at fn=%u.\n",
-   trx_chan_desc[chan].name,
-   l1t->trx->nr, tn, fn);
-   goto free_bad_msg;
-   }
+   else
+   len = GSM_FR_BYTES;
break;
case GSM48_CMODE_SPEECH_EFR: /* EFR */
if (chan != TRXC_TCHF)
goto inval_mode2;
len = GSM_EFR_BYTES;
-   if (msgb_l2len(msg_tch) >= 1
-&& (msg_tch->l2h[0] >> 4) != 0xc) {
-   LOGP(DL1C, LOGL_NOTICE, "%s Transmitting 'bad "
-   "EFR frame' trx=%u ts=%u at fn=%u.\n",
-   trx_chan_desc[chan].name,
-   l1t->trx->nr, tn, fn);
-   goto free_bad_msg;
-   }
break;
case GSM48_CMODE_SPEECH_AMR: /* AMR */
len = osmo_amr_rtp_dec(msg_tch->l2h, 
msgb_l2len(msg_tch),
@@ -1146,10 +1119,12 @@
if (lchan->tch.dtx.ul_sid)
return 0; /* DTXu: pause in progress */
memset(tch_data, 0, GSM_FR_BYTES);
+   tch_data[0] = 0xd0;
rc = GSM_FR_BYTES;
break;
case GSM48_CMODE_SPEECH_EFR: /* EFR */
memset(tch_data, 0, GSM_EFR_BYTES);
+   tch_data[0] = 0xc0;
rc = GSM_EFR_BYTES;
break;
case GSM48_CMODE_SPEECH_AMR: /* AMR */

-- 
To view, visit https://gerrit.osmocom.org/3082
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6388de98e4a7e20843a1be88a58bba8d2c9aa0d5
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 


osmo-bts[master]: osmo-bts-litecell15: Fix missing frame number in MEAS IND

2017-06-29 Thread dexter
dexter has restored this change.

Change subject: osmo-bts-litecell15: Fix missing frame number in MEAS IND
..


Restored

-- 
To view, visit https://gerrit.osmocom.org/2861
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: restore
Gerrit-Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
Gerrit-PatchSet: 4
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 


[MERGED] libosmo-sccp[master]: Revert "SCOC: When sending a CORE/CR, SUA SRC_ADDR == Callin...

2017-06-29 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: Revert "SCOC: When sending a CORE/CR, SUA SRC_ADDR == 
CallingPartyAddress"
..


Revert "SCOC: When sending a CORE/CR, SUA SRC_ADDR == CallingPartyAddress"

This reverts commit 5527df78adc08b76df07c4b682263b5bdd6181d4.

I tried some time to figure out what other changes are needed to make this
commit work and fix a confusion, until I noticed:

The commit's *log message* is correct that SRC == calling, but the *patch*
modifies callED addr to be the SRC, which is wrong. So reverting this commit is
indeed the correct way to fix our addresses.

Change-Id: Ic76aacc81f87f8885fe04121aead5c79a761ef07
---
M src/sccp_scoc.c
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/sccp_scoc.c b/src/sccp_scoc.c
index 9502953..628b63b 100644
--- a/src/sccp_scoc.c
+++ b/src/sccp_scoc.c
@@ -483,7 +483,7 @@
xua_msg_add_u32(xua, SUA_IEI_ROUTE_CTX, conn->inst->route_ctx);
xua_msg_add_u32(xua, SUA_IEI_PROTO_CLASS, conn->sccp_class);
xua_msg_add_u32(xua, SUA_IEI_SRC_REF, conn->conn_id);
-   xua_msg_add_sccp_addr(xua, SUA_IEI_SRC_ADDR, 
>called_addr);
+   xua_msg_add_sccp_addr(xua, SUA_IEI_DEST_ADDR, 
>called_addr);
xua_msg_add_u32(xua, SUA_IEI_SEQ_CTRL, 0); /* TODO */
/* optional: sequence number (class 3 only) */
if (conn->calling_addr.presence)

-- 
To view, visit https://gerrit.osmocom.org/3046
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic76aacc81f87f8885fe04121aead5c79a761ef07
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder


libosmo-sccp[master]: Revert "SCOC: When sending a CORE/CR, SUA SRC_ADDR == Callin...

2017-06-29 Thread Harald Welte

Patch Set 2: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3046
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic76aacc81f87f8885fe04121aead5c79a761ef07
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


osmo-bts[master]: octphy: Allow passing low quality buffers to upper layers

2017-06-29 Thread Pau Espin Pedrol

Patch Set 1:

> why bother with the extra argument?  A length of 0 bytes must mean
 > a frame with invalid CRC.  What other case for zero-length can you
 > think of?

>From the FIXME in the code in l1_if.c, I understand that at some point we want 
>to check for low quality link in a similar way as we do in sysmobts or 
>litecell15. As that ocpthy specific code is not there yet, I still prepare the 
>code to avoid potential bugs when it is implemented by already guiding where 
>the check and return on error should be done.

In the general case, afaik we have 2 different issues here where we don't want 
to decode the payload: payloadSize==0 or low_quality==true, which afaiu doesn't 
necessarily imply payloadSize==0 too.

-- 
To view, visit https://gerrit.osmocom.org/3078
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I02bf4bca041fccf96fe2986480251f96248ce2d1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


libosmo-abis[master]: osmo_ortp: Add osmo_rtp_drop_frame API

2017-06-29 Thread Harald Welte

Patch Set 2:

(1 comment)

https://gerrit.osmocom.org/#/c/3070/2/src/trau/osmo_ortp.c
File src/trau/osmo_ortp.c:

Line 449: int osmo_rtp_drop_frame(struct osmo_rtp_socket *rs, unsigned int 
duration)
drop_frame() sounds like an imperative, i.e. the function will be dropping a 
frame.  It's more a 'dropped_frame', i.e. we are telling the osmo_rtp code that 
a frame was droped?  or something like skipped_frame?


-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: Yes


osmo-bts[master]: l1sap.c: Avoid sending RTP frame with empty payload

2017-06-29 Thread Harald Welte

Patch Set 3: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3071
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
Gerrit-PatchSet: 3
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


osmo-bts[master]: sysmo: Allow passing low quality buffers to upper layers

2017-06-29 Thread Harald Welte

Patch Set 3:

(1 comment)

https://gerrit.osmocom.org/#/c/3056/3/src/osmo-bts-sysmo/l1_if.h
File src/osmo-bts-sysmo/l1_if.h:

Line 131: int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg, bool low_quality);
why bother with the extra argument?  A length of 0 bytes must mean a frame with 
invalid CRC.  What other case for zero-length can you think of?


-- 
To view, visit https://gerrit.osmocom.org/3056
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
Gerrit-PatchSet: 3
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: Yes


osmo-bts[master]: litecell15/tch.c: Clean up use of empty buffer

2017-06-29 Thread Harald Welte

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/3076
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib9ee967c0f42098b3a0569e9d84f23832eb4f2d5
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


osmo-bts[master]: octphy: Allow passing low quality buffers to upper layers

2017-06-29 Thread Harald Welte

Patch Set 1:

why bother with the extra argument?  A length of 0 bytes must mean a frame with 
invalid CRC.  What other case for zero-length can you think of?

-- 
To view, visit https://gerrit.osmocom.org/3078
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I02bf4bca041fccf96fe2986480251f96248ce2d1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


osmo-trx[master]: Add '-t' command line option to enable SCHED_RR

2017-06-29 Thread Harald Welte

Patch Set 1:

I would actually vote for making SCHED_RR a default, preferrably with an even 
higher priority (e.g. 10) than what we'd use as osmo-bts-trx, as osmo-trx is 
even more important to schedule than osmo-bts.  What do you guys think?

-- 
To view, visit https://gerrit.osmocom.org/3080
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-HasComments: No


[PATCH] osmo-trx[master]: Add '-t' command line option to enable SCHED_RR

2017-06-29 Thread Harald Welte

Review at  https://gerrit.osmocom.org/3080

Add '-t' command line option to enable SCHED_RR

SCHED_RR allows us to operate osmo-trx reliable even under exceptionally
high system load, as the realtime scheduler priority will have higher
priority than the other "regular" tasks on the system.

Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f
Closes: OS#2344
---
M Transceiver52M/osmo-trx.cpp
1 file changed, 29 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/80/3080/1

diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp
index 31a99cf..61b3098 100644
--- a/Transceiver52M/osmo-trx.cpp
+++ b/Transceiver52M/osmo-trx.cpp
@@ -27,6 +27,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -77,6 +78,7 @@
double rssi_offset;
bool swap_channels;
bool edge;
+   int sched_rr;
 };
 
 ConfigurationTable gConfig;
@@ -259,7 +261,8 @@
"  -rRandom Normal Burst test mode with TSC\n"
"  -ARandom Access Burst test mode with delay\n"
"  -RRSSI to dBm offset in dB (default=0)\n"
-   "  -SSwap channels (UmTRX only)\n",
+   "  -SSwap channels (UmTRX only)\n"
+   "  -tSCHED_RR real-time priority (1..32)\n",
"EMERG, ALERT, CRT, ERR, WARNING, NOTICE, INFO, DEBUG");
 }
 
@@ -283,8 +286,9 @@
config->rssi_offset = 0.0;
config->swap_channels = false;
config->edge = false;
+   config->sched_rr = -1;
 
-   while ((option = getopt(argc, argv, "ha:l:i:p:c:dmxgfo:s:b:r:A:R:Se")) 
!= -1) {
+   while ((option = getopt(argc, argv, 
"ha:l:i:p:c:dmxgfo:s:b:r:A:R:Set:")) != -1) {
switch (option) {
case 'h':
print_help();
@@ -343,6 +347,9 @@
case 'e':
config->edge = true;
break;
+   case 't':
+   config->sched_rr = atoi(optarg);
+   break;
default:
print_help();
exit(0);
@@ -386,6 +393,21 @@
exit(0);
 }
 
+static int set_sched_rr(int prio)
+{
+   struct sched_param param;
+   int rc;
+   memset(, 0, sizeof(param));
+   param.sched_priority = prio;
+   printf("Setting SCHED_RR priority(%d)\n", param.sched_priority);
+   rc = sched_setscheduler(getpid(), SCHED_RR, );
+   if (rc != 0) {
+   std::cerr << "Config: Setting SCHED_RR failed" << std::endl;
+   return -1;
+   }
+   return 0;
+}
+
 int main(int argc, char *argv[])
 {
int type, chans, ref;
@@ -424,6 +446,11 @@
 
handle_options(argc, argv, );
 
+   if (config.sched_rr != -1) {
+   if (set_sched_rr(config.sched_rr) < 0)
+   return EXIT_FAILURE;
+   }
+
setup_signal_handlers();
 
/* Check database sanity */

-- 
To view, visit https://gerrit.osmocom.org/3080
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia2452b9763960b2be37fbeee9d832554da68a53f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Harald Welte 


[MERGED] osmo-bts[master]: Revert "sysmobts: normalize frame number in measurement indi...

2017-06-29 Thread dexter
dexter has submitted this change and it was merged.

Change subject: Revert "sysmobts: normalize frame number in measurement 
indication"
..


Revert "sysmobts: normalize frame number in measurement indication"

This reverts commit 88b2cc30a6a7253c2c4c76178e5727fad48556ca.

Change-Id: I30f37a9feef24a45e254377502615d717dba9765
---
M src/osmo-bts-sysmo/l1_if.c
1 file changed, 2 insertions(+), 10 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index f564836..837fc5c 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -897,14 +897,12 @@
 }
 
 static int process_meas_res(struct gsm_bts_trx *trx, uint8_t chan_nr,
-   uint32_t fn, GsmL1_PhDataInd_t *data_ind)
+   uint32_t fn, GsmL1_MeasParam_t *m)
 {
struct osmo_phsap_prim l1sap;
memset(, 0, sizeof(l1sap));
osmo_prim_init(, SAP_GSM_PH, PRIM_MPH_INFO,
PRIM_OP_INDICATION, NULL);
-   GsmL1_MeasParam_t *m = _ind->measParam;
-
l1sap.u.info.type = PRIM_INFO_MEAS;
l1sap.u.info.u.meas_ind.chan_nr = chan_nr;
l1sap.u.info.u.meas_ind.ta_offs_qbits = m->i16BurstTiming;
@@ -915,12 +913,6 @@
 * physical radio link, the uplink is delayed by 3 timeslots, we need
 * to compensate for that delay. */
l1sap.u.info.u.meas_ind.fn = fn + 3;
-
-   /* Align frame number with measurement period ends */
-   if (data_ind->sapi == GsmL1_Sapi_TchF)
-   l1sap.u.info.u.meas_ind.fn += 1;
-   else if (data_ind->sapi == GsmL1_Sapi_TchH && data_ind->subCh == 
GsmL1_SubCh_0)
-   l1sap.u.info.u.meas_ind.fn += 1;
 
/* l1sap wants to take msgb ownership.  However, as there is no
 * msg, it will msgb_free(l1sap.oph.msg == NULL) */
@@ -949,7 +941,7 @@
fn = data_ind->u32Fn;
link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
 
-   process_meas_res(trx, chan_nr, fn, data_ind);
+   process_meas_res(trx, chan_nr, fn, _ind->measParam);
 
if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
 && data_ind->msgUnitParam.u8Size != 0) {

-- 
To view, visit https://gerrit.osmocom.org/3050
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I30f37a9feef24a45e254377502615d717dba9765
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter 


[ABANDON] osmo-bts[master]: osmo-bts-litecell15: Fix missing frame number in MEAS IND

2017-06-29 Thread dexter
dexter has abandoned this change.

Change subject: osmo-bts-litecell15: Fix missing frame number in MEAS IND
..


Abandoned

-- 
To view, visit https://gerrit.osmocom.org/2861
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: abandon
Gerrit-Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
Gerrit-PatchSet: 4
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: dexter 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 


osmo-trx[master]: deb: remove unused dependency

2017-06-29 Thread Alexander Chemeris

Patch Set 1: Code-Review+1

-- 
To view, visit https://gerrit.osmocom.org/3079
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id2ab1facad703fa0c1d45084e70d41e73dbad6e7
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Max 
Gerrit-Reviewer: Alexander Chemeris 
Gerrit-Reviewer: Ivan Kluchnikov 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Tom Tsou 
Gerrit-HasComments: No


[PATCH] osmo-trx[master]: deb: remove unused dependency

2017-06-29 Thread Max

Review at  https://gerrit.osmocom.org/3079

deb: remove unused dependency

The libdbd dependency is not used because libsqlite3 is used directly -
adjust debian/control to match.

Change-Id: Id2ab1facad703fa0c1d45084e70d41e73dbad6e7
Related: OS#1929
---
M debian/control
1 file changed, 1 insertion(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/79/3079/1

diff --git a/debian/control b/debian/control
index 0e3b714..12da64a 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,6 @@
 Build-Depends: debhelper (>= 9),
autotools-dev,
autoconf-archive,
-   libdbd-sqlite3,
libsqlite3-dev,
pkg-config,
dh-autoreconf,
@@ -20,7 +19,7 @@
 
 Package: osmo-trx
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, libdbd-sqlite3
+Depends: ${shlibs:Depends}, ${misc:Depends}, libsqlite3-0
 Description: SDR transceiver that implements Layer 1 of a GSM BTS
  OsmoTRX is a software-defined radio transceiver that implements the Layer 1
  physical layer of a BTS comprising the following 3GPP specifications:

-- 
To view, visit https://gerrit.osmocom.org/3079
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id2ab1facad703fa0c1d45084e70d41e73dbad6e7
Gerrit-PatchSet: 1
Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Owner: Max 


[PATCH] osmo-bts[master]: sysmo: Allow passing low quality buffers to upper layers

2017-06-29 Thread Pau Espin Pedrol
Hello Max, Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3056

to look at the new patch set (#3).

sysmo: Allow passing low quality buffers to upper layers

We want to always call l1if_tch_rx in order to avoid losing triggering
events on the upper layer.

With this change, the upper layer will increase correctly seq + ts for
RTP. It will then send an RTP packet with only the header and no payload, which 
is
not correct but at least we avoid drifting the RTP clock. Upcoming patch
in the series solves this issue.

Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
---
M src/osmo-bts-sysmo/l1_if.c
M src/osmo-bts-sysmo/l1_if.h
M src/osmo-bts-sysmo/tch.c
3 files changed, 20 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/56/3056/3

diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index f564836..776ec01 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -937,6 +937,7 @@
struct osmo_phsap_prim *l1sap;
uint32_t fn;
int rc = 0;
+   bool low_quality = data_ind->measParam.fLinkQuality < 
btsb->min_qual_norm;
 
chan_nr = chan_nr_by_sapi(>ts[data_ind->u8Tn], data_ind->sapi,
data_ind->subCh, data_ind->u8Tn, data_ind->u32Fn);
@@ -951,12 +952,6 @@
 
process_meas_res(trx, chan_nr, fn, data_ind);
 
-   if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
-&& data_ind->msgUnitParam.u8Size != 0) {
-   msgb_free(l1p_msg);
-   return 0;
-   }
-
DEBUGP(DL1P, "Rx PH-DATA.ind %s (hL2 %08x): %s",
get_value_string(femtobts_l1sapi_names, data_ind->sapi),
data_ind->hLayer2,
@@ -968,11 +963,20 @@
if (data_ind->sapi == GsmL1_Sapi_TchF
 || data_ind->sapi == GsmL1_Sapi_TchH) {
/* TCH speech frame handling */
-   rc = l1if_tch_rx(trx, chan_nr, l1p_msg);
+   rc = l1if_tch_rx(trx, chan_nr, l1p_msg, low_quality);
msgb_free(l1p_msg);
return rc;
}
 
+   /* Discard frames with bad quality payload only after making sure we
+* signal upper layers for TCH frames, because it expects to always be
+* notified even if the content of the frame is not correct, otherwise
+* it losses events and the RTP clock drifts. */
+   if (low_quality && data_ind->msgUnitParam.u8Size != 0) {
+   msgb_free(l1p_msg);
+   return 0;
+   }
+
/* fill L1SAP header */
sap_msg = l1sap_msgb_alloc(data_ind->msgUnitParam.u8Size);
l1sap = msgb_l1sap_prim(sap_msg);
diff --git a/src/osmo-bts-sysmo/l1_if.h b/src/osmo-bts-sysmo/l1_if.h
index 033e7f5..6dd2d60 100644
--- a/src/osmo-bts-sysmo/l1_if.h
+++ b/src/osmo-bts-sysmo/l1_if.h
@@ -128,7 +128,7 @@
 int l1if_tch_encode(struct gsm_lchan *lchan, uint8_t *data, uint8_t *len,
const uint8_t *rtp_pl, unsigned int rtp_pl_len, uint32_t fn,
bool use_cache, bool marker);
-int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg);
+int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg, bool low_quality);
 int l1if_tch_fill(struct gsm_lchan *lchan, uint8_t *l1_buffer);
 struct msgb *gen_empty_tch_msg(struct gsm_lchan *lchan, uint32_t fn);
 
diff --git a/src/osmo-bts-sysmo/tch.c b/src/osmo-bts-sysmo/tch.c
index a12b1a7..584499b 100644
--- a/src/osmo-bts-sysmo/tch.c
+++ b/src/osmo-bts-sysmo/tch.c
@@ -502,7 +502,7 @@
 }
 
 /*! \brief receive a traffic L1 primitive for a given lchan */
-int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
+int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg, bool low_quality)
 {
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
GsmL1_PhDataInd_t *data_ind = >u.phDataInd;
@@ -513,10 +513,13 @@
if (is_recv_only(lchan->abis_ip.speech_mode))
return -EAGAIN;
 
-   if (data_ind->msgUnitParam.u8Size < 1) {
-   LOGP(DL1C, LOGL_ERROR, "chan_nr %d Rx Payload size 0\n",
-   chan_nr);
-   return -EINVAL;
+   if (low_quality || data_ind->msgUnitParam.u8Size < 1) {
+   LOGP(DL1C, LOGL_ERROR, "chan_nr %d Rx Payload size %u 
low_quality %d\n",
+   chan_nr, data_ind->msgUnitParam.u8Size, low_quality);
+
+   /* Push empty payload to upper layers */
+   rmsg = msgb_alloc_headroom(256, 128, "L1C-to-RTP");
+   return add_l1sap_header(trx, rmsg, lchan, chan_nr, 
data_ind->u32Fn);
}
 
payload_type = data_ind->msgUnitParam.u8Buffer[0];

-- 
To view, visit https://gerrit.osmocom.org/3056
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
Gerrit-PatchSet: 

[PATCH] osmo-bts[master]: octphy: Allow passing low quality buffers to upper layers

2017-06-29 Thread Pau Espin Pedrol

Review at  https://gerrit.osmocom.org/3078

octphy: Allow passing low quality buffers to upper layers

We want to always call l1if_tch_rx in order to avoid losing triggering
events on the upper layer.

With this change, the upper layer will increase correctly seq + ts for
RTP. It will then send an RTP packet with only the header and no payload, which 
is
not correct but at least we avoid drifting the RTP clock. Upcoming patch
in the series solves this issue.

Change-Id: I02bf4bca041fccf96fe2986480251f96248ce2d1
---
M src/osmo-bts-octphy/l1_if.c
M src/osmo-bts-octphy/l1_if.h
M src/osmo-bts-octphy/l1_tch.c
3 files changed, 20 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/78/3078/1

diff --git a/src/osmo-bts-octphy/l1_if.c b/src/osmo-bts-octphy/l1_if.c
index 8b31630..12a096b 100644
--- a/src/osmo-bts-octphy/l1_if.c
+++ b/src/osmo-bts-octphy/l1_if.c
@@ -1026,6 +1026,7 @@
uint8_t sapi = (uint8_t) data_ind->LchId.bySAPI;
uint8_t ts_num = (uint8_t) data_ind->LchId.byTimeslotNb;
uint8_t sc = (uint8_t) data_ind->LchId.bySubChannelNb;
+   bool low_quality = false; /* FIXME: check min_qual_norm! */
 
/* Need to combine two 16bit MSB and LSB to form 32bit FN */
fn = data_ind->Data.ulFrameNumber;
@@ -1050,8 +1051,6 @@
process_meas_res(trx, chan_nr, fn, data_ind->Data.ulDataLength,
 _ind->MeasurementInfo);
 
-   /* FIXME: check min_qual_norm! */
-
DEBUGP(DL1C, "Rx PH-DATA.ind %s: %s data_len:%d \n",
   get_value_string(octphy_l1sapi_names, sapi),
   osmo_hexdump(data_ind->Data.abyDataContent,
@@ -1062,10 +1061,18 @@
if (sapi == cOCTVC1_GSM_SAPI_ENUM_TCHF ||
sapi == cOCTVC1_GSM_SAPI_ENUM_TCHH) {
/* TCH speech frame handling */
-   rc = l1if_tch_rx(trx, chan_nr, data_ind);
+   rc = l1if_tch_rx(trx, chan_nr, data_ind, low_quality);
return rc;
}
 
+   /* Discard frames with bad quality payload only after making sure we
+* signal upper layers for TCH frames, because it expects to always be
+* notified even if the content of the frame is not correct, otherwise
+* it losses events and the RTP clock drifts. */
+   if (low_quality && data_ind->Data.ulDataLength != 0) {
+   return 0;
+   }
+
/* get rssi, rssi is in q8 format */
rssi = (int8_t) (data_ind->MeasurementInfo.sRSSIDbm >> 8);
/* get data pointer and length */
diff --git a/src/osmo-bts-octphy/l1_if.h b/src/osmo-bts-octphy/l1_if.h
index 0960482..c1b2e0a 100644
--- a/src/osmo-bts-octphy/l1_if.h
+++ b/src/osmo-bts-octphy/l1_if.h
@@ -102,7 +102,7 @@
 
 int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr,
tOCTVC1_GSM_MSG_TRX_LOGICAL_CHANNEL_DATA_INDICATION_EVT *
-   data_ind);
+   data_ind, bool low_quality);
 
 struct gsm_bts_trx *trx_by_l1h(struct octphy_hdl *fl1h, unsigned int trx_id);
 
diff --git a/src/osmo-bts-octphy/l1_tch.c b/src/osmo-bts-octphy/l1_tch.c
index 5693313..366df4f 100644
--- a/src/osmo-bts-octphy/l1_tch.c
+++ b/src/osmo-bts-octphy/l1_tch.c
@@ -183,7 +183,7 @@
 /* brief receive a traffic L1 primitive for a given lchan */
 int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr,
tOCTVC1_GSM_MSG_TRX_LOGICAL_CHANNEL_DATA_INDICATION_EVT *
-   data_ind)
+   data_ind, bool low_quality)
 {
uint32_t payload_type = data_ind->Data.ulPayloadType;
uint8_t *payload = data_ind->Data.abyDataContent;
@@ -193,11 +193,15 @@
struct gsm_lchan *lchan =
>ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
 
-   if (data_ind->Data.ulDataLength < 1) {
-   LOGP(DL1C, LOGL_DEBUG, "chan_nr %d Rx Payload size 0\n",
-chan_nr);
-   return -EINVAL;
+   if (low_quality || data_ind->Data.ulDataLength < 1) {
+   LOGP(DL1C, LOGL_ERROR, "chan_nr %d Rx Payload size %u 
low_quality %d\n",
+   chan_nr, data_ind->Data.ulDataLength, low_quality);
+
+   /* Push empty payload to upper layers */
+   rmsg = msgb_alloc_headroom(256, 128, "L1C-to-RTP");
+   return add_l1sap_header(trx, rmsg, lchan, chan_nr, 
data_ind->Data.ulFrameNumber);
}
+
payload_len = data_ind->Data.ulDataLength;
 
switch (payload_type) {

-- 
To view, visit https://gerrit.osmocom.org/3078
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I02bf4bca041fccf96fe2986480251f96248ce2d1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 


[PATCH] osmo-bts[master]: litecell15/tch.c: Clean up use of empty buffer

2017-06-29 Thread Pau Espin Pedrol

Review at  https://gerrit.osmocom.org/3076

litecell15/tch.c: Clean up use of empty buffer

Make code easier to read and avoid reading first byte of the buffer if size is 
0.

Change-Id: Ib9ee967c0f42098b3a0569e9d84f23832eb4f2d5
---
M src/osmo-bts-litecell15/tch.c
1 file changed, 4 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/76/3076/1

diff --git a/src/osmo-bts-litecell15/tch.c b/src/osmo-bts-litecell15/tch.c
index ffc1eb3..8bed695 100644
--- a/src/osmo-bts-litecell15/tch.c
+++ b/src/osmo-bts-litecell15/tch.c
@@ -361,9 +361,7 @@
 {
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
GsmL1_PhDataInd_t *data_ind = >u.phDataInd;
-   uint8_t payload_type = data_ind->msgUnitParam.u8Buffer[0];
-   uint8_t *payload = data_ind->msgUnitParam.u8Buffer + 1;
-   uint8_t payload_len, sid_first[9] = { 0 };
+   uint8_t *payload, payload_type, payload_len, sid_first[9] = { 0 };
struct msgb *rmsg = NULL;
struct gsm_lchan *lchan = 
>ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
 
@@ -375,6 +373,9 @@
chan_nr);
return -EINVAL;
}
+
+   payload_type = data_ind->msgUnitParam.u8Buffer[0];
+   payload = data_ind->msgUnitParam.u8Buffer + 1;
payload_len = data_ind->msgUnitParam.u8Size - 1;
 
switch (payload_type) {

-- 
To view, visit https://gerrit.osmocom.org/3076
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib9ee967c0f42098b3a0569e9d84f23832eb4f2d5
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 


[PATCH] osmo-bts[master]: litecell15: Allow passing low quality buffers to upper layers

2017-06-29 Thread Pau Espin Pedrol

Review at  https://gerrit.osmocom.org/3077

litecell15: Allow passing low quality buffers to upper layers

We want to always call l1if_tch_rx in order to avoid losing triggering
events on the upper layer.

With this change, the upper layer will increase correctly seq + ts for
RTP. It will then send an RTP packet with only the header and no payload, which 
is
not correct but at least we avoid drifting the RTP clock. Upcoming patch
in the series solves this issue.

Change-Id: I3aba5949ce2ecb2ee3d8a8e57a3e6b2108691160
---
M src/osmo-bts-litecell15/l1_if.c
M src/osmo-bts-litecell15/l1_if.h
M src/osmo-bts-litecell15/tch.c
3 files changed, 20 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/77/3077/1

diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index 71bb833..6b5fbc6 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -929,6 +929,7 @@
uint8_t *data, len;
int rc = 0;
int8_t rssi;
+   bool low_quality = data_ind->measParam.fLinkQuality < 
btsb->min_qual_norm;
 
chan_nr = chan_nr_by_sapi(>ts[data_ind->u8Tn], data_ind->sapi,
data_ind->subCh, data_ind->u8Tn, data_ind->u32Fn);
@@ -943,12 +944,6 @@
 
process_meas_res(trx, chan_nr, _ind->measParam);
 
-   if (data_ind->measParam.fLinkQuality < btsb->min_qual_norm
-&& data_ind->msgUnitParam.u8Size != 0) {
-   msgb_free(l1p_msg);
-   return 0;
-   }
-
DEBUGP(DL1C, "Rx PH-DATA.ind %s (hL2 %08x): %s",
get_value_string(lc15bts_l1sapi_names, data_ind->sapi),
(uint32_t)data_ind->hLayer2,
@@ -960,9 +955,18 @@
if (data_ind->sapi == GsmL1_Sapi_TchF
 || data_ind->sapi == GsmL1_Sapi_TchH) {
/* TCH speech frame handling */
-   rc = l1if_tch_rx(trx, chan_nr, l1p_msg);
+   rc = l1if_tch_rx(trx, chan_nr, l1p_msg, low_quality);
msgb_free(l1p_msg);
return rc;
+   }
+
+   /* Discard frames with bad quality payload only after making sure we
+* signal upper layers for TCH frames, because it expects to always be
+* notified even if the content of the frame is not correct, otherwise
+* it losses events and the RTP clock drifts. */
+   if (low_quality && data_ind->msgUnitParam.u8Size != 0) {
+   msgb_free(l1p_msg);
+   return 0;
}
 
/* get rssi */
@@ -1575,4 +1579,3 @@
 
return 0;
 }
-
diff --git a/src/osmo-bts-litecell15/l1_if.h b/src/osmo-bts-litecell15/l1_if.h
index 7feee56..ecf9b6f 100644
--- a/src/osmo-bts-litecell15/l1_if.h
+++ b/src/osmo-bts-litecell15/l1_if.h
@@ -92,7 +92,7 @@
 int l1if_tch_encode(struct gsm_lchan *lchan, uint8_t *data, uint8_t *len,
const uint8_t *rtp_pl, unsigned int rtp_pl_len, uint32_t fn,
bool use_cache, bool marker);
-int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg);
+int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg, bool low_quality);
 int l1if_tch_fill(struct gsm_lchan *lchan, uint8_t *l1_buffer);
 struct msgb *gen_empty_tch_msg(struct gsm_lchan *lchan, uint32_t fn);
 
diff --git a/src/osmo-bts-litecell15/tch.c b/src/osmo-bts-litecell15/tch.c
index 8bed695..cccfb05 100644
--- a/src/osmo-bts-litecell15/tch.c
+++ b/src/osmo-bts-litecell15/tch.c
@@ -357,7 +357,7 @@
 }
 
 /*! \brief receive a traffic L1 primitive for a given lchan */
-int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb *l1p_msg)
+int l1if_tch_rx(struct gsm_bts_trx *trx, uint8_t chan_nr, struct msgb 
*l1p_msg, bool low_quality)
 {
GsmL1_Prim_t *l1p = msgb_l1prim(l1p_msg);
GsmL1_PhDataInd_t *data_ind = >u.phDataInd;
@@ -368,10 +368,13 @@
if (is_recv_only(lchan->abis_ip.speech_mode))
return -EAGAIN;
 
-   if (data_ind->msgUnitParam.u8Size < 1) {
-   LOGP(DL1C, LOGL_ERROR, "chan_nr %d Rx Payload size 0\n",
-   chan_nr);
-   return -EINVAL;
+   if (low_quality || data_ind->msgUnitParam.u8Size < 1) {
+   LOGP(DL1C, LOGL_ERROR, "chan_nr %d Rx Payload size %u 
low_quality %d\n",
+   chan_nr, data_ind->msgUnitParam.u8Size, low_quality);
+
+   /* Push empty payload to upper layers */
+   rmsg = msgb_alloc_headroom(256, 128, "L1C-to-RTP");
+   return add_l1sap_header(trx, rmsg, lchan, chan_nr, 
data_ind->u32Fn);
}
 
payload_type = data_ind->msgUnitParam.u8Buffer[0];

-- 
To view, visit https://gerrit.osmocom.org/3077
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3aba5949ce2ecb2ee3d8a8e57a3e6b2108691160
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 


osmo-bts[master]: sysmo/l1_if.c: Allow passing low quality buffers to upper la...

2017-06-29 Thread Pau Espin Pedrol

Patch Set 2:

(1 comment)

> Is this really necessary on sysmoBTS only? What about other BTS
 > models?

I'll check and provide separate patches for each of them.

https://gerrit.osmocom.org/#/c/3056/1/src/osmo-bts-sysmo/l1_if.c
File src/osmo-bts-sysmo/l1_if.c:

Line 969:   }
> I think comment right next to the check explaining why we do it that way is
It makes sense. I'm still working on this so I may even send a new version with 
more changes on it (like handling packets considered low quality in l1if_tch_rx 
in a different way, see https://osmocom.org/issues/2335#note-4 for more context.


-- 
To view, visit https://gerrit.osmocom.org/3056
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: Yes


[PATCH] libosmo-abis[master]: osmo_ortp: Add osmo_rtp_drop_frame API

2017-06-29 Thread Pau Espin Pedrol
Hello Max, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3070

to look at the new patch set (#2).

osmo_ortp: Add osmo_rtp_drop_frame API

This API will be used by osmo-bts to maintain the sampling clock of the
RTP socket whenever a frame should be sent but it is not available, for
instance due to low quality of signal.

Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
---
M include/osmocom/trau/osmo_ortp.h
M src/trau/osmo_ortp.c
2 files changed, 22 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/70/3070/2

diff --git a/include/osmocom/trau/osmo_ortp.h b/include/osmocom/trau/osmo_ortp.h
index 9eb176f..fa6696c 100644
--- a/include/osmocom/trau/osmo_ortp.h
+++ b/include/osmocom/trau/osmo_ortp.h
@@ -76,6 +76,7 @@
 int osmo_rtp_socket_connect(struct osmo_rtp_socket *rs, const char *ip, 
uint16_t port);
 int osmo_rtp_socket_set_pt(struct osmo_rtp_socket *rs, int payload_type);
 int osmo_rtp_socket_free(struct osmo_rtp_socket *rs);
+int osmo_rtp_drop_frame(struct osmo_rtp_socket *rs, unsigned int duration);
 int osmo_rtp_send_frame(struct osmo_rtp_socket *rs, const uint8_t *payload,
unsigned int payload_len, unsigned int duration);
 int osmo_rtp_send_frame_ext(struct osmo_rtp_socket *rs, const uint8_t *payload,
diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c
index b2ee040..05817aa 100644
--- a/src/trau/osmo_ortp.c
+++ b/src/trau/osmo_ortp.c
@@ -436,6 +436,27 @@
return osmo_rtp_socket_fdreg(rs);
 }
 
+/*! \brief Increment seq and timestamp on a RTP socket without sending any 
packet
+ *  \param[in] rs OsmoRTP socket
+ *  \param[in] duration duration in number of RTP clock ticks
+ *
+ * Useful if willing to update the RTP internal clock at a given time but no
+ * audio content is available. From receiver point of view, it will look like
+ * a packet was lost somewhere in the path.
+ *
+ *  \returns 0 on success, <0 in case of error.
+ */
+int osmo_rtp_drop_frame(struct osmo_rtp_socket *rs, unsigned int duration)
+{
+   if (rs->flags & OSMO_RTP_F_DISABLED)
+   return 0;
+
+   uint16_t next_seq = rtp_session_get_seq_number(rs->sess) + 1;
+   rtp_session_set_seq_number(rs->sess, next_seq);
+   rs->tx_timestamp += duration;
+   return 0;
+}
+
 /*! \brief Send one RTP frame via a RTP socket
  *  \param[in] rs OsmoRTP socket
  *  \param[in] payload pointer to buffer with RTP payload data

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 2
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 


libosmo-abis[master]: osmo_ortp.c: Add osmo_rtp_drop_frame API

2017-06-29 Thread Pau Espin Pedrol

Patch Set 1:

> Why only implementation in .c but no .h file? How it's planned to
 > be used? Please explain in commit message.

Indeed I forgot to add the .h file to the commit, thanks for pointing out.

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


libosmo-abis[master]: osmo_ortp.c: Add osmo_rtp_drop_frame API

2017-06-29 Thread Max

Patch Set 1: Code-Review-1

Why only implementation in .c but no .h file? How it's planned to be used? 
Please explain in commit message.

-- 
To view, visit https://gerrit.osmocom.org/3070
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id6099372b6231c0a4b6ea0716f46f5daee7049e1
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max 
Gerrit-HasComments: No


[PATCH] osmo-bts[master]: l1sap.c: Avoid sending RTP frame with empty payload

2017-06-29 Thread Pau Espin Pedrol
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3071

to look at the new patch set (#2).

l1sap.c: Avoid sending RTP frame with empty payload

Depends on libosmo-abis Id6099372b6231c0a4b6ea0716f46f5daee7049e1

Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
---
M src/common/l1sap.c
1 file changed, 23 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/71/3071/2

diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 1fb6134..6aa1357 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -1011,22 +1011,31 @@
 
msgb_pull(msg, sizeof(*l1sap));
 
-   /* hand msg to RTP code for transmission */
-   if (lchan->abis_ip.rtp_socket)
-   osmo_rtp_send_frame_ext(lchan->abis_ip.rtp_socket,
-   msg->data, msg->len, fn_ms_adj(fn, lchan), 
lchan->rtp_tx_marker);
-
-   /* if loopback is enabled, also queue received RTP data */
-   if (lchan->loopback) {
-   /* make sure the queue doesn't get too long */
-   queue_limit_to(gsm_lchan_name(lchan), >dl_tch_queue, 1);
-   /* add new frame to queue */
-   msgb_enqueue(>dl_tch_queue, msg);
-   /* Return 1 to signal that we're still using msg and it should 
not be freed */
-   return 1;
+   /* Low level layers always call us when TCH content is expected to be
+* available, even if the content is not available due to decoding
+* issues. Content not available is expected as empty payload. */
+   if (msg->len) {
+   /* hand msg to RTP code for transmission */
+   if (lchan->abis_ip.rtp_socket)
+   osmo_rtp_send_frame_ext(lchan->abis_ip.rtp_socket,
+   msg->data, msg->len, fn_ms_adj(fn, lchan), 
lchan->rtp_tx_marker);
+   /* if loopback is enabled, also queue received RTP data */
+   if (lchan->loopback) {
+   /* make sure the queue doesn't get too long */
+   queue_limit_to(gsm_lchan_name(lchan), 
>dl_tch_queue, 1);
+   /* add new frame to queue */
+   msgb_enqueue(>dl_tch_queue, msg);
+   /* Return 1 to signal that we're still using msg and it 
should not be freed */
+   return 1;
+   }
+   /* Only clear the marker bit once we have sent a RTP packet 
with it */
+   lchan->rtp_tx_marker = false;
+   } else {
+   DEBUGP(DL1P, "Dropping RTP frame with lost payload\n");
+   if (lchan->abis_ip.rtp_socket)
+   osmo_rtp_drop_frame(lchan->abis_ip.rtp_socket, 
fn_ms_adj(fn, lchan));
}
 
-   lchan->rtp_tx_marker = false;
lchan->tch.last_fn = fn;
return 0;
 }

-- 
To view, visit https://gerrit.osmocom.org/3071
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder


Build failure of network:osmocom:nightly/libosmocore in xUbuntu_16.10/x86_64

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/xUbuntu_16.10/x86_64

Package network:osmocom:nightly/libosmocore failed to build in 
xUbuntu_16.10/x86_64

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  224s] 
[  224s] lamb24 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
19:54:22 UTC 2017.
[  224s] 
[  224s] ### VM INTERACTION START ###
[  228s] [  214.746288] reboot: Power down
[  228s] ### VM INTERACTION END ###
[  228s] build: extracting built packages...
[  228s] DEBS/libosmocore-dev_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocoding0_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore_0.9.6.20170628_amd64.changes
[  228s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmosim0_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmocore_0.9.6.20170628.dsc
[  228s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmocore8_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmovty3_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  228s] DEBS/libosmogsm7_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmogb4_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore-utils_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore-dbg_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  228s] DEBS/libosmoctrl0_0.9.6.20170628_amd64.deb
[  228s] DEBS/libosmocodec0_0.9.6.20170628_amd64.deb
[  228s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in Debian_8.0/x86_64

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/Debian_8.0/x86_64

Package network:osmocom:nightly/libosmocore failed to build in Debian_8.0/x86_64

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  292s] lamb66 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
19:55:17 UTC 2017.
[  292s] 
[  292s] ### VM INTERACTION START ###
[  293s] Powering off.
[  293s] [  279.409997] reboot: Power down
[  293s] ### VM INTERACTION END ###
[  293s] build: extracting built packages...
[  293s] DEBS/libosmocore_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocodec0_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore_0.9.6.20170628.dsc
[  293s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmoctrl0_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmogb4_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore_0.9.6.20170628_amd64.changes
[  293s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmovty3_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  293s] DEBS/libosmogsm7_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore-utils_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmocoding0_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore-dbg_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore-dev_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmocore8_0.9.6.20170628_amd64.deb
[  293s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  293s] DEBS/libosmosim0_0.9.6.20170628_amd64.deb
[  293s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in xUbuntu_17.04/i586

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/xUbuntu_17.04/i586

Package network:osmocom:nightly/libosmocore failed to build in 
xUbuntu_17.04/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  211s] 
[  211s] build79 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
19:53:58 UTC 2017.
[  211s] 
[  211s] ### VM INTERACTION START ###
[  214s] [  202.569182] reboot: Power down
[  215s] ### VM INTERACTION END ###
[  215s] build: extracting built packages...
[  215s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmocore_0.9.6.20170628.dsc
[  215s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmocodec0_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore-dbg_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore8_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmogb4_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  215s] DEBS/libosmoctrl0_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore_0.9.6.20170628_i386.changes
[  215s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmogsm7_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore-utils_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocoding0_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmosim0_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmocore_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmocore-dev_0.9.6.20170628_i386.deb
[  215s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  215s] DEBS/libosmovty3_0.9.6.20170628_i386.deb
[  215s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in Debian_9.0/i586

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/Debian_9.0/i586

Package network:osmocom:nightly/libosmocore failed to build in Debian_9.0/i586

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  638s] 
[  638s] cloud121 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
20:01:15 UTC 2017.
[  638s] 
[  638s] ### VM INTERACTION START ###
[  641s] [  613.459662] reboot: Power down
[  647s] ### VM INTERACTION END ###
[  647s] build: extracting built packages...
[  648s] DEBS/libosmocoding0_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore-dbg_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmocodec0_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore-utils_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore_0.9.6.20170628_i386.changes
[  648s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmosim0_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore-dev_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore_0.9.6.20170628.dsc
[  648s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmoctrl0_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  648s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmogsm7_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmovty3_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmocore8_0.9.6.20170628_i386.deb
[  648s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  648s] DEBS/libosmogb4_0.9.6.20170628_i386.deb
[  648s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in Debian_9.0/x86_64

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/Debian_9.0/x86_64

Package network:osmocom:nightly/libosmocore failed to build in Debian_9.0/x86_64

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  255s] 
[  255s] lamb15 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
19:54:39 UTC 2017.
[  255s] 
[  255s] ### VM INTERACTION START ###
[  258s] [  243.854006] reboot: Power down
[  258s] ### VM INTERACTION END ###
[  258s] build: extracting built packages...
[  258s] DEBS/libosmocodec0_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  258s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  258s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  258s] DEBS/libosmoctrl0_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmosim0_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore_0.9.6.20170628_amd64.changes
[  258s] DEBS/libosmocore-dbg_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  258s] DEBS/libosmocore_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  258s] DEBS/libosmogb4_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore8_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore-utils_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmovty3_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore-dev_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  258s] DEBS/libosmogsm7_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore_0.9.6.20170628.dsc
[  258s] DEBS/libosmocoding0_0.9.6.20170628_amd64.deb
[  258s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  258s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)


Build failure of network:osmocom:nightly/libosmocore in xUbuntu_16.04/x86_64

2017-06-29 Thread OBS Notification
Visit 
https://build.opensuse.org/package/live_build_log/network:osmocom:nightly/libosmocore/xUbuntu_16.04/x86_64

Package network:osmocom:nightly/libosmocore failed to build in 
xUbuntu_16.04/x86_64

Check out the package for editing:
  osc checkout network:osmocom:nightly libosmocore

Last lines of build log:
[  344s] 
[  344s] lamb04 finished "build libosmocore_0.9.6.20170628.dsc" at Wed Jun 28 
19:56:12 UTC 2017.
[  344s] 
[  344s] ### VM INTERACTION START ###
[  348s] [  331.394824] reboot: Power down
[  348s] ### VM INTERACTION END ###
[  348s] build: extracting built packages...
[  348s] DEBS/libosmovty-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmovty3_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore-utils_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocodec-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmocoding0_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmosim0_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore_0.9.6.20170628.dsc
[  348s] DEBS/libosmogb4_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmoctrl0_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore_0.9.6.20170628.tar.xz
[  348s] DEBS/libosmocodec0_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmogsm7_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmocore-dbg_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmocore-dev_0.9.6.20170628_amd64.deb
[  348s] DEBS/libosmogsm-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmocoding-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmocore_0.9.6.20170628_amd64.changes
[  348s] DEBS/libosmogb-doc_0.9.6.20170628_all.deb
[  348s] DEBS/libosmocore8_0.9.6.20170628_amd64.deb
[  348s] OTHER/_statistics

-- 
Configure notifications at https://build.opensuse.org/user/notifications
openSUSE Build Service (https://build.opensuse.org/)