Commit Graph

6566 Commits

Author SHA1 Message Date
Neels Hofmeyr fb75d109a1 cosmetic: penalty timers: constify, tweak doc
Change-Id: I28addc9a16a4c81978290303d368f630a8334228
2018-06-08 16:16:42 +00:00
Neels Hofmeyr dd24cd39c0 use libosmocore's gsm0808_permitted_speech(), gsm0808_chosen_channel()
The guts of bssap_speech_from_lchan() and lchan_to_chosen_channel() have been
moved to libosmocore; call those instead.

The return value of bssap_speech_from_lchan() used to be -1 on error, now the
error value is 0. The only caller did not handle -1 properly, but fed it
directly to a uint8_t.

On gsm0808_chosen_channel() error, log the error. Proper handling is missing.

Fixing the error handling in send_ass_compl() is a separate issue: currently it
is limited to logging, there is no way to return an error yet, nor any actions
to take on error.

Depends: Icca23940791f97fa64dbc3f2734270b99f9550c1 (libosmocore)
Change-Id: Ib5c940a9dae11c5e26d4b47fa9d95fef889ad2f6
2018-06-08 16:16:42 +00:00
Neels Hofmeyr 8cb570cd06 log: assignment: add two logs on unexpected lchan release
Change-Id: Ib61125ebc41e55dc4a6595db8c8559c62b3ed2c0
2018-06-08 16:16:42 +00:00
Neels Hofmeyr 57f32626e3 log: fix logging in rsl_rx_chan_act_nack()
In each code path within rsl_rx_chan_act_nack(), do separate logging of the
NACK to ensure proper termination of each log line.

When receiving a Chan Act NACK, we possibly mixed a LOGP() within an
unterminated other LOGP() that had not been ended with a LOGPC() yet.

Change-Id: Icd2772b21ef3a2ff5af11b7c92dff0ecb4d87ff0
2018-06-08 16:16:42 +00:00
Neels Hofmeyr 0935546b2b assignment: signal assignment failure on chan act nack
When the BTS responds with a Chan Act NACK, i.e. the lchan could not be
activated, immediately signal Assignment Failure to the MSC (in
handle_chan_nack()).

In handle_chan_nack(), adjust log: instead of waiting for timeout, we now
signal Assignment Failure.

Drop misleading logging from bsc_assign_fail(): instead of transmitting the
Assignment Failure message, it actually signals an FSM event. Leave logging of
that to the FSM logging.

Change-Id: Ib204b4a5272f9b7b60ca5f932cd8a4c857316270
2018-06-08 05:47:54 +02:00
Neels Hofmeyr 13269b0f9b cosmetic: gscon: undup code: add common assignment_failed()
Call one common function to signal Assignment Failure and transition back to
ST_ACTIVE.

Change-Id: I1ce10a3ead286cdb6ad529fc293b6cecd151cc9a
2018-06-07 19:09:06 +02:00
Neels Hofmeyr 74c07c7b9c cosmetic: magic number: use RSL_ACT_ constant for chan act
Change-Id: I64ac2a17634f18322828ee2aa2284b0513130488
2018-06-07 19:09:06 +02:00
Neels Hofmeyr c19581f268 remove struct bsc_api
struct bsc_api was used to provide an abstract API for both osmo-bsc and
osmo-msc, between BSC and MSC. That's no longer needed, so get rid of it, to
prevent code turbulences it creates for no reason.

Change-Id: I3fd5888c63a0b4f95520a498320aa105a6d60579
2018-06-07 19:09:06 +02:00
Neels Hofmeyr 958f259f95 dissolve libbsc: move all to src/osmo-bsc, link .o files
Move all of libbsc/ into osmo-bsc/, and separate/move some implementations to
allow linking from utils/* and ipaccess/* without pulling in unccessary
dependencies.

Some utilities use gsm_network and gsm_bts structs, which already include data
structures for fairly advanced uses. Move initialization that only osmo-bsc
needs into new bsc_network_init() and bsc_bts_alloc_register() functions, so
that the leaner tools can use the old gsm_* versions without the need to link
everything (e.g. handover and lchan alloc code).

In some instances, there need to be stubs if to cut off linking "just before
the RSL level" and prevent dependencies from creeping in.
- abis_rsl_rcvmsg(): the only program currently interpreting RSL messages is
  osmo-bsc, the utils are merely concerned with OML, if at all.
- paging_flush_bts(): ip.access nanobts models call this when the RSL link is
  dropped. Only osmo-bsc actually needs to do anything there.
- on_gsm_ts_init(): the mechanism to trigger timeslot initialization is related
  to OML, while this action to take on init would pull in RSL dependencies.
utils/ and ipaccess/ each have a stubs.c file to implement these stubs. Tests
implement stubs inline where required.

From src/utils/, src/ipaccess/ and tests/*/, link in .o files from osmo-bsc/.
In order for this to work, the osmo-bsc subdir must be built before the other
source trees. (An alternative would be to include the .c files as sources, but
that would re-compile them in every source tree. Not a large burden really, but
unless linking .o files gives problems, let's have the quicker build.)

Minor obvious cleanups creep in with this patch, I will not bother to name them
individually now unless code review asks me to.

Rationale:

1) libbsc has been separate to use it for osmo-nitb and osmo-bsc in the old
openbsc.git. This is no longer required, and spreading over libbsc and osmo-bsc
is distracting.

2) Recently, ridiculous linking requirements have made adding new functions
cumbersome, because libbsc has started depending on osmo-bsc/*.c
implementations: on gscon FSM and bssap functions. For example, neither
bs11_config nor ipaccess-config nor bts_test need handover_cfg or BSSMAP
message composition. It makes no sense to link the entire osmo-bsc to it, nor
do we want to keep adding stubs to each linking realm.

Change-Id: I36a586726f5818121abe54d25654819fc451d3bf
2018-06-07 19:09:06 +02:00
Neels Hofmeyr 8f2aaf47c9 bsc_test: drop "scan to MSC" code path
The TEST_SCAN_TO_MSC is completely unused, but still the code linked
bsc_scan_bts_msg() for the unused code path. This is unlikely to ever be
expanded. Remove TEST_SCAN_TO_MSC and reduce linking requirements.

(I am this close to dropping the test entirely to avoid continuous linking
annoyance, but ok, since nothing else tests timezones AFAIK, keeping it.)

Change-Id: I27521950432e412f919cde811c9473557d0ec25e
2018-06-07 17:05:41 +00:00
Neels Hofmeyr 2583b62205 tests: remove channel_test
Rationale: channel_test is trivial and useless, probably only exists as a
legacy from openbsc.git.

- it tests two printf()s of "(bts=45,trx=0,ts=3,ss=4)", hardly useful.
- it tests ts_subslots() behavior for dyn ts, which will soon be replaced by a
  most trivial mapping that does no longer need complex dyn ts state
  evaluation (when introducing the new timeslot FSM to handle dyn TS switchover).

Change-Id: Ib2232da8e7fa964b92492d7b778320401dc97703
2018-06-07 17:05:41 +00:00
Neels Hofmeyr 5cb01655c5 tests: remove bssap_test
Rationale:

- All it does is compose four Paging Requests and feed it into the osmo-bsc
  bssap_udt, and expects the cell identifier to be decoded properly.
- To do so it employs a comparatively huge linking effort. This linking effort
  is becoming annoying in my ongoing work and is just not worth it.
- We have comprehensive cell identifier tests in ttcn3, verifying that the
  proper cells are paged, and that actually for *all* cell identifier types.

Change-Id: I07cf23b66de36cfa1142a11b9f85e9c0190ee314
2018-06-07 17:05:41 +00:00
Stefan Sperling 39a1d10c11 increment 'paging responded' counter for active paging only
Only count paging responses which can be mapped to an active paging.

Unsolicited paging responses which do not correspond to an active paging
would increment the 'paging response' counter. This means the number of
paging attempts could be smaller than the number of paging responses,
which can look confusing in the 'show statistics' VTY command.

Change-Id: I7cfc7c29fb7570d41e3ac23cca17f5b98b303506
Related: OS#66
2018-06-07 17:14:16 +02:00
Harald Welte b5f81b9fbd Reject ASSIGNMENT REQ with CIC but no AoIP transp addr in AoIP case
If we receive a BSSMAP ASSIGNMENT REQ for a speech channel
containing only a CIC but no AoIP transport layer address, then that's
illegal and must be rejected.

In Change-Id If362a0084de452727cd063063dfb645eca2f9beb we re-introduced
accepting CIC-only ASSIGNMENT REQ, but we failed to verify that this
actually only happens over a SCCPlite A interface.

This fixes the BSC_Tests.TC_assignment_cic_only testcase.

Change-Id: Ia6e3897edca48b9f838ea69939d9b8be7185abf8
2018-06-05 21:57:54 +02:00
Harald Welte 1f1c56c622 LCLS: add VTY config to enable/disable LCLS on per-MSC basis
The user might not want to enable LCLS support for administrative
reasons.  So let's keep it disabled by default, until somebody
explicitly enables it with "lcls-mode mgw-loop".

In the future, we may want to introduce a "lcls-mode bts-loop" where we
don't loop at the BSC-colocated MGW, but where we instruct the BTSs to
feed the RTP directly to each other.  This would require a
falt/transparent IP routing between the BTSs in the RAN.

Change-Id: Ied7985056c8cd182bf16119007a08cc5be14459b
Related: OS#1602
2018-06-03 12:26:42 +02:00
Harald Welte c997ceb750 Add initial 3GPP LCLS support to OsmoBSC
This code contains the following code:
* receive/parse/interpret LCLS specific BSSMAP IEs and PDUs
* osmo_fsm handling the various states and their transitions
* call leg correlation (finding the other subscr_conn with same GCR)
* communication between the two call-leg LCLS FSMs
* detection of supported / unsupported LCLS configurations
* display of GCR / LCLS information in "show conns"
* switch the media streams locally using MDCX to the MGW

Closes: OS#1602
Change-Id: I614fade62834def5cafc94c4d2578cd747a3f9f7
2018-06-02 20:56:17 +02:00
Harald Welte 00965dca2b VTY: Print some more information in "show conns"
We now print information such as
* SCCP connection ID
* MSC number
* handover decision2 fail count
* channel mode (SIGN/SPEECH)
* MGW endpoint
* secondary lchan (if any, e.g. during assignment)
* don't crash if conn->lchan == NULL

Change-Id: I2f8000844afc9da93ca39976399e5f76a45530de
2018-06-02 20:56:17 +02:00
Pau Espin 8bf8142dba abis_rsl: rsl_rx_chan_rqd: Format bts log string as in everywhere else
Change-Id: I7928d78e2ce3e6eca545455d08bc89ca67e01f9f
2018-05-30 14:32:59 +00:00
Pau Espin fe82012b01 abis_rsl.c: Fix whitespace
Change-Id: I67659275beda1b6a89bdf11eb0231438b0c8b912
2018-05-30 14:32:59 +00:00
Pau Espin 18a4ae818f chan_alloc: Print bts nr on chan alloc failure
Also change format of related debug message to match similar format than
gsm_ts_and_pchan_name().

Change-Id: Id4f875944c40fd862fc63feec82216c45d2e41c2
2018-05-30 14:32:59 +00:00
Neels Hofmeyr 71e5a827ef doc: add msc charts on Assignment/Handover internals
In doc/, add two message sequence charts with lots of implementation specifics,
to clarify the current code state. Mark various problems in red notes.

This chart and others should help to illustrate future code changes as I go
along refactoring handover, lchan allocation and adding inter-BSC handover.

Change-Id: I20999e938441d4fed2d37462b262b74a696f616d
2018-05-28 14:30:23 +02:00
Pau Espin 67f20bc356 acc_ramp: Increase log level of some messages
Right now, it's impossible to see any ACC Ramping information unless RSL
category is set to DEBUG. Barring and Allowing Access Control Class is
an important event which should be printed in most cases.

Increase log levels of messages printed during some error conditions to
be handled as errors.

Change-Id: I5404e91fe7c0b3209e8033594e659387bbc924d6
2018-05-28 11:58:06 +00:00
Harald Welte 1876c3108c move 'extern struct gsm_network *bsc_gsmnet" to header file
It's not a good idea to keep extern declarations copied over
half a dozen C files.  Let's move it to a header.

Change-Id: I6f643f1393ba0955d9c0cf1cf78d5c604e7b9451
2018-05-27 20:17:06 +02:00
Harald Welte 68e4be9c84 Remove 'struct bsc_msc_connection' + fix IPA-encapsulated CTRL
The bsc_msc_connection dates back to the old pre-libosmo-sigtran
days, and 90% of the field members weren't used at all (even the
new sigtran specific ones!).  Let's merge what remains into struct
bsc_msc_data.

As a side effect, the already dysfunctional "dest A.B.C.D" VTY
command has been removed from the MSC node.

There's quite a bit of fall-out in the CTRL interface, which was
the code with strongest ties to bsc_msc_connection.  This was
resolved by properly porting CTRL handling over to libosmo-sigtran,
meaning that an IPA/SCCPlite connected MSC can now again send CTRL
GET/SET commands, and can also receive those selective few TRAPs
that old osmo-bsc-sccplite also sent to its MSC[s].

Change-Id: I6b7354f3b23a26bb4eab12213ca3d3b614c8154f
Related: OS#2012
2018-05-27 20:17:02 +02:00
Harald Welte 1c9b8b1917 remove remaining bits of osmo-bsc_nat
osmo-bsc_nat is too heavily tied into legacy SCCPlite code, as it
is not using libosmo-sigtran/osmo_ss7 so far.  It's also full of
customer-specific code and it's shared use of some libbsc code here
has been complicating osmo-bsc development.

The current plan is to continue to use osmo-bsc_nat from openbsc.git
for those legacy users that need it, and not use osmo-bsc_nat in
new 3GPP AoIP setups.  Should we ever get a strong demand for an AoIP
based bsc_nat, we can still revisit this later.

Change-Id: Ia05dc76336a64a7f08962843b9a7cc19f2c83387
2018-05-27 17:48:49 +02:00
Harald Welte 7b897dfea5 bsc: Don't create MSC-side MGCP connection in IPA/SCCPlite case
In IPA/SCCPlite, the MSC is handling MGCP to the BSC-MGW directly
and the BSC only takes care of the BTS-side MGCP connection.  We
achieve this by transitioning directly from WAIT_MDCX_BTS into ACTIVE
in this case.

Change-Id: I96179b4324b976bded36023a8ccbdc007b6b3e05
Related: OS#2544
2018-05-25 20:59:13 +02:00
Harald Welte 200a0e2d0a bsc: Don't include AoIP IEs in ASSIGNMENT COMPLETE over SCCPlite
Change-Id: I6ace15f368b5ba6e5c8845ea21d17dd3a7a15be7
2018-05-25 18:58:16 +00:00
Harald Welte f6029bac5e bsc: Don't reject ASSIGNMENT for Audio in IPA/SCCPlite case
Change-Id: If362a0084de452727cd063063dfb645eca2f9beb
2018-05-25 18:58:16 +00:00
Harald Welte 2dd05a85f9 bsc: Use correct MGCP endpoint name for IPA/SCCPlite
In IPA/SCCPlite, we have to use the CIC to construct the MGCP
endpoint name instead of the usual dynamic endpoint allocation.

Change-Id: I03e2cdbc8e40169e52df3720c40b66734e880525
2018-05-25 18:58:16 +00:00
Harald Welte 584ab8e11f bsc: Add mgcp_port_to_cic() to determine CIC from RTP Port
Also: Move mgcp_timeslot_to_port() next to it, as they are
more or less the inverse transformation of each other.

Change-Id: Ica908e2bb8fc4e59e0d146b428c93a9efc385688
2018-05-25 18:58:16 +00:00
Harald Welte 3909d99fae vty: Permit selection of other ASP protocol than M3UA
We used to have hard-coded M3UA.  Let's allow the user to configure
this per MSC using a new "asp-protocol (m3ua|sua|ipa)" VTY command.

For SUA this should just work 1:1 without any trouble.  For IPA,
this of course only changes the underlying transport without reflecting
the various differences in terms of BSSMAP ASSIGNMENT, MGCP handling,
etc.

Change-Id: I0800c709e574cedd7f5dd98be81c78782245cd13
Related: OS#2544
2018-05-25 18:58:16 +00:00
Harald Welte 631bde0e9b bsc: Fix check for MSC-side FSM allocation failure
In gscon_fsm_wait_mdcx_bts() we try to allocate conn->user_plane.fi_msc
but then check whether conn->user_plane.fi_bts is set, possibly due to
a copy+paste error.  Let's fix that.

Change-Id: I1f515910f67492257866791588f32b350fadf815
2018-05-25 17:33:42 +00:00
Stefan Sperling 5de80ca696 fix misaligned memory write access in abis_nm_ipaccess_rsl_connect()
Use memcpy() to avoid unaligned access, instead of writing through a
pointer cast to uint32_t. Problem spotted by address sanitizer:

abis_nm.c:2802:24: runtime error: store to misaligned address 0x7ffc95396706
for type 'uint32_t', which requires 4 byte alignment
0x7ffc95396706: note: pointer points here
 81 0b bb 80 00 00  00 00 ed 79 28 56 00 00  e0 9c 00 00 a0 61 00 00 ...
             ^
Related: OS#3196

Change-Id: I8e591a56ae522b371da01ea968151a7e6fa24bb9
2018-05-24 13:06:46 +00:00
Philipp Maier 02d20da183 gscon: remove dead code
The state ST_WAIT_MODE_MODIFY_ACK can never be reached by the
current FSM model.

- Remove ST_WAIT_MODE_MODIFY_ACK and all related code

Change-Id: Iacaae2ee50ca1956066b7dce4517bbc9c2b0897e
Related: OS#2762
2018-05-23 16:04:18 +00:00
Neels Hofmeyr 74e4daa695 cosmetic: logging and ordering in handle_ass_compl()
* Check the message length once at the start, before any other actions.
* Use only one local gsm48_hdr pointer.
* Read the cause value once near the top, re-use it.
* Log "ASSIGNMENT COMPLETE" always, not only during handover.
* Fully initialize local struct lchan_signal_data.

Change-Id: Idcfd932d3dfb0b621ed6d8c4f92c0231abcdcec8
2018-05-23 13:32:02 +02:00
Neels Hofmeyr 163f631f08 cosmetic: define TCH_F_PDCH_PENDING_MASK as actual bitwise or
Change-Id: I5266d6e1ea0ea89c66fa481136c31e2f84bcb313
2018-05-23 13:32:02 +02:00
Neels Hofmeyr 746d1ea9fe cosmetic: bsc_dyn_ts.c: make local functions static
Change-Id: Iee47b4ffefedf9532e11f17d5f9b603fc8872cb9
2018-05-23 13:32:02 +02:00
Neels Hofmeyr 59afaa9b8d abis_rsl.h: drop unused rsl_chan_activate() declaration
Change-Id: I28a48dc9a1719793d369468aa9a4bdcf460d201c
2018-05-23 13:32:02 +02:00
Neels Hofmeyr 8da2233426 bsc_api.c: actually log with context
bsc_api.c notoriously lacks log context. Provide gsm_lchan_name() and/or
bsc_subscr_name() in roughly a million instances, using new LOGPLCHAN macro.

Add LOGPLCHAN() to gsm_data.h, to encourage use of it in other .c files.

Change-Id: If469defcc6fe8950dac5df61db3f39d297893318
2018-05-23 07:27:39 +00:00
Pau Espin 20388b781d nat: Add jitter buffer on the uplink receiver
Default usage values are defined in mgcp node, and can be per-BSC
overriden on each bsc node.

This commit is a forward-port of openbsc.git Change-Id
Ibf3932adc07442fb5e9c7a06404853f9d0a20959.

Depends on osmo-mgw.git Change-Id Ie19a64ac09f9d51f2434ad0d7925610fc919a90e.

Change-Id: Ie07b8a577caf731d59d68e3b3510ae2f9fd3dc93
2018-05-22 09:57:42 +00:00
Stefan Sperling 7926d98509 add counter for connection attempts from BTS with unknown unit id
Add a global counter to the BSC which shows the number of failed
connections attempts due to a unit_id mismatch between the BSC
and the BTS.

Change-Id: I58866aff36a1c8463bf84b4392a5124ffeaa32ea
Related: OS#3245
2018-05-22 10:11:34 +02:00
Stefan Sperling 71d524c059 show all global counters of osmo-bsc in vty
The 'show statistics' VTY command was not showing all counters
maintained by osmo-bsc. Instead of printing just two counters
related to paging, print all available counters in a generic way.

Adjust descriptions of some counters for nicer display.

After startup (all counters are zero) is now looks like this:

OsmoBSC# show statistics
       handover:attempted:          0 Received handover attempts.
      handover:no_channel:          0 Sent no channel available responses.
         handover:timeout:          0 Timeouts of timer T3103.
       handover:completed:          0 Received handover completed.
          handover:failed:          0 Received HO FAIL messages.
         paging:attempted:          0 Paging attempts for a subscriber.
          paging:detached:          0 Paging request send failures because no responsible BTS was found.
         paging:responded:          0 Paging attempts with successful response.
OsmoBSC#

Change-Id: I58ae04e1960774d760e3ebb54a4f307c9f753655
Related: OS#3245
2018-05-18 11:38:24 +00:00
Philipp Maier 0b10399937 a_reset: cleanup + remove dead code
The function a_reset_free() is not used anywhere at the code. The
reason for this is that a BSC instance is never cleared once it
is started up. Also the timer number is not according to the spec.

- Remove a_reset_free()
- Fix timer identification number (T4)
- use fi->priv to hold context info
- Fix sourcecode formatting

Change-Id: I72095d52304c520e383755eee6c889bce492cbd4
Related: OS#3102
2018-05-17 20:13:52 +00:00
Pau Espin e5a9665c00 Bump version: 1.2.0.9-a7008 → 1.2.1
Change-Id: I5f6135b7e16cac95c58a1bbc147234e10ee37574
2018-05-15 14:10:38 +02:00
Neels Hofmeyr 5deea620dc cosmetic: dyn ts init: undup logging for gprs = none
Reshuffle the decision not to activate PDCH when GPRS is off:
Even though all current callers should avoid passing a PDCH activation in case
GPRS is off, it's a better idea to not assert on it and crash osmo-bsc.

Move the decision to omit PDCH activation and logging about it into the actual
functions that do PDCH activation. If PDCH activation is skipped, the lchan
then just stays as it was, and that's what it should anyway be doing.

Change-Id: Ib26642f08044d71a2469e6dbabf1e6fbcb02044d
2018-05-14 11:56:11 +00:00
Neels Hofmeyr d16732f693 log: indicate hr/fr in audio_support_to_gsm88() error
Change-Id: Iaaa710d0274fe813d227cb658d82a24db68c4161
2018-05-14 11:56:11 +00:00
Neels Hofmeyr 3ed1c593c6 fix default fallbacks in audio_support_to_gsm88()
For audio->hr == true, use HR1, and for hr == false use FR1; not vice versa.

Change-Id: Ifb4dba7c8e9c1d0a22a007355fbd2eda57e789d3
2018-05-14 11:56:11 +00:00
Neels Hofmeyr 78faf70fef deprecate dyn_ts_allow_tch_f and by default allow all TCH
In osmo-nitb, the way TCH lchans were assigned often resulted in mismatching
TCH kinds, causing problems in the lack of transcoding. Hence
dyn_ts_allow_tch_f was introduced as a workaround.

Now however, we always assign an SDCCH to a requesting MS first, and only later
assign a TCH channel, which then adheres to the codec list configured at 'msc'
in the vty config. Hence it is now considerably harder to obtain a mismatch.

Furthermore, forcing specific codecs is possible by simply omitting the
unwanted ones from the msc config's codec-list. The equivalent of
'dyn_ts_allow_tch_f 0' could be e.g. 'codec-list hr3 hr2 hr1'.

Change-Id: Ib2335d02ea545aff837aadd49f15b2fdb418c46e
2018-05-14 11:52:56 +00:00
Neels Hofmeyr a70084b035 debug log: verbosely log all lchan alloc choices
Change-Id: If0070b8f7b6cc7fffbc582cf9f472e60f3096000
2018-05-10 05:50:30 +02:00
Neels Hofmeyr 4281b7daa7 dyn TS: allow any pchan type changes, fix for gprs mode none
In rsl_chan_activate_lchan(), remove a condition to also allow switching pchan
modes when not in PDCH mode, which is actually not needed and would hinder
switching from pchan=NONE or between TCH/F <-> TCH/H.

Refactor the part where lchan_alloc() decides to switch a pchan mode into a
separate function, ts_usable_as_pchan(), which transparently checks both dyn TS
kinds for:

- Already in switchover? (missing check for ip.access style dyn TS)
- Is the lchan->state in error? (missing check for ip.access style dyn TS)
- Switch from pchan=NONE? (missing feature for Osmocom style dyn TS, for proper
  handling with gprs mode none)
- Switch between TCH/F <-> TCH/H when all subslots are unused?
  (missing feature for Osmocom style dyn TS, also useful for gprs mode none)

Always pass the desired pchan in the dyn_as_pchan argument to the _lc_find_*
functions to make switchover decisions transparent. Use the _lc_dyn_find_bts()
function for ip.access style dyn TS for the same reason.

Related: OS#3244
Change-Id: I72d5d833b186b1e1925d513885b405d8c19aa496
2018-05-10 04:53:53 +02:00