This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Holger Hans Peter Freyther holger at freyther.deOn Tue, Mar 12, 2013 at 01:24:44PM +0100, Holger Hans Peter Freyther wrote: Good Morning, > that is what I was missing when browsing the code in gtik. I think > there is a small glitch the other way around. > > a.) We get criteria value == 0 through OML (for whatever reason) > > + btsb->radio_link_timeout = val[1] > > b.) lchan_activate sets lchan->s == 0 > > + lchan->s = btsb->radio_link_timeout; > > c.) lchan->s -= 1 > > + /* count down radio link counter S */ > + lchan->s--; > > d.) if (lchan->s == 0) > > Will not be true as the lchan->s is -1. Is it intended that setting a > '0' will disable the link failure checking? the easiest way to avoid the problem of the number to leave the range of 0 to radio_link_timeout is to use the OSMO_MAX and OSMO_MIN (now that these macros are fixed). Underflow: lchan->s = OSMO_MAX(lchan->s - 1, 0); Overflow: lchan->s = OSMO_MIN(lchan->s + 2, btsb->radio_link_timeout); E.g. the following code (I only compiled it): diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c index df660c5..16375ef 100644 --- a/src/osmo-bts-sysmo/l1_if.c +++ b/src/osmo-bts-sysmo/l1_if.c @@ -684,7 +684,7 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *d /* process radio link timeout coniter S */ if (data_ind->msgUnitParam.u8Size == 0) { /* count down radio link counter S */ - lchan->s--; + lchan->s = OSMO_MAX(lchan->s - 1, 0); DEBUGP(DMEAS, "counting down radio link counter S=%d\n", lchan->s); if (lchan->s == 0) @@ -694,9 +694,7 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *d } if (lchan->s < btsb->radio_link_timeout) { /* count up radio link counter S */ - lchan->s += 2; - if (lchan->s > btsb->radio_link_timeout) - lchan->s = btsb->radio_link_timeout; + lchan->s = OSMO_MIN(lchan->s + 2, btsb->radio_link_timeout); DEBUGP(DMEAS, "counting up radio link counter S=%d\n", lchan->s); }