Commit Graph

7299 Commits

Author SHA1 Message Date
Alexander Chemeris 2a04564efa log: Demote "CHAN RQD: reason" to INFO
The "CHAN RQD: reason" message is purely informational and is a part
of normal operation. Nothing to NOTICE there. Let's demote this to
DEBUG.

Change-Id: I325f2beb3248ed8eb25d1d8494c3868c5be4b758
2020-05-17 23:08:01 +03:00
Alexander Chemeris 7738b07f8c bssmap: Ignore repeated BSSMAP RESET ACK messages.
We're sending multiple RESET messages to establish a conection with
an MSC and MSC can (and often will) respond with multiple RESET ACK
messages. We should not treat this as an ERROR as it used to be
in the original code.

Change-Id: I109d638d5167e24f0357e3541415b9e7269aa5d1
2020-05-17 07:25:47 +00:00
Vadim Yanitskiy d3d03070e2 A-bis: fix logging level mismatch in abis_nm_rcvmsg_fom()
Change-Id: If8f76af4d1e0eb2d7b3534e620e2816cdbbe0b7d
2020-05-16 20:13:00 +00:00
Alexander Chemeris 62766a595d log: Adjust "new SIGTRAN connection" logging level
The "new SIGTRAN connection" message is sent on every new transaction
between an MS and MSC, i.e. A LOT during normal operation. Let's
demote it to INFO and clarify that this is about SCCP connection
instead of a generic SIGTRAN term.

Change-Id: I711b70ae84aa98f43ea3f807ea5c8464b71ca6bb
2020-05-16 17:56:05 +03:00
Alexander Chemeris 7b9c8ea175 log: Fix "Paging request failed" logging level
"Paging request failed" message can be logged e.g. when we're already
paging this subscriber which means we get hundreds of these messages
in a perfectly normal situation. Let's demote this to INFO and adjust
the wording.

Change-Id: I97214796906ac599338e87b2b4b5465ab6b2447a
2020-05-16 17:54:16 +03:00
Alexander Chemeris e0fd48c5ea bsc_vty: Coding style fix - brackets around a complex if/else
Change-Id: I771ef866aba6af9e2a10a06e593eef78b7405377
2020-05-15 01:44:38 +03:00
Neels Hofmeyr 6e06bd3915 manual: fix config example typo 'msc-addr'
Change-Id: Ifb84d7ceddc772e3e1ae59c8d5859b6be6f1b4eb
2020-05-13 19:18:13 +02:00
Alexander Chemeris aac5423415 stats: Rename BSSMAP Rx message counters to match Tx ones.
Change-Id: I29e42687ac084a60007f0b1ec6ec0a102fb4007f
2020-05-11 12:03:21 +03:00
Alexander Chemeris 98824b8f06 stats: Add counters for Tx BSSMAP messages.
We already have counters for Rx side, now we also count Tx side.
See comments in the msc_ctr_description array implementation for
the details.

Change-Id: I89a173f6bdd9a3c21233fe01d07ab2ff0442bb10
2020-05-11 12:03:21 +03:00
Alexander Chemeris 69ba8be60e handover_test: Properly allocate MSC data struct.
Without a properly allocated MSC struct, touching counters crashes
the test.

Change-Id: I7498d2891259be9b532845627f14ac75e98e703e
2020-05-11 00:33:05 +03:00
Alexander Chemeris 169c229d27 stats: Only dereference a connection pointer after checking for NULL.
Addresses CID 210261.

Change-Id: Ic7e7c92c5b9ff696fa7f4cd0d69451cd22333f71
2020-05-11 00:33:05 +03:00
Alexander Chemeris 0ae129e9f0 timeslot_fsm: Allow PDCH_ACT_ACK in BORKEN state.
It should be fine if we receive PDCH_ACT_ACK late. We should just go
into the PDCH state as normal.

Change-Id: If816b681e0b2e76fb7122cf211e15eeee92451ee
2020-05-09 22:27:07 +03:00
Alexander Chemeris bd59b27ae3 lchan: Allow transition from BORKEN state to WAIT_RF_RELEASE_ACK
In the lchan_fsm_borken() we request to change the state to
LCHAN_ST_WAIT_RF_RELEASE_ACK in response to a late
LCHAN_EV_RSL_CHAN_ACTIV_ACK event but this transition is prohibited
by the FSM definition, so the channels stay in the BORKEN state
forever. :(

Change-Id: I17a9b935a116eb842fd0239ef53d73bef35e6511
2020-05-09 22:22:51 +03:00
Alexander Chemeris db668ce4d4 bsc_subscr_conn_fsm: Fix a typo in the comment life->live
Change-Id: Ideba357678a59e3f314a0d618d181a233a43b4de
2020-05-09 18:02:13 +00:00
Alexander Chemeris afa1e8c484 stats: Fix Rx DTAP error stat description
Change-Id: Ie6debad36a49005676ff47eda644c90eee5dc461
2020-05-09 18:02:13 +00:00
Alexander Chemeris eeda0e9442 a_reset: Rename SIGTRAN connection to BSSMAP MSC assocation in log messages
Explanation from Harald:
There are plenty of things that can happen above the bare SCTP/M3UA
connection which can happen, such as SCCP or MTP level routing
problems.

The fact that a MSC responds to a BSSMAP reset tells us that all of
the underlying SS7 transport network is operational and the MSC
responds to us.

Go draw an IP analogy: Saying "SIGTAN connection up" here is like
saying "Ethernet link up" when you get an ICMP response.

Change-Id: If9d37c94f2f2b6cffef97f445774766993f538db
2020-05-09 18:02:13 +00:00
Sylvain Munaut f1c1e7f345 bts_nokia_site: Fake 12.21 OM objet state as "OK" when boot is done
Parts of Osmo-BSC want to see the NM state as valid ...

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I0db11819d23e40272c4aa6fd093365b9c13f7bcf
2020-05-09 15:58:44 +00:00
Alexander Chemeris 8b0f6879ed stats: Export connected OML/RSL links count per BTS.
Change-Id: I88c8025940a0eecb034b1c70f76ea17937fa0325
2020-05-09 12:26:06 +03:00
Alexander Chemeris e26b153bd8 stats: Add counters for received BSSMAP messages.
Change-Id: I3f08d71b58b4e8d6f61376d85c2051e194aa8e43
2020-05-09 12:26:06 +03:00
Alexander Chemeris db54283954 stats: report a number of configured BTS to a stats gauge.
It's useful to know how many BTS are actually configured to compare
it to a number of connected BTS's.

Change-Id: I41cb60f9cb962003227e4a7b63db05acbcdb6f4c
2020-05-09 12:26:06 +03:00
Alexander Chemeris 5e89333b27 stats: Add a stats gauge for the MSC links count.
Change-Id: Ibe4b29056ba704a27b925cfdba49f343ee34f428
2020-05-09 12:26:06 +03:00
Sylvain Munaut 89aa40df79 om2k: Fix invalid use of linked list when building hopping freq list
I originally assumed that after a complete scan with llist_for_each_entry
the loop counter would be either NULL or a valid entry. That's just not
the case.

Fixes: CID#210256

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Iad647b74771c4ac406a88effd371ed7748c8847e
2020-05-09 08:05:21 +00:00
Sylvain Munaut 57a1ec5b2e gsm_data: Update trx_is_usable for ericsson BTS
There is no bb_transc oject.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I34bb808cd21575ff25d36e6df028b140935a008f
2020-05-09 08:05:21 +00:00
Sylvain Munaut 5438554315 chan_alloc: Don't re-invent trx_is_usable and use existing helper
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I1ca4a6ac6ec2f4e40c8421f31871d9c9e5ac5de5
2020-05-09 08:05:21 +00:00
Alexander Chemeris 0d1fe67b7e osmo_bsc_sigtran: Fix a SSCP-> SCCP typo in a comment
Change-Id: Iee7e87922f2aa034840993b4bfad3de8defbf5f1
2020-05-09 00:36:21 +00:00
Alexander Chemeris 6d4ccc1638 chan_alloc: Add comments for the *_chan_load() functions.
Change-Id: Ie199104fd4a6c0d5218f56b958d12fac4612fd78
2020-05-09 00:36:21 +00:00
Alexander Chemeris dbfa85cc08 Fix a comment for the handle_unitdata_from_msc() function.
Change-Id: If20632cfe63b78c2cb17c1bb9d12207a4956be64
2020-05-09 00:36:02 +00:00
Alexander Chemeris 97a27214f1 stats: Fix stat group index for BTS stats.
osmo_stat_item_group_alloc() should be initialized with the BTS number.

Change-Id: Iedef08af56ab6985894d89ff7b285246424ca9e7
2020-05-09 00:35:46 +00:00
Alexander Chemeris 13e5aa24ce Fix indent whitespace and log message.
Change-Id: I985bf8ac4ce6136812692c06b6dc78edc6bde652
2020-05-09 00:07:58 +00:00
Alexander Chemeris 669f87955d stats: Remove dots from the end of stats descriptions.
Change-Id: I4e66b3c864f6c54332fd6dabb0ec549c3590a1f2
2020-05-08 20:25:54 +00:00
Alexander Chemeris b091def16e stats: Report per channel type load to statsd counters.
Change-Id: I2eac4c93061204aeb8f3d223f7e78158c61c7156
2020-05-08 20:25:54 +00:00
Alexander Chemeris 241f058aeb ctrs: Correctly count load total for dynamic timeslots.
From the CS perspective, there is no difference whether this is
a dynamic TS in NONE/PDCH mode or a static TCH in UNUSED mode since
BSC can switch into USED mode at any moment. So we should count
dynamic timeslots in the "total" count.

A bit of a challenge here is that GSM_PCHAN_TCH_F_TCH_H_PDCH
timeslots could be either switched to a single TCH/F or to
two TCH/H, so the total can't be calculated reliably beforehand.
In this code we assume TCH/F since this gives a lower total
count.

Change-Id: Iabd70e8adbf15eb3b7a7be597281ea99b352317b
2020-05-08 20:25:54 +00:00
Sylvain Munaut b405e6e315 om2k: Wait for OM TRX links to stabilize before trying to bring up TRX
The OM2K link "per-trx" only comes up after MCTR is setup. So that means
we need to wait for it before trying to boot the TRX itself.

He we simply apply a "dumb" 5 sec timeout as this is the most reliable
way I found to get this working reliably.

Tracking the link state proved difficult and unreliable:

 - Multiple TRX can be present with their link coming up in random
   order.

 - They can already be up at the start (BTS already initialized from
   a previous boot) and so the link may actually come up, down, and
   up again.

 - All of theses transitions might happens before/after we get to the
   OM2K_BTS_S_WAIT_TRX state depending on how the LAPD timeout
   expire, if the BTS config was actually changed or not and how much
   time it takes to apply the new config.

So all in all, what we must do is wait for the link to stabilize ...
hence just waiting 5 second.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I55a06e08b9c52ff6e97e8c72f2d55770809eba51
2020-05-08 15:16:15 +02:00
Sylvain Munaut 94033ef9a7 om2k: Properly update the 'fake' 12.21 states using OM2000 status
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I1caafa2e87c6198bf3b1a77f0fa1edc774deeef9
2020-05-08 15:16:15 +02:00
Sylvain Munaut cbaa179945 om2k: Add support for MCTR configuration
Currently only supports a single MCTR with fixed configuration

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I96b8bb2c01c05bf153fc924f62bd6aafa96725ee
2020-05-08 15:16:15 +02:00
Sylvain Munaut a40b75e44d om2k: Rename MCTR config request constants for consistency
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I776b0016837e018500ef69acb2f30a274008818e
2020-05-08 15:16:15 +02:00
Sylvain Munaut dbd1b50604 om2k: Add option to limit OML version during negotiation
Starting from G12R13 the MCTR swiches to BSC controlled mode. And
although we think we know how to configure it (via MCTR Conf Req),
something doesn't work right and the timeslot configuration is not
accepted. (TS Conf Result shows "Data not according to request").

So as a workaround for now, we use this version of the protocol where
we don't configure the MCTR (it's in "BTS controlled mode") and with
this protocol, the BTS accepts our timeslot config and we can bring
the system up.

This commit add a generic option to limit either OML or RSL IWD
version to any value. It also keeps track of the actual negotation
version so we can react to it in other places of the code.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I8f0b0ba72056ea4250fe490e7a38630c77c04f65

better version limit

Change-Id: Ia789f8ede3eab7eeca6c759da0109e0b53398f60
2020-05-08 15:16:15 +02:00
Sylvain Munaut ce0b562785 bts_ericsson_rbs2000: Whitelist the E1d input driver
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ief9093706d6ca20f8162ca541dcc4669c13e2cbc
2020-05-08 15:16:15 +02:00
Sylvain Munaut d1f1884dfd bts_ericsson_rbs2000: Init all the TRX, not just C0
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I9417f433f759ce21b8b6e0b74cd686df5388f8c5
2020-05-08 15:16:15 +02:00
Sylvain Munaut 4a048d363b om2k: Fix the frequency specifier for TX/RX/TS conf requests
* OM2K_DEI_FREQ_SPEC_RX:

  (hop << 15) | (rx_addr << 10) | arfcn

  . hop     Hopping marker
  . rx_addr is not really the TRX number, it's just a sequential number
            different for all TRX, doesn't need to be 'in-order' of TRX
  . arfcn   The ARFCN number (0 for hopping and 1023 for 'no frequency')

* OM2K_DEI_FREQ_SPEC_TX:

  (hop << 15) | (tx_id << 10) | arfcn

  tx_id Pretty much same as rx_id except here we know that the order
  doesn't have to match TRX order. It seems to even vary from one
  reboot to another on some real-world capture we got.

  . hop     Hopping marker
  . tx_addr Same as 'rx_addr' above but for TX
  . arfcn   The ARFCN number (0 for hopping and 1023 for 'no frequency')

* OM2K_DEI_FREQ_LIST:

  Groups of 3 bytes (24 bits), 1 per frequency used.

  (tx_addr << 20) | (rx_addr << 16) | (is_c0 << 10) | arfcn

  . tx_addr See above
  . rx_addr See above
  . is_c0   Must be 1 if that ARFCN hosts the C0. (first TRX of a MCTR)
  . arfcn   The ARFCN number

  (Note MAIO must also be set properly on the different TRX/TS sharing
   a frequency ... )

The way we generate theses here is what we gathered from real-world
traces:
 - Each 'TX' of each TRX is set to the ARFCN set in that TRX config
 - Each 'RX' of each TRX is configures as 'hopping'
   (which I assume means it will just pick the appropriate freq ?)
 - For each TS, we use :
   . tx_addr of the TRX that has the ARFCN we want to TX on
   . rx_addr of the TRX where the TS we're configuring is
   . arfcn   The actual ARFCN we want to add to the list

This is incomplete but will work for the 1 MCTR case.

Config for multiple MCTR or multiple virtual-bts still need to be
handled but it's not yet known exactly how those need to be
configured.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ie39a857543adaa11d1822346d8563ce3718412c8
2020-05-08 15:16:15 +02:00
Sylvain Munaut 586c0114b3 om2k: Dispatch TS_EV_OML_READY to TS FSM only when it's actually ready
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ic2a84ea406e9a39332313d63b27d73f334d4e0a0
2020-05-08 14:50:26 +02:00
Sylvain Munaut 540e98f259 om2k: Use the "from config" TS config to setup OM objects
During the configuration of the TS object through OML we must use
pchan_from_config since it's too early to use anything else.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Iecdc911a79b66d8f3d746347710ad697cb288174
2020-05-08 14:50:26 +02:00
Sylvain Munaut 7d10c80a7d om2k: Properly name message 0x0136, found to be MCTR Statistics Report
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I4b4389fd2e7bf0b3078b8ff60f6ea109114a4475
2020-05-08 14:50:26 +02:00
Harald Welte 456a62e98e bts_nokia_site: Fix LAPD segfault during reset procedure
The existing Nokia *Site code destroyed the LAPD SAP instance for OML
while processing an OML message.  Once the stack frame returned back
to the LAPD code, the LAPD SAP was gone -> segfault.

Let's work around this by moving deletion of the LAPD SAP out-of-line
by starting a timer 0ms in the future.  Not particularly nice, but
effective.

Change-Id: I6270c7210f600e53f845561898245d2fd30a368d
Closes: OS#1761
2020-05-08 13:27:40 +02:00
Sylvain Munaut 7ab23b75af om2k: Acknowledge the unknown MCTR messages we get from time to time
This is probably a fault report of some kind, but didn't get any
confirmation or naming from anywhere for it yet.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I8333093d09f27f61094c7f5854573aa16e4bf28c
2020-05-05 21:15:53 +02:00
Sylvain Munaut eebb1ad0a0 om2k: Acknowledge the HW Infos Reports
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ida92c9ca59a608854737ba9e330a5394cceff0fe
2020-05-05 21:15:52 +02:00
Sylvain Munaut 4a97d46cb1 om2k: Fix type of msg_type in abis_om2k_tx_simple
Thoses messages IDs are 16 bits and the upper 8 bits are sort of
important :D

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: Ifcc1a01fdbf66a0f6f44cf8fed60dc19e72dd56a
2020-05-05 21:15:51 +02:00
Sylvain Munaut 9d2375407e om2k: Fix TS channel config payload for non-superchannel case
* In superchannel mode, those 3 are required.
* In normal mode, "Config Type" is optional and the two others are
forbidden.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: If02d02c067ae8af8ce693ddfb8747212f3f4e441
2020-05-05 21:15:50 +02:00
Sylvain Munaut e619675d84 om2k: Don't use slashes in FSM IDs and use dashes instead
slashes are invalid so we can't use om2k_mo_name() directly, so we just
build it manually with dashes.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Change-Id: I3cfc19670e6d7bb607d796cabcee5e86a15d1985
2020-05-05 21:15:49 +02:00
Harald Welte 1d7349ffc9 gsm_data.h: Comment the 'nokia' BTS fields
Change-Id: I5e3eaf3dee97e2edcd80b20c3acf85bd89b40cdc
2020-05-04 08:20:06 +00:00