aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc
AgeCommit message (Collapse)AuthorFilesLines
2019-08-22lchan_fsm: allow transition from broken state to releaseNeels Hofmeyr1-0/+1
If a channel activation ack comes in late from a BTS, the borken state has a transition back to a channel recovery. This only fails because of a missing state transition in the lchan_fsm. Allow the transition. We've seen this happening at cccamp2019, where a particular BTS for unknown reasons sends its Chan Act ACK a second after the activation times out in osmo-bsc. This patch should allow it to recover. Change-Id: I73139033ae44abb383ccce956c1c9683db8c8816
2019-08-22handover2 congestion check only with algorithm 2Neels Hofmeyr1-3/+9
Change-Id: Ieb9f5f4227c72f4633de3e2d06b5ee292b09dee6
2019-08-22make chan activ and timeslot ready timeouts configurableNeels Hofmeyr2-2/+4
Timer X1 sets timeout-ready timeout, X2 sets lchan activation timeout. Change-Id: Ifae259a84af9a0d7851644eb4148263c25f49233
2019-08-13neighbor config: allow re-using ARFCN+BSIC pairsNeels Hofmeyr4-46/+220
Fix neighbor config to match OsmoBSC manual: implement the plan for neighbor configuration that was so far only described in the manual without actually being in operation. This first allows re-using ARFCN+BSIC pairs in and across BSS. So far the handover_start() code always looked for handover target cells across *all* local cells, even if they were not listed as neighbors to a source cell. Imply all cells as neighbors only as long as there are no explicit neighbors configured. As soon as the first 'neighbor' line appears in a 'bts' config, only the listed neighbors are regarded as handover target cells. (The 'neighbor-list' commands are not related to this, only the relatively new 'neighbor (bts|lac|cgi|...)' commands affect actual handover procedures.) TTCN3 tests TC_ho_neighbor_config_1 thru _7 play through the various aspects of neighbor configuration: both the legacy implicit all-cells-are-neighbors as well as allowing only explicit neighbors by config. Related: OS#4056 Related: osmo-ttcn3-hacks Ia4ba0e75abd3d45a3422b2525e5f938cdc5a04cc Change-Id: I29bca59ab232eddc74e0d4698efb9c9992443983
2019-08-13add vty 'no neighbors' to remove all HO targetsNeels Hofmeyr1-0/+86
This is required for an upcoming TTCN3 test that plays through various neighbor configurations. Related: OS#4056 Ia4ba0e75abd3d45a3422b2525e5f938cdc5a04cc (osmo-ttcn3-hacks) Change-Id: I8623ab581639e9f8af6a9ff1eca990518d1b1211
2019-08-12bsc_msc_data: remove unused member is_authenticatedPhilipp Maier2-9/+0
The struct member struct bsc_msc_data->is_authenticated is set to true permanently. This is a leftover from the sccplite implementation and can be removed now. Change-Id: I966a48b383c85345c92c9a1fec791150e96cd7b9 Related: OS#3112
2019-08-05Remove undefined param passed to logging_vty_add_cmdsPau Espin Pedrol1-1/+1
Since March 15th 2017, libosmocore API logging_vty_add_cmds() had its parameter removed (c65c5b4ea075ef6cef11fff9442ae0b15c1d6af7). However, definition in C file doesn't contain "(void)", which means number of parameters is undefined and thus compiler doesn't complain. Let's remove parameters from all callers before enforcing "(void)" on it. Change-Id: Ic3c578347864fa225feb6d2dbe14798b9c19ace0 Related: OS#4138
2019-07-26rest_octets: add Serving Cell Priority ParametersPhilipp Maier1-2/+19
When we add an EARFCN to to the SI2quater struct we do not add Serving Cell Priority Parameters. This essentially causes to MS to ignore the EARFCN because it is still undefined under which conditions the MS should change to LTE. Related: SYS#4510 Change-Id: I7eaf7de4386fe8aea404e8a187d8a1f5ed596ead
2019-07-19vty: Fix typo in VTY command descrption -> descriptionHarald Welte1-6/+28
Let's add deprecated aliases for backwards compatibility Change-Id: I0e5da9d702910cf2571486e22a56f3ec17d0d67b
2019-07-16Fix some spelling errors found by lintianRuben Undheim7-7/+7
Change-Id: I63a733f8bea69f355a6686d99c3aa194c8ac9012
2019-07-16logging: introduce LOG_BTS and LOG_TRX and use it everywhereHarald Welte8-105/+83
It's quite ugly to have manual "bts=%d" printf-statements all over the BSC code. Let's change this to use shared logging helper functions all over the place, whenever we need to log something related to one BTS or one TRX. This can also help us as the first step to later add alternative logging of BTS identities, e.g. by printing the Cell Global Identifier or LAC+CI, or even a human-readable/vty-defined 'name' of the BTS, rather than its numeric bts number. With this change in place, we can introduce such changes at a single location in the code. Change-Id: I4a7814d164384eecfb6913c31802cf2faead6e6c
2019-07-13silence error for "invalid enum handover_scope value: none"Neels Hofmeyr1-0/+1
If no target cell got selected in a handover attempt, enum value NO_HANDOVER is used. In that case, do not log a lot of errors saying "invalid enum handover_scope value: none" -- they are misleading. Change-Id: I98e748bea58ebb02812b6aaa6431c7d4b813242d
2019-07-13comment and VTY doc tweaksNeels Hofmeyr2-4/+5
Clarify some in-code comments. Fix descriptions of some handover timers, which still talked of "MO" and "MT" handover -- which we now call "inter-BSC out" or "inter-BSC in" instead. Change-Id: I8429a830edd0325893ac90f22fcc05309617bd2d
2019-07-09remove double BSSMAP Clear on HO failureNeels Hofmeyr1-8/+0
If a handover fails when the new lchan is already fully established, osmo-bsc so far caused two BSSMAP Clear Requests to be sent out to the MSC: one caused by detaching the lchan from the gscon, one from returning the gscon back to ST_ACTIVE, which detects that no lchan is present and Clears. In fact only one of those is necessary. Checking for the presence of an lchan when entering ST_ACTIVE is an earlier attempt to catch insane situations. Since then, osmo-bsc has acquired other logic that will ensure sending a Clear Request in all cases, see gscon_forget_lchan(). Sending another BSSMAP Clear Request in ST_ACTIVE's onenter is simply not necessary. Drop gscon_fsm_active_onenter() entirely. Note: the double Clear Request is currently hit by TC_ho_out_fail_no_ho_detect(), which currently fails and will pass again after this patch; however, osmo-bsc should actually not release the lchan at all during this test, see OS#4093. In other words, osmo-bsc behavior for this scenario as well as TC_ho_out_fail_no_ho_detect() need to be changed, and the test will, once fixed, not be useful to trigger this issue anymore. Related: OS#4078 Change-Id: Iac1519eb8b24e8523caec682f9ac8e6dcf1327ce
2019-07-09doc/manuals, vty doc: more handover doc clarificationsNeels Hofmeyr1-1/+2
Related: OS#3487 Change-Id: I1639efb2dbcca4f0e9c33a74f3067606ce5f4209
2019-07-08make bsc_clear_request() staticNeels Hofmeyr1-2/+4
bsc_clear_request() is in fact used only within gsm_08_08.c, make it static to that file. Since the gscon FSM, "real" BSSMAP Clear are sent only by gscon_bssmap_clear(). bsc_clear_request() remains in use for legacy code paths in gsm_08_08.c: - the bsc_filter, i.e. for IMSI filtering; - in move_to_msc(), from handle_cc_setup(), a code path that is in fact not entirely clear to me. It seems to be an old functionality to serve multiple MSCs? Both of which I personally haven't seen in use, are not tested and should probably be completely removed. For now contain legacy code in the static context. Adjust comment. Change-Id: Ic89d0afad42e4b11183a13d2dc6b7bbf0b822fd9
2019-06-26bsc_subscr_conn_fsm: Log Tx of BSSMAP Clear Request with causePau Espin Pedrol1-1/+5
Change-Id: Ief0ec314723ce1d23da334df2add73c36ebf19f3
2019-06-26bsc_subscr_conn_fsm: Use gscon_bssmap_clear() helper on send failurePau Espin Pedrol1-3/+1
Change-Id: I45b42b76c260a5bac416ad3a5761918a8ab59f86
2019-06-18Re-introduce support for IPA-encapsulated MGCPHarald Welte5-20/+167
Old osmo-bsc-sccplite already supported this, but in the migration over to libosmo-sigtran and to real 3GPP AoIP, this functionality got lost. We now create a UDP proxy socket. Any MGCP commands received via IPA from MSC (or rather: bsc_nat) are retransmitted to the MGW via UDP on this socket. Any responses back from the MGW received on the UDP socket are retransmitted back to MSC/bsc_nat as MGCP inside the IPA multiplex. Closes: OS#2536 Change-Id: I38ad8fa645c08900e0e1f1b4b96136bc6d96b3ab
2019-06-06vty: adjust config name for unit-idEric Wild1-7/+32
Having different names for the same config setting is misleading, so let's stick to the one used by osmo-bts. Change-Id: Ide5ceb5db7403a70313405752579e30d7bb94eac
2019-06-06bsc: Append Osmux Support IE only on AoIPPau Espin Pedrol1-2/+2
Since in SCCPlite the BSC-attached MGW is controlled by the MSC, we don't need this kind of signalling. It's only needed for AoIP. Related: OS#2551 Change-Id: I802fc65c593e42aaa7a15cecab7a2f2b77ade3ea
2019-06-06Introduce msc_is_{sccplite,aoip}() helpersPau Espin Pedrol2-17/+3
Having the helper makes it easier to read/find for transport type checks. It will be ifurther re-used in forthcoming commits. Change-Id: Ic0ee4c472e29ec3092049e5e23b744395613616d
2019-05-26rx_fail_evt_rep(): Don't recycle variableHarald Welte1-2/+2
the 'p_val' variable should represent he 'probabl cause value' and nothing else. Let's use other local variables for other things. Change-Id: Ie79279fc1d42cd57e7478820493b250fe38c2f4f
2019-05-26Allow VTY to set the CCCH Load Indication ThresholdHarald Welte3-1/+20
Add a new VTY command "ccch load-indication-threshold <0-100>" by which the user can configure the threshold after which the BTS shall send CCCH LOAD IND. It used to be hard-coded to a default value of 10. Change-Id: I059fe4627438e26a06e00d84e342b736ab7af440
2019-05-24vty: Dump per-bts stat_item group in 'show bts' outputHarald Welte1-0/+2
Change-Id: Ie56d3f0951b56d9b3677bf8cc725ac777d9aa446
2019-05-24keep per-BTS stat_items about RACH busy / RACH access percentageHarald Welte2-0/+10
Change-Id: I3ad0cc4866d6210181cbafbab876e8028ad27540
2019-05-24chan_alloc: Don't include CBCH channels in load computationHarald Welte1-0/+4
When displaying the channel (lchan) load, we are interested in the dedicated channels as available for communication with mobile stations. If CBCH is enabled, it "steals" one of the SDCCH slots, so we have to exclude this channel from the count of available dedicated channels. Before this patch, A CBCH would show up as "in use" dedicated channel (so both the total and the in_use count were incremented). After this patch, neither "total" nor "use" are affected; The CBCH slot is completely excluded from load statistics. Change-Id: I606962e4977f122ff05a2d4e756c04c7f38bdaa0
2019-05-24smscb: Allow transmit of SCHEDULE and DEFAULT SMSCBHarald Welte1-5/+19
Change-Id: Iad41d24c87d091b8eb144544802d44def925ca70
2019-05-24abis_rsl: Fix log message about unimplemented common channel msgHarald Welte1-1/+1
The log is about an unimplemented CChan message, not a TRX message. Change-Id: I52bcf1fd79417ee5bfb054456a0b427e174114dd
2019-05-24abis_rsl: Avoid "Unimplemented" log message for every CBCH LOAD INDHarald Welte1-2/+4
Now that OsmoBTS is generating CBCH LOAD IND messages, let's avoid spamming the BSC log with notices about receiving this unimplemented message. Change-Id: Ida5045ec7a18c1062a3b80a381db52d5c98e9966
2019-05-24abis_rsl: Add support for extended CBCH to rsl_sms_cb_command()Harald Welte2-2/+4
Now that OsmoBTS understands about extended CBCH, let's at least update the BSC side function to allow for other code to generate such messages. Change-Id: I77a16b75ce311d63fb022475c8ff25fbbcee7f55
2019-05-23lcls: Fix MDCX with garbage on LCLS loop breakPau Espin Pedrol1-1/+1
Commit c997ceb750a67baef1a05590febe1c678b287d8f which added initial code did use memset(0) on the structure. However, later commit b407a8aca45ba8f3426003c4960ca8bd5cfe60e5 modifying the code forgot to initialize it, and as a result most of its fields contain garbage. This results in an MDCX with strange/incorrect values sent when LCLS loop breaks, breaking TTCN3 test BSC_Tests_LCLS.TC_lcls_connect_break. Change-Id: Ib1a7d825690db782a5d14f2d8817acf6cb6a52ea
2019-05-19bssap: Feed Assign Complete with Osmux CID retrieved from MGWPau Espin Pedrol1-2/+24
The CID is sent back to the MSC so it can configure its MGW to send Osmux frames to the BSC MGW using this CID. Change-Id: I77dfdd965ae828c39a9818669177aefd22bc02f2
2019-05-19bssap: Parse Osmux CID on BSSAP Assign Req recv and use it in MGCPPau Espin Pedrol2-0/+30
The Osmux CID obtained from the MSC is passed to the co-located BSC MGW to configure the MSC-side MGW conn of a call leg. Depends on: osmo-mgw.git I73b4c62baf39050da81d65553cbea07bc51163de Change-Id: I86e7e13fc7921e3209fb764c0e7797e7ec09b79e
2019-05-19bssap: Announce Osmux support on RESET (ACK) sendPau Espin Pedrol1-0/+16
Related: OS#2551 Depends on: libosmocore I28f83e2e32b9533c99e65ccc1562900ac2aec74e Change-Id: I6b5b475b6109a2882051445762e27046d015b770
2019-05-19bssap: Detect MSC Osmux support on RESET (ACK) recvPau Espin Pedrol1-0/+23
Related: OS#2551 Depends on: libosmocore I28f83e2e32b9533c99e65ccc1562900ac2aec74e Change-Id: I830e38cc1ffb8b6ebbe299567507160f19beb528
2019-05-19vty: Add option to enable osmux towards MSCPau Espin Pedrol1-0/+24
Change-Id: I30c485c022f2d55e0a004f69b2503da7f91ecb74
2019-05-15Make sure to default to AMR octet-aligned modeHarald Welte1-0/+1
In Change-Id If6d40b2407b87aad2227ea7f15533ef01a3771b3 we introduced the support for both octet-aligned and bandwidth-efficient mode, and added a related VTY option about it. However, we accidentially also changed the default behavior. Without any explicit configuration, we should behave just like we behaved all those years before: Continue with octet-aligned mode. Change-Id: I8b6fd8bec05b35d84ad16275d84f9d363e238d2b Closes: OS#4002
2019-05-07handover_fsm.c: fix: prevent possible buffer overflowVadim Yanitskiy1-0/+1
Change-Id: If51f8f82d3b2462cb7d7a531fe4411509344842b Fixes: CID#197643
2019-05-06abis_rsl.c: missing newlines on log linesNeels Hofmeyr1-4/+4
Change-Id: Ic8885ca75ff23e4813a133f8fe34b7e67a1bc3e3
2019-05-05fix inter-BSC-HO-incoming for AoIP (2/2)Neels Hofmeyr1-6/+31
For AoIP, the AoIP Transport Layer Address IE must be included in the Handover Request Acknowledge message, so the MSC can send RTP to the right place. Add this IE for AoIP. Depends: Ia71542ea37d4fd2c9fb9b40357db7aeb111ec576 (libosmocore) Depends: Id617265337f09dfb6ddfe111ef5e578cd3dc9f63 (libosmocore) Change-Id: Ia05e37da125eb6e7b7be9b974b73261bd72de1f4
2019-05-05fix inter-BSC-HO-incoming for AoIP (1/2)Neels Hofmeyr1-82/+101
Move the HO_ST_WAIT_MGW_ENDPOINT_TO_MSC state up to right after the lchan is done establishing. For AoIP, the local RTP address towards the MSC already needs to be known before the Handover Request Acknowledge is sent, so the AoIP Transport Layer Address IE can be included. This patch only modifies the handover FSM, a subsequent patch adds the IE. Change-Id: I00c18b78573386145af71c4b39f7f22aec24579b
2019-05-03assignment_fsm: Properly support assigning signalling mode TCH/xSylvain Munaut5-124/+157
To support the 3 possible preferences, the changes needed were: - Replace 'full_rate' bool with a 3 option enum to represent the channels types for signalling - Switch from _pref/_alt to using an array sorted in preference order Originally merged as Change-Id I4c7499c8c866ea3ff7b1327edb3615d003d927d3, reverted because the change broke voice calls. Re-submitting with the fix: don't forget to set conn->assignment.requires_voice_stream. Signed-off-by: Sylvain Munaut <tnt@246tNt.com> Change-Id: I7513d2cbe8b695ba6f031ad11560c63a6535cf2d
2019-04-30move mgw endpoint FSM to osmo-mgw.gitNeels Hofmeyr13-856/+161
osmo-mgw.git also includes fixes of the MGW endpoint FSM, for example I92a9944acc96398acd6649f9c3c5badec5dd6dcc. Depends: I9a3effd38e72841529df6c135c077116981dea36 (osmo-mgw) Change-Id: I03e6b48d9b0a5370310d5f56809259ff7909cf9d
2019-04-23use libosmocore osmo_tdefNeels Hofmeyr17-394/+87
Move the T_defs API to libosmocore as osmo_tdefs: remove the local T_defs API and use libosmocore's osmo_tdef* API instead. The root reason is moving the mgw_endpoint_fsm to libosmo-mgcp-client to be able to use it in osmo-msc for inter-MSC handover. When adding osmo_tdef, the new concept of timer groups was added to the API. It would make sense to apply group names here as well, but do not modify the VTY configuration for timers. The future might bring separate groups (or not). Depends: Ibd6b1ed7f1bd6e1f2e0fde53352055a4468f23e5 (libosmocore) Change-Id: I66674a5d8403d820038762888c846bae10ceac58
2019-04-19Revert "fix inter-BSC-HO-incoming for AoIP (1/2)"Daniel Willmann1-102/+81
This reverts commit 94c9324fe07cd0ba1277278270c8979d949e49ec. Multiple ttcn3 handover tests were broken due to this commit. Let's merge this once all the other commits pertaining to that fix can be merged as well. Fixes: OS#3942 Change-Id: I01d93778fb19c601c21f99ec4d2a3ab8a4a48f67
2019-04-17gsm_data.h: Remove unused variable from OpenBSC timesDaniel Willmann1-4/+0
This variable does not seem to be used anywere in OsmoBSC, seems to be a remnant from OpenBSC times. Change-Id: I5e4aa352fa5f16f6ff64738f25afd1a844fa4fcb
2019-04-17Change comments/strings from OpenBSC to OsmoBSCDaniel Willmann1-2/+2
Change-Id: I785278df411b13a701c8441fde798d4bfe79ffd1
2019-04-08fix inter-BSC-HO-incoming for AoIP (1/2)Neels Hofmeyr1-81/+102
Move the HO_ST_WAIT_MGW_ENDPOINT_TO_MSC state up to right after the lchan is done establishing. For AoIP, the local RTP address towards the MSC already needs to be known before the Handover Request Acknowledge is sent, so the AoIP Transport Layer Address IE can be included. This patch only modifies the handover FSM, a subsequent patch adds the IE. Change-Id: I4a5acdb2d4a0b947cc0c62067a67be88a3d467ff
2019-04-08Handover Request: also parse Chosen Algorithm IE, pass to lchan activationNeels Hofmeyr1-0/+29
During inter-BSC-incoming, the MSC sends the chosen encryption algorithm in the Handover Request message. Actually parse this Chosen Encryption Algorithm IE. Place the chosen algorithm and the CK into lchan_activate_info->encr so that the new lchan will use the same ciphering on this new BSS as it did on the old BSS. Change-Id: I5b269f50bd2092516bfdf87746196983d3ac49d1