aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/pcu_sock.c
AgeCommit message (Collapse)AuthorFilesLines
2019-03-27oml: use oml_tx_failure_event_rep() instead of signals to SS_FAILPhilipp Maier1-3/+6
At some locations in the code a signal to SS_FAIL is dispatched in order to trigger the sending of an OML failure event report in oml.c. This is a bit overcomplicated for the task. Lets use oml_tx_failure_event_rep() to send the failure event reports and lets remove the signal handler for SS_FAIL. Change-Id: Ie4fce1273a19cc14f37ff6fc7582b2945c7e7c47 Related: OS#3843
2019-03-18Constify pcu_rx_*() parametersMax1-3/+3
Use const for data parameter where appropriate. Change-Id: Ia228c001ca07cfde61b540bec6257b62aec93517
2018-10-07common/pcu_sock.c: cosmetic: explicitly address lchanVadim Yanitskiy1-2/+2
In the most cases a PDCH time-slot has only one logical channel allocated. In case of both osmo-bts-trx and osmo-bts-virtual, there are two kinds of logical channels: PDTCH and PTCCH, but since they share the same chan_nr value, deactivating one of them would trigger deactivation of another one. Let's explicitly address the first logical channel in array. Change-Id: I8edcb46e887c4db63a425eba89cec4374165763e Closes: OS#3023
2018-06-25log reception of PCU_IF_MSG_PAG_REQ messages from osmo-pcuStefan Sperling1-8/+22
osmo-pcu currently sends paging requests in PCU_IF_MSG_DATA_REQ messages, rather than PCU_IF_MSG_PAG_REQ. Clarify a comment which already alluded to this, and leave an explicit log entry if a PCU_IF_MSG_PAG_REQ message is received. Change-Id: I75fd8f051f943d876b5614fa088fff7e56b310ab Related: OS#3018
2018-06-14pcu_sock: Log event pcu_sock createdPau Espin Pedrol1-0/+2
Change-Id: I2aa55e05ac481fee59af5bad87baf707831df088
2018-03-17Get rid of 'struct gsm_bts_role_bts'Harald Welte1-7/+3
gsm_bts_role_bts was introduced at a time when we still shared gsm_data_shared.[ch] between BSC and BTS, and where we then subsequently needed a BTS-private structure. Since that sharing was abandoned quite some time ago, we can merge gsm_bts_role_bts into gsm_bts and do away with the bts/btsb dualism in a lot of the code. Change-Id: I4fdd601ea873d9697f89a748cc77bcf7c978fa3e
2018-03-11implement support for 3-digit MNC with leading zerosNeels Hofmeyr1-10/+5
Record the mnc_3_digits flag from SI and pass on via the PCU interface. Instead of changing to e.g. osmo_plmn_id, add the flag separately, and instead of bool use a uint8_t, to not raise any struct packing issues and clarify the flag's size beyond any doubt. Bump the PCU interface version to 9. This is one part of the three identical pcuif_proto.h patches: - I49cd762c3c9d7ee6a82451bdf3ffa2a060767947 (osmo-bts) - I787fed84a7b613158a5618dd5cffafe4e4927234 (osmo-pcu) - I78f30aef7aa224b2e9db54c3a844d8f520b3aee0 (osmo-bsc) Depends: Id2240f7f518494c9df6c8bda52c0d5092f90f221 (libosmocore) Change-Id: I49cd762c3c9d7ee6a82451bdf3ffa2a060767947
2018-03-02common/pcu_sock.c: fix double field assignmentVadim Yanitskiy1-1/+0
The 'data_ind->rssi' variable is assigned values twice. Change-Id: I81eb1ac3dc2aa3597b1c85301b92995412edbc7b
2018-02-28pcu_sock: LOG + drop PCU DATA.req for inactive lchanHarald Welte1-0/+6
Change-Id: I11c622967885d594ef7e1c24b9bafd0fb8fd400c
2018-02-28pcu_sock: LOG + drop DATA.req from PCU for non-PDCH timeslotHarald Welte1-0/+6
Change-Id: I3ae496eca96bc0823dfeca16ce36c200ce000895
2018-02-28pcu_sock: Log an error message and discard PCU primitives for BTS != 0Harald Welte1-0/+4
In OsmoBTS, we (so far?) only have a single BTS inside each process, let's make sure we log an error message if the PCU should ever want to transmit primitives to a non-zero BTS number. Change-Id: I158f935fed12941737c806c0677a8192ea3418a0
2018-02-28pcu_sock: Don't overflow the timeslot arrayHarald Welte1-0/+6
Don't blindly trust that the ts_nr received on the PCU socket will be small enough to not overflow our timeslot array! Change-Id: Ie9964c8dc0ca7b049da7dfec0ac0a0d3f1aedd45
2018-02-28pcu_sock: Discard messages that are too shortHarald Welte1-0/+6
The downstream code of pcu_sock.c doesn't contain any length checks, so let's discard any messages that are shorter than the primitive length. Change-Id: I35ac84d4db6d21ea61afbd1864c810bbf601d69b
2018-01-04Use existing function to obtain TSCMax1-2/+2
Change-Id: I209f26b527a41b3b6f8e405f2a21b3d4bc4746fb
2017-09-01Support removing SI13 from PCUMax1-5/+5
If SI13 becomes unavailable in runtime than send 0-length message with BCCH SAPI to PCU to indicate that SI13 have to be removed. Change-Id: I72aef8bd98f21c4b5ea6eed21fc56b30d85bfc1b Related: OS#2400
2017-08-31Support sending SI13 to PCUMax1-15/+24
* explicitly set SAPI when sending data_ind to PCU * drop unused receiving code for BCCH SAPI * send SI13 when PCU is connected * send SI13 when new SI is received Change-Id: I9e83ef792585aa962f99897d9973cef12f186bcf Related: OS#2400
2017-07-10Allow passing low link quality buffers to upper layersPau Espin Pedrol1-0/+8
We want to always call l1if_tch_rx and l1sap_up in order to avoid losing triggering events on the upper layer. With this change, the upper layer will increase correctly seq + ts for RTP. It will then send an RTP packet with only the header and no payload, which is not correct but at least we avoid drifting the RTP clock. Upcoming patch in the series solves this issue. This patch assumes that we are not lossing data events from the physical layer and that we receive an event every 20ms, even if the MS is not transmitting due to DTX. Depends on libosmocore If4ae20c22b881e94585dad710f17b9e37f77bf82 Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
2017-07-04Fix annoying trailing whitespacePau Espin Pedrol1-3/+3
This whitespace keeps being automatically fixed by editor, polluting my patches. Change-Id: If0ba1321ed326c1498e3f60b611bd962f2a9484a
2017-05-08Signal to BSC when PCU disconnectsMax1-0/+2
While at it - do not serialize NULL as a string when delivering OML Failure Report. Change-Id: I41a731bd719aee0bbb98d3236405fb3a7f3ddec0 Related: OS#1615
2017-04-10Handle TXT indication from OsmoPCUMax1-0/+25
* handle OML message * handle OsmoPCU version message * show stored PCU version in 'show bts ..' vty command Requires OpenBSc with I6710d53115f34634a7b70969cc05fd5c72ff8ab2. Change-Id: I16e73198501487a5b1076bf83390b85538d5af73 Related: OS#1614, 1615
2017-03-07Remove code duplicationMax1-18/+4
Use gsm_bts_trx_num() from OpenBSC instead of static function. Change-Id: Iba80e7a12c85976981a49a9424db069fc4110373
2017-01-06Log socket path on errorMax1-2/+2
Change-Id: If912ac0bc815986de2a231facb5cf317a677be68
2016-08-27Change interface in osmo-bts for 11 bit RACHbhargava1-1/+4
Interface structure between osmo-bts and osmo-pcu is updated with the parameters to differentiate the type of RACH and further support 11 bit RACH. The function prototype and definitions are changed accordingly. Interface version number is increased. Change-Id: I4f4c501b2d86d77c78de32a84b1804172ffb6f4d
2016-08-08Fill measurements data for L1SAPMax1-1/+4
Fill in values for BER, BTO, Link quality in L1SAP and send them to PCU. Note: this increases the version of BTS <-> PCU protocol. It also requires corresponding changes in libosmocore. All BTS models provide measurements data unless direct DSP access for PCU is enabled. For BTS-specific notes see below. Octphy: conversion from sSNRDb to Link Quality uses formulae which works in practice instead of what's documented for sSNRDb value. Subject to change in future revisions. TRX: C / I link quality estimator is not computed. Change-Id: Ic9693a044756fb1c7bd2ff3cfa0db042c3c4e01c Related: OS#1616
2016-07-28pcu_sock: use osmo_sock_unix_init() from libosmocoreVadim Yanitskiy1-55/+5
Since the osmo_unixsock_listen() was moved to libosmocore it would be better to use the library's implementation instead of reinventing the wheel again. Change-Id: Id5828649d44ef11e70946793696b0d689d6b35e3
2016-07-25dyn TS: common TCH/F_TCH/H_PDCH implementationNeels Hofmeyr1-0/+8
common/l1sap: For dyn TS, the BSC will issue RSL Chan Activ requests with a non-standard chan_nr. While the rest of the code now understands that, the L1 phy will not. Translate to standard PDCH (== TCH/F). common/oml: use dyn TS' current pchan mode for lchans config. common/pcu_sock: detect desired PDCH mode of dyn TS. common/rsl: implement reconnection chain of a TS for changing its pchan: * rsl_rx_chan_activ(): ** Add dyn_pchan_from_chan_nr() to derive the requested pchan from the RSL chan_nr IE. ** Notice the need for a pchan change and invoke dyn_ts_l1_reconnect() (s.b.) ** Make Chan Mode IE presence optional, because the non-standard PDCH activation message is simpler and does not require it. ** Do PDCH activation via PCU. * Add dyn_ts_l1_reconnect(): store state and disconnect the L1 channel; then wait for cb_ts_disconnected(). * Add osmo_dyn_ts_disconnected() to cb_ts_disconnected(): verify state and connect with the new pchan type; then wait for cb_ts_connected(). * Add osmo_dyn_ts_connected() to cb_ts_connected(), which re-issues the cached chan activation message from before disconnecting the L1 channel. * Also send an rf chan rel/act ack for dyn TS upon PDCH de/act via PCU. * Add dyn_ts_pdch_release(): on channel release of a dyn TS in PDCH mode, release via the PCU. Call from rsl_rx_rd_chan_rel(). Change-Id: I463bb6b4e57674f091c3badba9257374961c52c7
2016-07-25cosmetic: pcu_sock.c: rename ts_is_pdch() to ts_should_be_pdch()Neels Hofmeyr1-2/+2
The function checks whether to switch a TS to/from PDCH, not whether it already is PDCH. Change-Id: Ib4036445d09792636bb2f1a8a665b6b28f32e1a0
2016-06-17error log: two minor clarificationsNeels Hofmeyr1-2/+4
Change-Id: I95e4331f51f650d5077eb3a8f897f754d5d2b779
2016-06-17dyn PDCH: pcu_tx_info_ind(): handle TCH/F_PDCH in PDCH modeNeels Hofmeyr1-1/+19
Introduce a static function to encapsulate the decision whether a TS is used for PDCH. Depending on the ts->flags, handle a TCH/F_PDCH TS exactly like a standard PDCH TS. Change-Id: Ic72fd06ecc99609823efa3edcf773007cc514b5b
2016-06-17pcu_sock: add pcu_connected() to query PCU availabilityNeels Hofmeyr1-0/+10
Will be used in upcoming dyn PDCH switching. Change-Id: I8031089ad5e9cb9690ca7e22facc53438f28e12a
2016-02-15make PCU socket and telnet port configurableHarald Welte1-2/+2
In some cases we'd like to run multiple instances of osmo-bts on a single machine. This is the case where we a multi-TRX PHY is to be used for several BTSs, or in case osmo-bts-trx has multple SDRs attached. This wa currently prevented by having a hard-coded PCU socket path and telnet port, which are now configurable via VTY / config file itself.
2016-01-22merge bts-specific main function into common/main.c:bts_main()Harald Welte1-1/+1
This removes a lot of copy+paste duplication between different BTS models.
2015-11-20cope with 'struct gsm_bts' without a tsc memberHarald Welte1-1/+1
This was introduced in openbsc.git a2bbc5ec0e6481bb5b65da7bdbde03a424437af4
2015-09-22Get RSSI from received uplink data and send to PCUAndreas Eversberg1-0/+1
2015-09-22Move chan act/rel/modify from bts_model to PH-/MPH-/TCH-SAP interfaceAndreas Eversberg1-4/+4
This part replaces channel activation/deactivation/modification routines by MPH_INFO messages.
2015-09-22Add PDCH messages to PH-/MPH-/TCH-SAP interfaceAndreas Eversberg1-5/+2
This part moves PDTCH, PACCH and PTCCH message primitives from osmo-bts-sysmo to common part.
2014-03-27agch/pcu: Fix crash for AGCH commands queued by the PCUHolger Hans Peter Freyther1-1/+2
The dequeue code assumed that msg->l3h is a valid pointer but in the case of the PCU socket it was a null pointer. This lead to memcpy copying a lot more than 23 bytes which ultimately lead to a crash. The issue was introduced in the git commits 37c332e5bfdb9591a1cd3cc6746afffdb1cd13b9 and the commit d290ee029a827c870f97372b98f0dbd7d057402a. use msg->l3h = msgb_put(msg, len) to make sure that there is a valid L3 pointer for the message. (gdb) bt #0 0x419d6384 in memcpy () from /tmp/ow/lib/libc.so.6 #1 0x0001894c in bts_ccch_copy_msg (bts=0x62248, out_buf=0x62248 "p\025\003", gt=0x1, is_ag_res=100684) at bts.c:572 #2 0x0000c958 in handle_ph_readytosend_ind (rts_ind=<optimized out>, fl1=0x62e78) at l1_if.c:515 #3 l1if_handle_ind (fl1=0x62e78, msg=0x8bb08) at l1_if.c:920 #4 0x000147e8 in read_dispatch_one (queue=<optimized out>, msg=0x8bb08, fl1h=<optimized out>) at l1_transp_hw.c:190 #5 l1if_fd_cb (ofd=0x62f04, what=<optimized out>) at l1_transp_hw.c:224 #6 0x41b9d028 in osmo_select_main (polling=<optimized out>) at select.c:158 #7 0x0000b204 in main (argc=<optimized out>, argv=<optimized out>) at main.c:384 (gdb) p *msg $12 = {list = {next = 0x100100, prev = 0x200200}, {dst = 0x0, trx = 0x0}, lchan = 0x0, l1h = 0x0, l2h = 0x0, l3h = 0x0, l4h = 0x0, cb = {0, 0, 0, 0, 0}, data_len = 23, len = 23, head = 0x8572c "-\006?\020\r\340*q\224#", tail = 0x85743 "", data = 0x8572c "-\006?\020\r\340*q\224#", _data = 0x8572c "-\006?\020\r\340*q\224#"}
2014-02-24pcu: Avoid crash when closing the PCU socketHolger Hans Peter Freyther1-1/+3
When closing the PCU socket all channels will be closed. In that case the LAPDm structures might not have been allocated. Mark the channel as LCHAN_REL_ACT_PCU to avoid going through the RSL code for sending the message. This avoids a crash when "gprs none" is selected but one still configures a PDCH and then connects/disconnects the pcu. #0 llist_del (entry=0x0) at ../include/osmocom/core/linuxlist.h:119 #1 msgb_dequeue (queue=0x400bbc58) at msgb.c:102 #2 0x40110d28 in lapd_dl_flush_tx (dl=0x400bbba0) at lapd_core.c:173 #3 0x40112cb4 in lapd_dl_reset (dl=0x400bbba0) at lapd_core.c:307 #4 0x40112d00 in lapd_dl_exit (dl=0x400bbba0) at lapd_core.c:321 #5 0x40115d80 in lapdm_entity_exit (le=<optimized out>) at lapdm.c:169 #6 0x40115d9c in lapdm_channel_exit (lc=0x400bbb94) at lapdm.c:180 #7 0x0001a334 in rsl_tx_rf_rel_ack (lchan=0x400bbb00) at rsl.c:505 #8 0x0000e908 in lchan_deactivate_sapis (lchan=0x400bbb00) at oml.c:1427 #9 sapi_queue_exeute (lchan=0x400bbb00) at oml.c:547 #10 0x0000ead0 in sapi_queue_send (lchan=<optimized out>) at oml.c:571 #11 queue_sapi_command (lchan=<optimized out>, cmd=<optimized out>) at oml.c:609 #12 queue_sapi_command (lchan=0x400bbb00, cmd=<optimized out>) at oml.c:601 #13 0x0000faf0 in enqueue_rel_marker (lchan=0x400bbb00) at oml.c:1440 #14 lchan_deactivate (lchan=0x400bbb00) at oml.c:1447 #15 0x0001004c in bts_model_rsl_chan_rel (lchan=<optimized out>) at oml.c:1647 #16 0x0001de30 in pcu_sock_close (state=0x62788) at pcu_sock.c:654 #17 0x0001e150 in pcu_sock_read (bfd=0x627a8) at pcu_sock.c:698 #18 pcu_sock_cb (bfd=0x627a8, flags=1) at pcu_sock.c:755
2013-10-25rsl/pcu: Do not send a CHAN ACT to the BSC on PCU usageHolger Hans Peter Freyther1-0/+1
The PCU is forcing the activation of a PDCH. Currently the BSC will receive a channel act ack for a channel that was not activated at all. Use the "release_reason" flag of the lchan to see if we have requested a normal activation or a silent one. It feels a bit odd to do it in the TX function but it is the most easy solution right now. I have added logging so it will not be totally silent.
2013-03-17Get RSSI from received uplink data and send to PCUAndreas Eversberg1-1/+3
This bumps the PCU API version and thus requires a new version of the code on the sysmoBTS side!
2013-01-15fix message: the PCU is not a call control applicationHarald Welte1-2/+1
2012-12-20misc: Include pcu_if.h for pcu_tx_pag_req in rsl.c and make it constHolger Hans Peter Freyther1-1/+1
The rsl.c code was calling the paging request with a const pointer, change the signature to make the code const.
2012-09-29PCU: Add PCH confirm, raise PCU interface version to 4Andreas Eversberg1-0/+27
The confirm is required, so PCU knows when an IMMEDIATE ASSIGN message has has been sent on PCH. The PCU will start packet flow after that confirm.
2012-07-21Send RR paging requests to PCU, in order to page on PACCHAndreas Eversberg1-0/+33
2012-07-21Enable direct access to PDTCH queue of DSP by PCUAndreas Eversberg1-0/+7
Use "-P -M" to enable PCU and direct access.
2012-07-20misc: Quote the warning to avoid additional warningHolger Hans Peter Freyther1-2/+2
2012-07-16PCU: Add verion number of PCU interface to PCU INFO IND messageAndreas Eversberg1-0/+1
The client (PCU) can check if it is compiled with a different version.
2012-07-16PCU interface: fix memory leaks in error pathsAndreas Eversberg1-0/+2
2012-07-08PCU: remove german warnings from the codeHarald Welte1-2/+2
2012-07-08PCU: Add PCU socket interface to BTS.Andreas Eversberg1-0/+851
A special command line option "-P" is used to enable socket interface and signal available GPRS MO object to BSC.