aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2018-10-31neighbor vty: identify neighbors by gsm0808 cell idneels/neighborNeels Hofmeyr3-35/+414
For deleting neighbor entries and for triggering manual handovers, it is useful to identify neighbors by the gsm0808_cell_id, instead of just by ARFCN+BSIC. This is not a hard requirement, since BTS+ARFCN+BSIC fully identifies a neighbor. But consider these contrived examples of the situation before this patch: # bts 0 # neighbor cgi 001 01 23 42 # no neighbor cgi 001 01 23 42 % No such command # no neighbor bts 5 (manually looked up that BTS 5 has above CGI) # neighbor lac 42 arfcn 23 bsic 5 # do handover any to lac 42 % No such command # do handover any to arfcn 23 bsic 5 (if multiple cells have the same ARFCN+BSIC, the identification is not unique) So this fills a gap, if only to help debugging / analyzing handover operations. Change-Id: I198fe7055d1e09b128693eb51276e3d8cde1c0ba
2018-10-30vty: add 'show rejected-bts'Oliver Smith3-4/+81
Print IDs and IPs of recently rejected BTS devices. Example output: OsmoBSC> show rejected-bts Date Site ID BTS ID IP ------------------- ------- ------ --------------- 2018-10-25 09:36:28 1234 0 192.168.1.37 Related: OS#2841 Change-Id: Iba3bfe8fc9432b7ae8f819df8bd71b35b3ec507e
2018-10-29handover_fsm: fix failure logging of uninitialized chan modeNeels Hofmeyr1-3/+2
The chan mode is figured out per-BTS, but may remain uninitialized. Rather log info about the channel request, like further above. Change-Id: I07b89b6101879fb7c070c87be9bd38cc05ffa0b1
2018-10-29handover_fsm: fix missing newline for log statementNeels Hofmeyr1-1/+1
Change-Id: I41c04cfedaae4da69a2bc7d50b1f7fe0e467e0fa
2018-10-29abis_rsl.c: fix uninitialized RSL cause issuesNeels Hofmeyr1-15/+18
Separate the cause value passed to further functions from the log string. The code tried to be nice by composing the RSL cause string and returning the RSL cause at the same time, which falls on its face when the string composition happens only within conditional logging. Change-Id: Ibadd06102f162bca9182c39b77b0651568d3e6f8
2018-10-25cipher mode reject: send proper cause codesOliver Smith1-0/+3
bssmap_handle_cipher_mode() had code paths doing "goto reject" without setting a meaningful cause value. Related: OS#3186 Change-Id: Ia608fa34a6a2d3035a66d05fbc38553ac5186804
2018-10-25cosmetic: fix spec ref for gsm0808_cipher_mode()Oliver Smith1-1/+1
Change-Id: I359caf1dd30f033c0b606040ccf27aa4c5a9d2c6
2018-10-24lchan_fsm: generate proper multirate configuration IE on RSLPhilipp Maier1-58/+66
During the generation of the multirate configuration IE in the channel activation message that is sent over RSL, all AMR rates except the highest one are trimmed. This was to ensure that the multirate configuration IE only contains one codec rate per active set. Lets fix that and generate a proper IE with threshold and hysteresis values. - extend lchan_mr_config so that it can generate a full multirate configuration IE Change-Id: I7f9f8e8d9e2724cbe3ce2f3599bc0e5185fd8453 Related: OS#3529
2018-10-24bsc_vty: check amr mode parametersPhilipp Maier1-21/+104
The vty already has a well working interface to configure the AMR mode, threshold and hysteresis parameters. However there are no checks yet to prevent against misconfiguration. - Use gsm48_multirate_config() to perform a global check of the overall configuration - Add check AMR modes during input (order, duplicates) Change-Id: I8b9f69b89a39bbf4800d9790f7abe43ce66aeb71 Related: OS#3529
2018-10-24gsm_04_08: improve gsm48_multirate_config()Philipp Maier2-25/+92
The function gsm48_multirate_config() generates the multirate configuration IE, that is sent via RSL to configure the active set of AMR codecs inside the BTS. The function already works, but it does not check the input data for consistancy. Lets add some consistancy check to make sure that inconsistant parameters are rejected. Also allow the output pointer to be NULL, so that the function can be used to perform a dry run to be able to verify parameters. - Check for invalid / inconsistant configuration parameters - Perform a dry-run when lv pointer is set to NULL Change-Id: I06beb7dd7236c81c3a91af4d09c31891f4b910a4 Related: OS#3529
2018-10-23codec_pref: also check amr codec rates in check_codec_pref()Philipp Maier1-0/+49
The function check_codec_pref() currently only does a basic check over the general codec configuration of bts and msc. However, it does not yet check if the amr codec rate settings for the BTSs contradict the allowed/forbidden amr codec rates of the MSC. When the two settings do contradict AMR would not work, even when everything else is correctly configured. We need to check this on startup to spot configuration problems quickly. - Add function to calculate intersections of struct gsm48_multi_rate_conf variables. - Calculate the intersection between the multi rate config of each BTS with the one of the MSC Change-Id: I3537d1c89e2520d35cc0e150ba8e6d3693e06710 Related: OS#3529
2018-10-23gsm_data: set meaningful default values for amr modesPhilipp Maier1-0/+30
The function gsm_bts_alloc() does set default values for the amr rates for a newly allocated bts, but it does not populate the ms_mode and bts_mode flags which contain hysteresis and threshold. Those values are currently set to 0 by default, which does not make much sense. Lets popluate some appropriate default values. - Make sure that .mode .hysteresis and .threshold are populated for MS and BTS in full and halfrate Change-Id: If14843feeeea6584e5991d5c0abb765611dfaa57 Related: OS#3529
2018-10-21handover_decision_2.c: implement HO to remote BSSNeels Hofmeyr1-28/+185
Implement basic support for inter-BSC HO from handover_decision_2: do inter-BSC handover only when rxlev / rxqual / ta drop below the minimum requirements. I considered adding a vty config flag to disable/enable remote-BSS handover, but to avoid inter-BSC HO the user can simply refrain from configuring neighbors for a particular cell. In collect_assignment_candidate(), it is important to clear out any new candidate entry. Hence adopt the same pattern as below: first compose a new (cleared) candidate, then write the entry into the list. Related: OS#3638 Change-Id: Id78ac1b2016998a2931a23d62ec7a3f37bb764c6
2018-10-21handover_decision_2.c: refactor trigger_*()Neels Hofmeyr1-17/+18
a) Prepare for triggering handover for any candidate, remote or local. b) drop redundant arguments. Change-Id: I5ba8b556703010c8e232b516285a837c999f87ef
2018-10-21ipaccess-proxy: Add error handling to IAP CCM ID RESP parsingHarald Welte1-1/+5
Change-Id: I56ec149979572486b904fc1409cf3cd096b6eb34 Fixes: Coverity CID#188867
2018-10-21acc_ramp: An unsigned int is always >= 0Harald Welte1-3/+3
Change-Id: I653ae9ede578370b4d7b1a150e9ec3c0702bbb31 Fixes: Coverity CID#188862
2018-10-21subscr_conn_fsm: Fix null-pointer deref / N-CONNECT.ind from unknown MSCHarald Welte1-2/+3
Change-Id: Id0eca3dd729d2e4c8c6ff83f05efde00b42c16f1 Fixes: Coverity CID#188860
2018-10-21bssmap_handle_cipher_mode(): Don't sent reject if !connHarald Welte1-1/+1
We can only send a reject response if we have a valid conn. Change-Id: I0ea535f494173ad4996c70dc82d7f69455e4e15e Fixes: Coverity CID#188824
2018-10-21ipaccess-config: Fix open() return value checkingHarald Welte1-2/+2
open() returning 0 is valid, but negative values indicate errors. Change-Id: Id7e62116bfee550ef9906e78a0fce6f28af27a97 Fixes: Coverity CID#57865
2018-10-21gsm_08_08: do not include zero length speech codec list.Philipp Maier1-1/+11
When COMPLETE LAYER 3 INFORMATION is generated, it may include a speech codec list that contains 0 elements (which is legal). The specification requires the speech to be include if the network supports an IP based user plane interface. It could be argumented that if no codecs are available, the ip based user plane interface is not supported and therefore the spec does not require the speech codec list IE to be included for those cases. Lets check if the speech codec list has 0 elements and if its zero length, lets omit it completely. - check for zero length speech codec list. - omit speech codec list if it has zero elements Change-Id: I07339322a71376e986a2d75b7bc1f552eafd02b5 Related: OS#3657
2018-10-21handover_start_inter_bsc_in(): Uninitialized variableHarald Welte1-1/+1
This only afffects a log statement, so not really an issue. Change-Id: I8e5b164194855f78a266c1a4441730cc6c378d11 Fixes: Coverity CID#188829
2018-10-21range_enc_determine_range(): Don't dereference array on size=0Harald Welte1-0/+4
Change-Id: I5bbb10af8b8e8ebc22bf79f5468e71a41b5e74b3 Fixes: Coverity CID#182710
2018-10-17gsm_08_08: allow zero length speech codec lists in compl l3 info.Philipp Maier1-6/+1
The COMPLETE LAYER 3 INFORMATION message contains a an Codec List (BSS Supported). When generating the compl l3 info msg, we check if the speech codec list that we have generated before has at least one element. If it has 0 elements we abort immediately. However, speech codec lists with 0 elements are permitted by the spec, so we should remove the checks as there are corner cases where voice support is intentionally unavailable. - Remove check for zero length speech codec lists. Change-Id: Id7332e5273ff0efb85043dd1e1bb804cfe2db944 Depends: libosmocore I1eb1f4466b98bdd26d765b0e4cc690b5e89e9dd6 Related: OS#3657
2018-10-16vty 'show bts'/'show trx': display IPs and portsOliver Smith1-2/+18
This quickly allows knowing which IP a BTS is using in order to SSH into it. Example output: OsmoBSC> show trx ... Baseband Transceiver NM State: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' ip.access stream ID: 0x00 (r=192.168.1.178:34090<->l=192.168.1.37:3003) ... OsmoBSC> show bts ... Paging: 0 pending requests, 50 free slots OML Link: (r=192.168.1.178:57692<->l=192.168.1.37:3002) OML Link state: connected 0 days 0 hours 0 min. 17 sec. ... Related: OS#3145 Change-Id: I37f020fcdb68cafcdbdb621808483d1dd996354f
2018-10-16remote-BSS neighbors: allow only one cell IDNeels Hofmeyr1-0/+10
I believe I have initially misinterpreted the idea behind sending a Cell Identifier List in BSSMAP Handover Required messages. Instead of associating N Cell Identifiers with one ARFCN+BSIC, the idea is to add up N separate ARFCN+BSIC's Cell Identifiers into a list. To keep the door open for future code simplification, make sure to allow only one Cell Identifier per remote ARFCN+BSIC on the VTY UI. Related: OS#3656 Change-Id: Ifb9212fede2333ad68db94188b5cda4fcabe02f8
2018-10-12handover_fsm: adjust inter-BSC HO failure handling to specNeels Hofmeyr1-2/+33
Inter-BSC outgoing lacked the required BSSMAP HO Failure dispatch. Not all cases should send BSSMAP HO Failure, name the relevant spec paragraphs in comments and adjust handling. Related: osmo-ttcn3-hacks If772dbbc5f9790d3f911465e1303dd0a99811154 Change-Id: I0980cacb9713e41a1eef3a0a7f6cc892e8a20da5
2018-10-12lchan_fsm: notify conn of released lchan upon RF ReleaseNeels Hofmeyr1-0/+7
Related: osmo-ttcn3-hacks If772dbbc5f9790d3f911465e1303dd0a99811154 Change-Id: I7621616c24588c2db15ad1ae7ca68cfa0fb76f66
2018-10-12handover_decision_2.c: drop redundant debug_candidate() argsNeels Hofmeyr1-12/+14
No functional change. Change-Id: Ida186946f40d30f4d9ed94d9c1ff9bdb70048626
2018-10-12handover_decision_2.c: find_alternative_lchan: drop gotoNeels Hofmeyr1-11/+9
Don't goto the function end just to log something. Rather log right away and exit early. Change-Id: I6558a6948e8973cc91dae240375af074a5f5547e
2018-10-12handover_decision_2.c: tweak ho candidate loggingNeels Hofmeyr1-49/+65
Use a common LOGPHOCAND() to transparently log both local and remote candidates. Change-Id: I694e3832c55b4e972e05422e5e4508a74a222a71
2018-10-12handover_decision_2.c: tweak commentsNeels Hofmeyr1-2/+3
Change-Id: I8bae3431dfaf23301e72f8f572286753b63a99b9
2018-10-12lchan_fsm: fix failure handling: notify conn when releasedNeels Hofmeyr1-0/+3
Usually, conn->lchan is set to NULL before/upon releasing it. However, if the lchan is still associated with a conn upon/after release, make sure the conn realizes it has no lchan and sends a BSSMAP Clear Request to the MSC. lchan_reset() is the last step before an lchan is fully unused. In there, make sure to notify any conn that might still be associated, with gscon_forget_lchan(). lchan_cleanup() does the same, but in fact this is only called when an lchan is *deallocated*, but instead it usually merely goes to the UNUSED state. It may make sense to call gscon_forget_lchan() sooner, e.g. when entering a releasing state. This here nevertheless is a final safeguard. Related: osmo-ttcn3-hacks If772dbbc5f9790d3f911465e1303dd0a99811154 Change-Id: I88337a18246c44ba48da64bb611a3cbb647a750e
2018-10-12subscr conn: properly forget lchan before releaseNeels Hofmeyr1-8/+22
Clear all lchan->conn pointers when the subscr conn code is choosing to release an lchan, with gscon_release_lchan(). Rationale: when an lchan releases in error, it should trigger the conn to be notified and cause a BSSMAP Clear. However, if the conn is actively requesting for an lchan release, it is already taking care of the situation. Related: osmo-ttcn3-hacks If772dbbc5f9790d3f911465e1303dd0a99811154 Change-Id: I4fd582b41ba4599af704d670af83651d2450b1db
2018-10-12gscon_forget_lchan(): Clear Request iff no lchans remainNeels Hofmeyr1-1/+3
Send a BSSMAP Clear Request only if absolutely no lchan remains associated to the conn, anywhere (Assignment, Handover as well as primary lchan). Conceivable would be a situation where e.g. we're in handover and a new lchan is ready, when just at a time where it doesn't matter anymore the old lchan fails. We could just carry on with the new one then. Change-Id: Ibd8e38ccf7759b8834efdedf742c46c227b26e91
2018-10-12gscon_forget_lchan(): no Clear Request after Clear CommandNeels Hofmeyr1-1/+3
Send a BSSMAP Clear Request only if we are not already in ST_CLEARING, i.e. haven't received a BSSMAP Clear Command yet. Related: osmo-ttcn3-hacks If772dbbc5f9790d3f911465e1303dd0a99811154 Change-Id: Idc749068580da45e821e0af04cfa14cc7ce5c432
2018-10-12fix counters for inter-BSC outgoingNeels Hofmeyr1-4/+4
Fix copy-paste error that resulted in counting outgoing inter-BSC HOs as incoming ones. Change-Id: I188b5db9e98c76153fdfb6f864d2cbfaea77bd5d
2018-10-10codec_pref: also check physical channelsPhilipp Maier1-4/+34
At the moment codec_pref only checks the codec configuration, but it does not check if there is actually a matching physical channel available. This should be checked too we must make sure that the codec we select fits the physical channels available on the BTS. Change-Id: I2d29dfed450e5ef93c26ed5ec9fdc0730eb3d7dd Related: OS#3503
2018-10-10codec_pref: cosmetic: seperate half/full rate determinationPhilipp Maier1-21/+36
The function match_codec_pref determines whether a permitted speech value belongs to a half-rate or full-rate codec. Lets seperate this into a separate function. Change-Id: Iec1db4621ba5a09bc0e3fc40b66f3a3bc5f54add Related: OS#3503
2018-10-08codec_pref: check codec configuration before startPhilipp Maier2-0/+31
In networks with a couple of different BTSs it may be likely that one accidently sets up a codec configuration (codec-support)) that will be mutually exclusive towards the codec configuration for the MSC (codec-list). We need a check that validates the configuration before start to catch such configuration flaws quickly. - Add a check that checks each MSC codec-list against each BTS codec-support setting. Change-Id: Ice827896bab1a2330741e0fccc731a04f1a07d38 Related: OS#3625
2018-10-06nanoBTS: Allow BCCH with CBCH on TS0Harald Welte1-0/+1
Change-Id: I111c7f14e5f70ecbf6c660c1de24c6a5796b2eef Closes: OS#3630
2018-10-05osmo_bsc_msc: Set reasonable codec list defaultsPhilipp Maier1-0/+22
When the user sets no codec-list in the msc node, the configuration will end up with an empty codec list. This is a useless configuration. There should be a sane default setting. - Set all possible codecs as default for codec-list Change-Id: I3749a65828c788f38c22f0a5314533f4516da3ed Related: OS#3625
2018-10-05gsm_08_08: abort complete L3 3 msg gen when no codecs are setPhilipp Maier1-1/+6
The COMPLETE LAYER 3 INFORMATION message should contain a Codec List (BSS Supported) IE. The contents of this list depend on the BTS capabilities and of the MSC configuration (allowed codecs). There may be cases where (due to miss-configuration) the list is empty. In those cases the BSC hits an assertion because the encoding of the overall message fails when the codec list is empty. A check is needed. - Check codec list before message generation, abort if the coded list is empty. Change-Id: I119607047a132b75b3077bbe56c97936d8ae6c96 Related: OS#3625
2018-10-05codec_pref: handle S0-S15 in ASSIGNMENT REQUESTPhilipp Maier5-48/+133
Opposed to all other codecs that are common in GSM, AMR requires a codec configuration that is expressed by a bitmask (S0 to S15) in the speech codec list in the ASSIGNMENT REQUEST. Also the BSC acknowledges those configuration in the ASSIGNMENT COMPLETE message. At the moment osmo-bsc ignores all incoming configuration bits. The bits in the ASSIGNMENT COMPLETE speech codec (choosen) field are hardcoded. - Store the configuration bits while parsing the ASSIGNMENT COMPLETE - Create an intersection with the configuration that is actually supported by the BSS - Return the resulting (chosen) configuration bits with the assignment complete message. - Use the (highest of the) agreed codec rates in RSL channel activation. Change-Id: I2d8ded51b3eb4c003fe2da6f2d6f48d001b73737 Related: OS#3529
2018-10-04osmo_bsc_main.c: initialize rate countersOliver Smith1-0/+1
main() was missing a call to rate_ctr_init(). Without it, the counters increased properly, but the times per second / minute / hour etc. values would always stay at zero. Change-Id: I4466a7aec51673c79b67614c9dde987633e379e0 Related: OS#3579
2018-10-03abis_nm_get_ts: Return TS of correct TRX, not always TRX0Pau Espin Pedrol1-6/+6
Seen while operating a setup with 2 TRX (2 nanobts): DNM <0004> abis_nm.c:703 OC=CHANNEL(03) INST=(00,01,04): bts=0 trx=0 Opstart ACK DTS <0011> bts_ipaccess_nanobts.c:308 timeslot(0-0-4-TCH_F)[0x612000008aa0]{UNUSED}: Received Event TS_EV_OML_READY DTS <0011> bts_ipaccess_nanobts.c:308 timeslot(0-0-4-TCH_F)[0x612000008aa0]{UNUSED}: Event TS_EV_OML_READY not permitte As it can be seen, OML log header state correctly it comes from TRX1, but later content in line expresses TRX0, and that failure is forwarded up the stack and channels for TRX different than TRX0 are never initialized. Related: OS#3560 Fixes: f0ff9a67117dc22d838769fe6eef67778abd43b9 Change-Id: I27e992e419422051247777b048175b724c05323e
2018-10-03osmo-bsc: Add default case for switch(enum)Pau Espin Pedrol3-0/+6
After commit https://gerrit.osmocom.org/#/c/libosmo-abis/+/11207/ (Iaa33b793f89f2d16c9d949503c5ecc195bbcd2a4), input_signal_data->link_type exposes proper enum type, and compiler can warn about missing cases: osmo-bsc/bts_ericsson_rbs2000.c: In function ‘inp_sig_cb’: osmo-bsc/bts_ericsson_rbs2000.c:124:3: error: enumeration value ‘E1INP_SIGN_NONE’ not handled in switch [-Werror=switch] switch (isd->link_type) { ^~~~~~ Change-Id: Ia407a5072896377b68e914e2a05b5e01292ee8ee
2018-09-30cosmetics: Fix typo in bsc_vty.cMartin Hauke1-1/+1
Change-Id: I65d3e6c6dc252fd60d2dd6b6687ceef4d75034ed
2018-09-28fix unaligned access in abis_nm_rx_ipacc()Stefan Sperling1-3/+2
Related: OS#3496 Change-Id: Ia9bdce39472719bfebec29e0a55a021ef45c8ea6
2018-09-27vty: write local neighbors by bts nr, not lac-ciNeels Hofmeyr1-3/+1
Change-Id: I35783f9624eacbdffccdb59a0179ffda54a26990
2018-09-27neighbor vty: allow setting local neighbors by CGINeels Hofmeyr1-2/+13
Add missing item in the landscape of VTY commands: allow identifying a local cell by CGI (besides BTS nr, LAC or LAC+CI, which already exist). Change-Id: I2d03de6b695904c4a86025bf250358d04f6e47de