aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2014-05-22common: Remove unused gsm_time parameter from lchan_sacch_getHolger Hans Peter Freyther2-2/+2
2014-05-22sysmobts: Avoid memleak when multiple -c arguments are passedHolger Hans Peter Freyther1-1/+1
Rely on optarg pointing to an address that will be valid for the run of the entire application. Fixes: CID 1206578
2014-05-20sysmobts: Have a common prefix for the enumHolger Hans Peter Freyther3-5/+5
Make the manuf_type_id enum have a common prefix for the symbols.
2014-05-20utils: Used the enum manuf_type_id in the parameter of add_manufacturer_id_labelÁlvaro Neira Ayuso2-3/+3
Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-20utils: Classify the OML message using the return typeÁlvaro Neira Ayuso2-5/+13
Classify the OML message and return the manufacturer type or an error. Currently ETSI, ip.access and Osmocom are known. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-20sysmobts: Do not access out of bound stringÁlvaro Neira Ayuso1-3/+3
One can either use "strlen(str) + 1" but not add one to the result of the sizeof.
2014-05-20sysmobts: Separate IPA and OML check into two methodsÁlvaro Neira Ayuso3-24/+38
I have split the function check_oml_msg, in two functions. One for checking if the ipa header is well-formed and in check_oml_msg, Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-19Revert "sysmobts: Add support for changing the transmit power in sbts2050"Harald Welte5-231/+11
This reverts commit c64d42573894d8295b58b268a64541c914b69bcd. There are unfrtunately still too many problems with this patch to be merged at this point.
2014-05-18sysmoBTS TCH: Set CMR in AMR RTP framesHarald Welte1-12/+7
Enable the previously commented-out logic to set the CMR (Codec Mode Request) in AMR RTP frames based on the CMI (CMR Index) of the AMR speech frame on the Um interface. This is of course anyway the right thing to do, but also required for an AMR receiver which doesn't have out-of-band information on the codec mode, and which also doesn't determine the AMR codec mode based on the size of the AMR frame (such as lcr as of current master). We also move the entire CMR generation into the #ifdef section which is only compiled-in if we do _not_ use the RTP mode of L1.
2014-05-18sysmobts: Add support for changing the transmit power in sbts2050Álvaro Neira Ayuso5-11/+231
Make the sysmobts-mgr send a manufacturer O&M message with the power reduction we want the sysmobts to apply. The sysmobts will handle this message and set the new tx output power. An ACK/NACK will be send as a response to the power reduction. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-18sysmobts-mgr: Add VTY support for configuring itÁlvaro Neira Ayuso4-3/+342
This patch allows to configure the warning temperature threshold, the severe temperature threshold of the board and the PA and the actions like the relative value power that we want to reduce the transmit power to and the part that we want to switch off or not. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-18sysmobts: Add beginnings of an OML router and create Failure Messages in the ↵Álvaro Neira Ayuso8-3/+541
sysmobts-manager Make the sysmobts listen for OML messages on a Unix Domain Socket. Messages passing a sanity check will be forwarded to the BSC. In case the sysmobts-mgr detects a temperature above or below temperature threshold an OML failure message will be sent to the BTS. [moved confinfo into the #ifdef BUILD_SBTS2050] Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-05-17sysmobts: Support DSP API >= 3.8.1 (u8MaxCellSize)Harald Welte1-0/+4
2014-05-15abis: Separate initialization from connect for AbisHolger Hans Peter Freyther2-12/+13
Initialize the libosmo-abis VTY nodes more early so we can parse the config file that was created by "write". Introduce abis_init to initialize the libosmo-abis and modify abis_open to re-use an existing line. Update the comments. This has only been tried with the sysmobts-remote on x86. A TCP connection is opened toward the configured BSC. Fixes: SYS#285
2014-05-15sysmobts: Fix compiler warning about missing declarationÁlvaro Neira Ayuso1-0/+1
Include utils.h to have a declaration of sysmobts_get_nominal_power, l1_if.c: In function 'l1if_activate_rf': l1_if.c:1144:6: warning: implicit declaration of function 'sysmobts_get_nominal_power' [-Wimplicit-function-declaration] Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-04-29osmo-bts-sysmo/utils.c: Added a function for calculate the power transmitterÁlvaro Neira Ayuso3-2/+14
Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-04-19handover: Call the right function and avoid recursionHolger Hans Peter Freyther1-1/+1
Fix a brown paper bag bug and call the right method. The above was an infinite recursion. The stack didn't overflow as the compiler optimized the tail-recursion and coverity didn't complain either. The issue was introduced in the last minutes before the merge when I renamed "reset_handover" to "handover_reset" to follow the object_verb approach throughout the handover.c code. While doing that I sadly replaced reset_handover with handover_frame and not handover_reset.
2014-04-07sysmobts: Add log message in case the channel activation failsHolger Hans Peter Freyther1-0/+3
2014-04-07rsl: Use unique values for the call to rsl_tx_chan_act_nackHolger Hans Peter Freyther1-1/+1
This way we can easily find the place in the code that is responsible for the NACK.
2014-04-03oml: Pass all valid state change requests to the modelJacob Erlbeck1-5/+4
Currently ADM state change request that tries to set the administrative state to the current value are immediately ACK'ed. Beside the caching problem, this could lead the protocol inconsistencies if two such requests are sent one after the other and the second arrives before the procedure of the first has finished. This patch removes the shortcut in oml_rx_chg_adm_state() which immediately called oml_mo_statechg_ack(mo). Ticket: OW#1132 Sponsored-by: On-Waves ehf
2014-03-29sysmobts: Fix build for the v1 of the sysmobtsHolger Hans Peter Freyther1-0/+2
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-03-26sysmobts: Apply the potentially new max_power_red on the TRXHolger Hans Peter Freyther1-0/+9
In case the max power reduction has been changed through OML, let us call the l1if_set_txpower routine to update the nominal power. This has been manually verified with both BTS #1 and #57. ./bsc_control.py -d localhost -p 4249 -s bts.0.trx.0.max-power-reduction 0 The above command and GNUradio have been used to determine if the power level has changed at all. Fixes: SYS#268
2014-03-26oml: Indicate the kind of object passed as the void*Holger Hans Peter Freyther2-4/+4
These routines do not pass the gsm_abis_mo and parsing the FOM header of the msg does not seem to be a good idea either. Pass in the OML object so that the model code can determine what the void pointer is.
2014-03-26sysmobts: Honor power reduction on older sysmoBTSv2 hardwareHolger Hans Peter Freyther2-7/+25
Older hardware didn't have the external attentuator that was used to control the wanted output power. So starting from the git commit 3c8ff3c70bc52d0a1d75a1e6b87b0069d92f10f9 older hardware was always transmitting with 23 dBm regardless of the power reduction. Remember the hardware revision returned by the SystemInformation primitive, postpone the call to l1if_activate_rf until we know the board revision. Manually verified on BTS #1 and #57. On BTS#1 the external attenuator has not been configured and on BTS#57 it was.
2014-03-21systemd: Do not restart with a broken config file or suchHolger Hans Peter Freyther1-1/+1
Only restart in case of a crash or the exit(42) when the OML/RSL link is going down.
2014-03-16sysmobts: Add a magic number to the hLayer2 to differentiate itHolger Hans Peter Freyther1-1/+8
The DSP/FPGA appears to report bogus PhDataInd with hlayer2 == 0. Currently this would match the TRX==0,TS==0 and SS=0 and then we report bad measurement reports. Add a magic number to the lower eight bit of the hLayer2 to differentiate valid numbers. Addresses: <0004> measurement.c:97 (bts=0,trx=0,ts=0,ss=0) measurement during state: NONE <0004> measurement.c:102 (bts=0,trx=0,ts=0,ss=0) no space for uplink measurement
2014-03-16sysmobts: Change the order to follow the RX handling codeHolger Hans Peter Freyther1-1/+1
2014-03-16sysmobts: Improve the log message and print the hLayer2 we don't knowHolger Hans Peter Freyther1-1/+3
2014-03-16misc/sysmobts_misc: function for switching off/on and requesting status powerÁlvaro Neira Ayuso2-0/+103
I have extended the principal function that we use for requesting information to the microcontroller for switching off/on the board and the PA. And I have extended it for requesting the power status information of the board and the PA. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-03-12misc/sysmobts_mgr: Added new header created in the configureÁlvaro Neira Ayuso1-0/+1
Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-03-12misc: Fix the build breakage now that we have btsconfig.hHolger Hans Peter Freyther2-0/+4
Include the btsconfig.h for the PACKAGE_VERSION variable.
2014-03-12misc/sysmobts_misc.c: Read temperature from microcontrollerÁlvaro Neira Ayuso3-0/+243
Add function for requesting the temperature information to the microcontroller. I have added a function that we can extend for requesting more information but in this case we only need to know the temperature. I have added to a microcontroller temperature handling function in the manager for monitoring this information. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-03-10agch: Remove obsolete commentJacob Erlbeck1-1/+0
Use of configuration variables has already been implemented here, so the TODO comment is removed. Sponsored-by: On-Waves ehf
2014-03-10sysmobts: Do a RF mute at initialization when the RC is lockedHolger Hans Peter Freyther3-7/+36
Currently a locked cell is actively broadcasting when it is being bootstrapped after the lock. This patch adds an initial update of the RF mute state when the TRX is initialized. Ticket: OW#1131 Sponsored-by: On-Waves ehf
2014-03-10handover,sysmobts: Handle handover in the sysmobts codeHolger Hans Peter Freyther2-2/+77
When the lchan was activated for handover configure it to wait for a RACH burst. On release make sure to always release the RACH SAPI (in case it has been allocated). On the first frame inform handover.c about it and forward the received access burst to the handover layer. Using an E71 it was possible to make a handover for SDCCH and TCH/F from a nanoBTS but also from itself to itself. The vty commands of OpenBSC and the silent-call have been used for that. I didn't verify audio handling so far.
2014-03-10handover,sysmobts: Handle idle needed for preparation of rach handlingHolger Hans Peter Freyther2-0/+4
2014-03-10handover,sysmobts: Refactor the parsing/handling of the access delayHolger Hans Peter Freyther1-5/+10
2014-03-10handover: Add generic handling for handoverAndreas Eversberg2-0/+121
The BTS layer needs to inform the handover code when an access burst has been received. In turn the handover layer will ask the bts to modify the channel, it will schedule the physical information inform the BSC with the HANDOVER DETECTION and waits for the BTS layer to inform it about the first received frame to stop a timer.
2014-03-10handover: Set basic values for handover, remember the activation reasonAndreas Eversberg5-3/+67
Introduce the handover.h/handover.c and initialize handover parameters in OML and remember the activation through RSL.
2014-03-10handover: Implement generating HANDOVER DETECTION in rsl_tx_hando_detAndreas Eversberg1-0/+22
2014-03-10handover: Introduce debug area for handover related itemsAndreas Eversberg1-0/+6
2014-03-10agch: Merge IMM.ASS.REJ if possible when enqueueingJacob Erlbeck1-0/+140
This patch implements merging of IMMEDIATE ASSIGN REJECT messages as suggested in GSM 08.58, 5.7. When a new IMM.ASS.REJ is to be appended to the AGCH queue and the last message in that queue is of the same type, the individual entries (up to 4 per message) of both messages are extracted, combined and stored back. If there are less than 5 entries, all entries fit into the old message and the new one is discarded. Otherwise, the old message will contain 4 entries and the remaining ones are stored into the new one which is then appended to the queue. Ticket: SYS#224 Sponsored-by: On-Waves ehf
2014-03-10agch: Add VTY queue management configurationJacob Erlbeck1-0/+43
This patch adds the following VTY commands to tune AGCH queue handling: agch-queue-management default agch-queue-management threshold THRES low LOW high HIGH Examples: agch-queue-management default Resets queue management to default parameters. agch-queue-management threshold 0 low 25 high 75 Start dropping at 25%, drop all messages above 75% queue length (relative to max queue length corresponding to T3126). Between low and high, drop with a probability interpolated linearly between 0 (low) and 1 (high). agch-queue-management threshold 50 low 0 high 0 Start dropping at 50% and continue until all IMM.ASS.REJ have been removed from the front (output) of the queue Sponsored-by: On-Waves ehf
2014-03-10agch: Manage AGCH queue lengthJacob Erlbeck1-9/+98
Currently, the AGCH queue length is not limited. This can lead to large delays and network malfunction if there are many IMM.ASS.REJ messages. This patch adds two features: - Don't accept msgs from the RSL layer when the queue is way too full (safety measure, mainly if bts_ccch_copy_msg() is not being called by the L1 layer, currently hard coded to 1000 messages) - Selectively drop IMM.ASS.REJ from the queue output depending on the queue length Ticket: SYS#224 Sponsored-by: On-Waves ehf
2014-03-10agch/pch: Use PCH for AGCH msgsJacob Erlbeck2-4/+16
This patch extends paging_gen_msg() by adding an output parameter is_empty that is true, if only a paging message with dummy entries has been placed into buffer. This feature is then used by bts_ccch_copy_msg() to insert an AGCH message if is_empty is true. Ticket: SYS#224 Sponsored-by: On-Waves ehf
2014-03-10agch: Add simple countersJacob Erlbeck2-0/+9
Counters are added for the following events (use VTY show to query): - Dropped IMMEDIATE ASSIGN REJECT messages - Merged IMMEDIATE ASSIGN REJECT messages - Rejected AGCH messages - Use of PCH (non-reserved) for AGCH messages - Use of AGCH (reserved) for AGCH messages Sponsored-by: On-Waves ehf
2014-03-10agch: Recalculate length limit of AGCH queueJacob Erlbeck1-1/+89
This patch adds a function bts_update_agch_max_queue_length() to compute a limit of the AGCH queue. This is based on the idea, that the AGCH queue has a limited drain rate and that CHANNEL REQUESTs must be answered within a certain time frame, given by the minimum value of T3126 (see GSM 04.08). When the AGCH queue reaches that limit, the last message would be delivered in time if there were no other delays involved (which is not the case). The calculation is based on the ratio of the number RACH slots and CCCH blocks per time: Lmax = (T + 2*S) / R_RACH * R_CCCH where T3126_min = (T + 2*S) / R_RACH R_RACH is the RACH slot rate (e.g. RACHs per multiframe) R_CCCH is the CCCH block rate (same time base like R_RACH) The value depends control_channel_desc.ccch_conf and rach_control.tx_integer (both from SYSINFO_TYPE_3) and should therefore by called at least each time after one of these is changed. For this reason, a signal callback is registered under SS_GLOBAL/S_NEW_SYSINFO which invokes bts_update_agch_max_queue_length(). Sponsored-by: On-Waves ehf Based-On: "bts: Calculate length of agch queue" by Ivan Kluchnikov <kluchnikovi@gmail.com>
2014-03-05src/misc/sysmobts_misc: Fixed wrong TEMP_PATHÁlvaro Neira Ayuso1-1/+1
Before, this patch the program tried to read the info of the temperature sensor from a wrong location. Signed-off-by: Alvaro Neira Ayuso <anayuso@sysmocom.de>
2014-03-03sysmobts: Do not generate RF Conn failure for CCCH and PDCHHolger Hans Peter Freyther1-0/+6
This could lead to a BSC attempting to release the BCCH or a PDCH. In the case of the BCCH this lead to a funny crash. Log: <0000> rsl.c:605 (bts=0,trx=0,ts=0,ss=4) Sending Connection Failure: cause = 0x01 <0000> rsl.c:1720 (bts=0,trx=0,ts=0,ss=0) Rx RSL DEACTIVATE_SACCH Backtrace: Program received signal SIGSEGV, Segmentation fault. msgb_dequeue (queue=0x4007d2d8) at msgb.c:102 102 llist_del(lh); (gdb) bt #0 msgb_dequeue (queue=0x4007d2d8) at msgb.c:102 #1 0x4002ed28 in lapd_dl_flush_tx (dl=0x4007d220) at lapd_core.c:173 #2 0x40030cb4 in lapd_dl_reset (dl=0x4007d220) at lapd_core.c:307 #3 0x40030d00 in lapd_dl_exit (dl=0x4007d220) at lapd_core.c:321 #4 0x40033d80 in lapdm_entity_exit (le=<optimized out>) at lapdm.c:169 #5 0x40033d9c in lapdm_channel_exit (lc=0x4007d214) at lapdm.c:180 #6 0x0001a334 in rsl_tx_rf_rel_ack (lchan=0x4007d180) at rsl.c:505 #7 0x0000e908 in lchan_deactivate_sapis (lchan=0x4007d180) at oml.c:1427 #8 sapi_queue_exeute (lchan=0x4007d180) at oml.c:547 #9 0x0000ead0 in sapi_queue_send (lchan=<optimized out>) at oml.c:571 #10 queue_sapi_command (lchan=<optimized out>, cmd=<optimized out>) at oml.c:609 #11 queue_sapi_command (lchan=0x4007d180, cmd=<optimized out>) at oml.c:601 #12 0x0000faf0 in enqueue_rel_marker (lchan=0x4007d180) at oml.c:1440 #13 lchan_deactivate (lchan=0x4007d180) at oml.c:1447 #14 0x0001004c in bts_model_rsl_chan_rel (lchan=<optimized out>) at oml.c:1647 #15 0x0001b948 in rsl_rx_rf_chan_rel (lchan=0x4007d180) at rsl.c:844 #16 rsl_rx_dchan (msg=0x75a88, trx=0x4007b038) at rsl.c:1727 #17 down_rsl (trx=0x4007b038, msg=0x75a88) at rsl.c:1853 #18 0x000154d4 in sign_link_cb (msg=<optimized out>) at abis.c:132 #19 0x400701c0 in ?? () from /usr/lib/libosmoabis.so.2 #20 0x400701c0 in ?? () from /usr/lib/libosmoabis.so.2 Backtrace stopped: previous frame identical to this frame (corrupt stack?) Fixes: OW#1133