Skip to content

Loading builds...

Changes

#8058 (Jan 26, 2026, 8:55:10 PM)

fake_trx: reset settings on CMD POWEROFF

When running ttcn3-bts-test, parameters such as SETTA, FAKE_RSSI,
FAKE_TOA, and others may persist across testcases if not explicitly
reset, leading to unintended cross-test interference.

Reset all transceiver settings on CMD POWEROFF to ensure proper
test isolation and predictable behavior between testcases.

Change-Id: I5c58bc684acc7a58d7aa940bb2ae7597d4a282f2
Vadim Yanitskiy at

#8057 (Jan 26, 2026, 1:30:06 PM)

trx_toolkit/burst_fwd: Use 'is' instead of '==' when checking if trx is src_trx

In python `a is b` is just a pointer comparison of locations of objects
a and b, while `a == b` can involve doing arbitrary code invoking __eq__
and is generally slower even without __eq__ defined:

    In [1]: class A:
       ...:     pass
       ...:

    In [2]: a = A()
    In [4]: b = A()

    In [5]: a == a
    Out[5]: True

    In [6]: a == b
    Out[6]: False

    In [7]: a is a
    Out[7]: True

    In [8]: a is b
    Out[8]: False

    In [9]: %timeit a is a
    84.2 ns ± 0.133 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

    In [10]: %timeit a is b
    87.5 ns ± 0.0736 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

    In [11]: %timeit a == a
    100 ns ± 0.659 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

    In [12]: %timeit a == b
    116 ns ± 0.399 ns per loop (mean ± std. dev. of 7 runs, 10,000,000 loops each)

BurstForwarder.forward_msg is one of the hottest places, as e.g. for every
received packet from BTS it forwards it to multiple Ms receivers. It
makes sense to be careful and save cycles here.

Change-Id: Ic9e16720daeb348b5f9c535c24a682db53a93529
Vadim Yanitskiy at
trx_toolkit/*: Don't use `del x; x = None` idiom

In Python it is enough to do `x = None` to release the object that was
pointed to by x previously. So at Python level doing this extra
del only spends more CPU time, but when we will switch to Cython, and
e.g. Msg.burst will be a C-level attribute, the following will not work
at all

del msg.burst
msg.burst = None

because at runtime it will complain that

        del msg.burst
    AttributeError: 'Msg' object has no attribute 'burst' and no __dict__ for setting new attributes

-> Remove unneeded del to save some time and avoid problems with upcoming switch to Cython.

Change-Id: I7a83bdd52fb9318bd8b975f85ce37c7144873f61
Vadim Yanitskiy at
trx_toolkit/udp_link: Factor code to describe remote into .desc_remote() function

And use that utility everywhere where remote of UDPLink is logged.

The reason we are doing this is that with upcoming switch to Cython the
way remote address is stored will change to `struct sockaddr_in` and
instead of updating all users, we will need to only change
UDPLink.desc_remote() in one place.

Add .desc_local() for symmetry.

Change-Id: I1e2fa560ada7a8de4c9b9150058c2a1c73874fbe
Vadim Yanitskiy at

#8043 (Jan 23, 2026, 8:05:08 AM)

trxcon/l1ctl: print an error for uhnandled DATA.req / TRAFFIC.req

Change-Id: I1d965c2882eb72dc845bea85a4ffaa26d37cee05
Vadim Yanitskiy at
trxcon/l1sched: add API for reading/updating UL SACCH cache

Change-Id: Ica42dbc28cfdd7af2e1becdcc5d45337b70da8a7
Related: 15877ba05 ("trxcon: allow populating global SACCH cache via L1CTL")
Vadim Yanitskiy at
trxcon/l1sched: pre-populate MR cache during lchan allocation

Instead of checking if the MR cache is populated in prim_compose_mr()
and populating it there, let's do this during lchan allocation.  Take
a chance to move lchan allocation logic into its own function.

Change-Id: I079074a402f9c27fff7e25b49bfd1dd409c0f8c3
Vadim Yanitskiy at
trxcon/l1sched: l1sched_reset(): remove unused param

The l1sched no longer has its own clock source, so there's nothing
to reset.  This parameter is no-op and can be safely removed.

Change-Id: I88dfa8770c9cd205006f569315b07f4d91cc08de
Vadim Yanitskiy at
trxcon/l1sched: l1sched_reset(): also reset bsic

Change-Id: I4dfe5663fac12548d33393fe3b1426e5d80f50e7
Related: 8428b1ea0 ("trxcon: abstract out the scheduler API from L1CTL/TRXD/TRXC")
Vadim Yanitskiy at
trxcon/l1sched: add and use l1sched_del_all_ts()

Change-Id: I35ce97459dcd0e2cac4ab8927f02fe0232aa6142
Vadim Yanitskiy at
trxcon/fsm: handle_dch_est_req(): do not reset the scheduler

Calling l1sched_reset() results in resetting the UL SACCH cache,
that may have been populated prior to sending L1CTL_DM_EST_REQ.
Instead, do what the comment says - call l1sched_del_all_ts().

Change-Id: Iff03fa5b90ac1ec30b7937cea6bd09c6ececb5f6
Fixes: c6fe9c3f ("trxcon: trxcon_fsm: permit loop [P]DCH transitions")
Related: 15877ba05 ("trxcon: allow populating global SACCH cache via L1CTL")
Related: OS#6919
Vadim Yanitskiy at