aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/abis_rsl.c
AgeCommit message (Collapse)AuthorFilesLines
2017-03-09move to libbsc: lchan_next_meas_rep() -- TODO really?Neels Hofmeyr1-0/+13
Change-Id: I4ea799c5fa61f81c404e6ef1b9ac86a8faa1fb49
2017-03-09Use libvlr in libmsc (large refactoring)Neels Hofmeyr1-1/+1
Original libvlr code is by Harald Welte <laforge@gnumonks.org>, polished and tweaked by Neels Hofmeyr <nhofmeyr@sysmocom.de>. This is a long series of development collapsed in one patch. The original history may still be available as branch neels/vlr_orig. TODO: This commit may be split in several smaller changes before merging to master. Related: OS#1592 Change-Id: I702ba504ce2de93507312c28eca8d11f09f4ee8b
2017-03-08add struct bsc_subscr, separating libbsc from gsm_subscriberNeels Hofmeyr1-2/+2
In a future commit, gsm_subscriber will be replaced by vlr_subscr, and it will not make sense to use vlr_subscr in libbsc. Thus we need a dedicated BSC subscriber: struct bsc_subscr. Add rf_policy arg to bsc_grace_paging_request() because the bsc_subscr will no longer have a backpointer to gsm_network (used to be via subscr->group). Create a separate logging filter for the new BSC subscriber. The implementation of adjusting the filter context is added in libbsc to not introduce bsc_subscr_get/_put() dependencies to libcommon. During Paging Response, fetch a bsc_subscr from the mobile identity, like we do for the gsm_subscriber. It looks like a duplication now, but will make sense for the VLR as well as for future MSC split patches. Naming: it was requested to not name the new struct bsc_sub, because 'sub' is too ambiguous. At the same time it would be fine to have 'bsc_sub_' as function prefix. Instead of struct bsc_subscriber and bsc_sub_ prefix, I decided to match both up as struct bsc_subscr and bsc_subscr_ function prefix. It's fast to type, relatively short, unambiguous, and the naming is consistent. Add bsc_subscr unit test. Related: OS#1592, OS#1594 Change-Id: Ia61cc00e8bb186b976939a4fc8f7cf9ce6aa3d8e
2017-02-23logging fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_*Neels Hofmeyr1-1/+1
In libosmocore, my patch was merged to master a bit too soon. To accomodate the request for naming that matches the general "LOG" prefix instead of "LOGGING", a fixup was committed to libosmocore. Adjust for that. Original patch: change-id I5c343630020f4b108099696fd96c2111614c8067 The fixup: change-id I424fe3f12ea620338902b2bb8230544bde3f1a93 Change-Id: Ib2ec5e4884aa90f48051ee2f832af557aa525991
2017-02-22logging: use central filter and ctx consts from libosmocoreNeels Hofmeyr1-2/+1
The LCHAN and BTS filter contexts are actually never used, so drop them until someone adds them properly. For now use only LOGGING_{FILTER,CTX}_VLR_SUBSCR. Some of these will change to _BSC_SUBSCR once struct bsc_subscriber is introduced, and later on, struct gsm_subscriber will be replaced by vlr_subscriber so that the names will match. Depends: libosmocore change-id I5c343630020f4b108099696fd96c2111614c8067 Change-Id: Ifa82f6a461ad4c0eeddb8a38fb3833460432d16b
2017-02-09Remove duplicating defineMax1-5/+5
Use GSM_MACBLOCK_LEN consistently throughout abis_rsl.c Change-Id: I96aec02748a0be0100dee2117f124ff32d5ee3f5
2017-02-09Expand chan allocation loggingMax1-2/+6
Log more data related to channel allocation: - channel type - number of paging attempts - timers fired Change-Id: Ib417a9c942c17b902dd80ff555cd9da5f91bff48
2016-12-09channel_mode_from_lchan(): Add missing break statementHarald Welte1-0/+1
GSM48_CMODE_DATA_6k0 was not properly terminated and thus resulted in a bug. Change-Id: I4000f06d0b49c4afb0446beddd150521c4ba3cf0 Fixes: Coverity CID 148207
2016-12-09lchan release in error state: SACCH deact only for SACCH pchansNeels Hofmeyr1-1/+15
This is useful particularly in case where we deactivate PDCHs which don't have a SACCH associated. The existin code would always attempt to deactivate a SACCH even in those cases, leading to the BTS responsding with related error messages. Change-Id: Iaf46782329b38ba8f3d438e6c75c2d467b852734
2016-11-16rsl: support for ericssons propritary SI13 formatPhilipp1-2/+11
Ericsson has introduced a propritary format to issue the S13 BCCH information. Normally the system info type field for SI13 would be encoded as 0x28. Ericsson encodes that field as 0x02 and ads a bcch mapping parameter, (IEI=F2) This patch sets the BCCH mapping to 0x00 (=BCCH Normal) statically (0xF200) The new constands are added to libosmocore, see commit: f0f9c8c29daaefbf9cff19177ade4a13ffb2e36c Change-Id: Ie0900f9b810744172b3090ce1b0ef7b7a1132946
2016-11-09lchan: Release channel in case of late activation ackHolger Hans Peter Freyther1-3/+28
In case of the sysmoBTS and receiving a channel activation ack on a channel that was marked as broken, release it again. Use a normal release without SACCH deactivation and release the rqd_ta data. Also add a local variable 'ts' to shorten some lines. The typical situation where this would occur is with high latency between BTS and BSC (or NITB). If a channel activation ack does not arrive in time, a channel is marked broken, and never recovers after that. This patch will release the channel again, which will remove the BROKEN_UNUSABLE state and makes lchan available again. Reported by Rhizomatica. However, in case of packet loss, i.e. when the channel activation ack never arrives at the BSC, this patch does not provide a resolution of the BROKEN_UNUSABLE state. On dynamic timeslots: clearing the dyn ts state could possibly happen in lchan_free() instead of in rsl_rx_chan_act_ack(). That's to be done in a separate patch, if at all. Tweaked-By: nhofmeyr Change-Id: I63dc0deaf15ba7c21e20b1e0c7b85f0437e183ed
2016-11-02log: count_codecs(): drop logging of non-TCH lchan typesNeels Hofmeyr1-3/+0
count_codecs() is called on every chan act ack, also for channels other than TCH/F and TCH/H. So this logging happens a lot during normal operation but adds no real information. Also, RSL would be the wrong logging category for this -- RSL is about the RSL communications, not whether our internal code tries to count lchan codecs for the wrong channel types. Change-Id: Ibdac3bbe48745fe6a1c31d6f87369c9066c0374a
2016-11-01Decrease count_codecs logging verbosityMax1-2/+2
Use channel type name instead of number and log it with DEBUG facility otherwise it produces lots of irrelevant messages for SDCCH* Change-Id: I11b04e0cb02bf6ed01f6076cb31a56d8921d735e
2016-10-27bsc: count the usage of codec by setting the lchan activeAlexander Couzens1-0/+37
We count the codec when the channel was successful setted up Using sign_link->trx->bts instead of msg->trx to get the bts. Add OSMO_ASSERT for bts within count_codecs() Change-Id: Ib49c7c337980a7d6f189d7a0551ca2e4c3822f45
2016-10-10abis_rsl_rx_dchan(): guard against lchan_lookup() returning NULLNeels Hofmeyr1-0/+2
Found this by coincidence, no actual failure case was observed. lchan_lookup() does have a return NULL code path, so we should not blindly use its returned pointer. Change-Id: I34ce126d36420b8194c88c0faa865294334a6658
2016-10-10Revert "bsc: count the usage of codec by setting the lchan active"Neels Hofmeyr1-35/+0
This reverts commit 38e9ea3f7f385c6660c5958970af5c71adc1682b. Introduced a reproducable segfault, because msg->trx is not actually set/used in the openbsc code paths. Program received signal SIGSEGV, Segmentation fault. count_codecs (lchan=0x1, bts=<optimized out>) at ../../../src/libbsc/abis_rsl.c:104 104 rate_ctr_inc(&bts->network->bsc_ctrs->ctr[BSC_CTR_CODEC_V1_FR]); (gdb) bt #0 count_codecs (lchan=0x1, bts=<optimized out>) at ../../../src/libbsc/abis_rsl.c:104 #1 0x0000000000425661 in abis_rsl_rx_dchan (msg=<optimized out>) at ../../../src/libbsc/abis_rsl.c:1516 #2 abis_rsl_rcvmsg (msg=0x8143f0) at ../../../src/libbsc/abis_rsl.c:2611 #3 0x00007ffff71420d0 in handle_ts1_read (bfd=<optimized out>) at ../../src/input/ipaccess.c:271 #4 ipaccess_fd_cb (bfd=0x815af8, what=1) at ../../src/input/ipaccess.c:386 #5 0x00007ffff7779b62 in osmo_fd_disp_fds (_eset=0x7fffffffe590, _wset=0x7fffffffe510, _rset=0x7fffffffe490) at ../../src/select.c:149 #6 osmo_select_main (polling=polling@entry=0) at ../../src/select.c:189 #7 0x0000000000406fac in main (argc=<optimized out>, argv=0x7fffffffe738) at ../../../src/osmo-nitb/bsc_hack.c:385
2016-10-04bsc: count the usage of codec by setting the lchan activeAlexander Couzens1-0/+35
we count the codec when the channel was successful setted up Change-Id: Ifc8a406a11dce16b9e7f3310841e470545550a2c
2016-09-17log causing rx event for lchan_lookup errorsNeels Hofmeyr1-8/+14
Add log_name to lchan_lookup() and pass such from the various RSL rx events that call it to validate the RSL chan_nr. Change-Id: Id81e7b8b9c27831923f050a78dfc7d650e687033
2016-09-17log: abis_rsl: don't log 'error' when there is no errorNeels Hofmeyr1-1/+5
The message 'RF Channel Release due error 0' keeps catching my eye because it says 'error' even though the error code is zero, i.e. no error. This shall end now. Change-Id: Ie0b9d62e8ce85a096c963931e0ae5527b8dc490a
2016-08-29libmsc/bsc: split rate counters into bsc and msc groupAlexander Couzens1-4/+4
Tweaked-By: Neels Hofmeyr <nhofmeyr@sysmocom.de> Change-Id: I7361033cd1eb919ec3c2ea2652f40ab8c75b2f99
2016-08-27log: rsl notice: tiny tweak for readabilityNeels Hofmeyr1-1/+1
Change-Id: I57c3b7d27d857c96e3fa3dacf7b766bc43100fc3
2016-08-27log: improve for rsl_lchan_mark_broken()Neels Hofmeyr1-9/+3
In rsl_lchan_mark_broken(), call rsl_lchan_set_state() so the state transition gets logged in the debug log. Remove logging for the broken channel at the callers, instead log the error actually in rsl_lchan_mark_broken() itself, with the reason message passed by the caller anyway. (Removes code dup and ensures it's always logged.) Change-Id: I54ae9bbd3f193bae7b1bda1fef3e33e62b353bf5
2016-08-27dyn TS: debug log: if still in use, also log lchan type and stateNeels Hofmeyr1-3/+5
Change-Id: Ifbf31cde24b2d1022b7a472966c17959c96e6dda
2016-08-27dyn TS: debug log 'switchover complete' only when there was a switchoverNeels Hofmeyr1-2/+3
Change-Id: I7ddcb41edce1cd7b22fe91e33bdcaedb21856222
2016-08-27dyn TS: fix OS#1798: on late RF CHAN REL ACK, activate PDCHNeels Hofmeyr1-0/+2
Tested by hacking a REL ACK delay of a couple of seconds into osmo-bts' rsl.c for the first TCH_H lchan: [[[ diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h index 093e9cb..b35c3bb 100644 --- a/include/osmo-bts/rsl.h +++ b/include/osmo-bts/rsl.h @@ -22,6 +22,7 @@ int rsl_tx_est_ind(struct gsm_lchan *lchan, uint8_t link_id, uint8_t *data, int int rsl_tx_chan_act_acknack(struct gsm_lchan *lchan, uint8_t cause); int rsl_tx_conn_fail(struct gsm_lchan *lchan, uint8_t cause); int rsl_tx_rf_rel_ack(struct gsm_lchan *lchan); +int rsl_tx_rf_rel_ack_later(struct gsm_lchan *lchan); int rsl_tx_hando_det(struct gsm_lchan *lchan, uint8_t *ho_delay); /* call-back for LAPDm code, called when it wants to send msgs UP */ diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 3802e25..1f92b0d 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -491,7 +491,16 @@ static int l1sap_info_rel_cnf(struct gsm_bts_trx *trx, lchan = get_lchan_by_chan_nr(trx, info_act_cnf->chan_nr); - rsl_tx_rf_rel_ack(lchan); + static int yyy = 0; + + DEBUGP(DRSL, "%s YYYYYYYYYYYYYYYYYYYYY %d %s\n", + gsm_lchan_name(lchan), yyy, gsm_lchant_name(lchan->type)); + + if (lchan->type == GSM_LCHAN_TCH_H && !yyy) { + yyy ++; + rsl_tx_rf_rel_ack_later(lchan); + } else + rsl_tx_rf_rel_ack(lchan); /* During PDCH DEACT, this marks the deactivation of the PDTCH as * requested by the PCU. Next up, we disconnect the TS completely and diff --git a/src/common/rsl.c b/src/common/rsl.c index 3c97af9..7926f21 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -534,6 +534,22 @@ int rsl_tx_rf_rel_ack(struct gsm_lchan *lchan) return abis_bts_rsl_sendmsg(msg); } +struct osmo_timer_list yyy_timer; + +static void yyy_timer_cb(void *data) +{ + rsl_tx_rf_rel_ack(data); +} + +int rsl_tx_rf_rel_ack_later(struct gsm_lchan *lchan) +{ + yyy_timer.cb = yyy_timer_cb; + yyy_timer.data = lchan; + osmo_timer_schedule(&yyy_timer, 10, 0); + return 0; +} + + /* 8.4.2 sending CHANnel ACTIVation ACKnowledge */ static int rsl_tx_chan_act_ack(struct gsm_lchan *lchan) { ]]] Change-Id: I87e07e1d54882f8f3d667fa300c6e3679f5c920d Fixes: OS#1798
2016-08-27dyn TS: fix: properly run an lchan activation timeoutNeels Hofmeyr1-0/+7
Actually schedule an activation timer for the activation part of a dyn TS switchover. It needs to be restarted because the channel release procedure in the first part of a switchover actually removes the activation timer. Change-Id: Ibf50d13ba10298464a8b07e34716763161438990
2016-08-27dyn TS: clearly use lchan[0], fixing minor confusionNeels Hofmeyr1-40/+54
The dyn_ts_switchover_*() functions made the impression that they act on a specific lchan of a timeslot. The assumption that we would remember to use e.g. lchan[1] across a PDCH deactivation is brain damaged to begin with; and factually we always use lchan[0] anyway (the only case for using lchan[1] would be when switching to TCH/H, but the channel allocator will always return lchan[0] for that). Instead of the brain damaged lchan args, use a ts arg across all dyn_ts_switchover_*() functions, with one exception: The dyn_ts_switchover_complete() actually receives an RSL activation ack message on a specific lchan and needs to evaluate its lchan type. This will always be lchan[0] as it is now, but we should stick with the lchan the message was sent for. For PDCH, a check to use lchan[0] already existed, when composing the ACT message in rsl_chan_activate_lchan_as_pdch(). Replace with an assertion. Adjust all callers to pass ts instead of lchan. In dyn_ts_switchover_start(), there was a dead code check that jumps to switchover_complete() in case the pchan already matches. This never hits, because we only call dyn_ts_switchover_start() when pchans mismatch. So avoid guessing at passing lchan[0] to dyn_ts_switchover_complete() by not calling it at all but logging an error instead. In rsl_chan_activate_lchan(), we remember some values before going into switchover from PDCH. Explicitly store them in lchan[0], because after a PDCH release we have always and will activate no other than lchan[0]. In dyn_ts_switchover_continue(), move the check for any existing lchan->rqd_ref further above, and more correctly check all lchans that were so far valid on the TS, instead of just one. This partly prepares for a subsequent commit to fix the act_timer use for dyn TS: with the old lchan arg, we might schedule an activation timer on lchan[1] but receive an ack on lchan[0] (for PDCH), leading to an act_timer expiry. Change-Id: I3f5d48a9bdaa49a42a1908d4a03744638c59796a
2016-08-27dyn TS: fix error recovery: switch to PDCH after lchan error stateNeels Hofmeyr1-0/+3
Tested by hacking a CHAN ACT ACK delay of a couple of seconds into osmo-bts' rsl.c for the first TCH_H lchan: [[[ diff --git a/src/common/rsl.c b/src/common/rsl.c index 3c97af9..4bfd27a 100644 --- a/src/common/rsl.c +++ b/src/common/rsl.c @@ -559,6 +559,22 @@ static int rsl_tx_chan_act_ack(struct gsm_lchan *lchan) return abis_bts_rsl_sendmsg(msg); } +struct osmo_timer_list xxx_timer; + +static void xxx_timer_cb(void *data) +{ + rsl_tx_chan_act_ack(data); +} + +static int rsl_tx_chan_act_ack_later(struct gsm_lchan *lchan) +{ + xxx_timer.cb = xxx_timer_cb; + xxx_timer.data = lchan; + osmo_timer_schedule(&xxx_timer, 10, 0); + return 0; +} + + /* 8.4.7 sending HANDOver DETection */ int rsl_tx_hando_det(struct gsm_lchan *lchan, uint8_t *ho_delay) { @@ -614,6 +630,18 @@ int rsl_tx_chan_act_acknack(struct gsm_lchan *lchan, uint8_t cause) if (cause) return rsl_tx_chan_act_nack(lchan, cause); + + static int xxx = 0; + + DEBUGP(DRSL, "%s XXXXXXXXXXXXXXXXXXXXX %d %s\n", + gsm_lchan_name(lchan), xxx, gsm_lchant_name(lchan->type)); + + if (lchan->type == GSM_LCHAN_TCH_H) { + if (!xxx) { + xxx ++; + return rsl_tx_chan_act_ack_later(lchan); + } + } return rsl_tx_chan_act_ack(lchan); } ]]] Change-Id: Ie82dec9c9fefc476fdf5b5afdad2246b9d6fe304
2016-08-27dyn TS: move check whether to switch to PDCH to separate functionNeels Hofmeyr1-17/+33
Prepares for an upcoming commit using the same check in error_timeout_cb(). Change-Id: I8abfa964631040f798212cc3e360f67f9e09b7c5
2016-08-27libbsc/libmsc: convert old osmo counter into rate_ctrgsAlexander Couzens1-4/+4
rate counters support the export to statsd and can have a delta value. Change-Id: Ie749cebd53a0bb618d0e23d375885712078bf8dd
2016-07-28dyn TS: split dyn_pdch_init() for new dyn type and renameNeels Hofmeyr1-4/+2
Init both TCH/F_PDCH and TCH/F_TCH/H_PDCH via dyn_ts_init(), which refactors dyn_pdch_init(). Make dyn_ts_switchover_start from abis_rsl.c public in abis_rsl.h, so we can start the initial switchover to PDCH from dyn_ts_init(); in abis_rsl.h include gsm_utils.h for enum gsm_phys_chan_config. Change-Id: I5c0b257ba8ff0e9c9a2268681a84b0681a778368
2016-07-28dyn TS: implement pchan switchover logicNeels Hofmeyr1-1/+338
In struct gsm_lchan, add dyn.rqd_ref and dyn.rqd_ta. These save the Channel Requested details across the PDCH deactivation dance. abis_rsl.c: add static functions: * dyn_ts_switchover*() for the various stages of switchover between pchans. * pchan_for_lchant() to derive the desired pchan from the lchan type that was set during lchan_alloc(). * rsl_chan_activate_lchan_as_pdch() to compose the simpler RSL CHAN ACT message without introducing numerous special cases to the normal RSL CHAN ACT code. In rsl_chan_activate_lchan(), detect and initiate required pchan switchovers if requested pchan on a dyn TS differs. In rsl_rx_rf_chan_rel_ack(), initiate or continue pchan switchovers after a channel was released. In rsl_rx_chan_act_ack(), notice that a switchover is complete. In chan_alloc.c, add ts_subslots(): abis_rsl.c will need to know the number of subslots per pchan, to verify that all lchans are free before dyn TS switchover. The subslots_per_pchan[] array is static to lchan_alloc.c, and since we need a non-trivial check for dyn TS anyway, add public ts_subslots() to lchan_alloc.c, which also checks the current dyn pchan type. Change-Id: I5c6bce13092a10204113d84678c587c65e35e4fd
2016-07-28dyn TS: chan act: set chan_nr according to dyn pchan typeNeels Hofmeyr1-2/+6
Change-Id: Ica5ef2197b3e97d5e895f3e3221295d5d0ef8908
2016-07-28dyn TS: gsm_lchan2chan_nr(): decouple from ts->pchanNeels Hofmeyr1-1/+1
For upcoming dynamic TS, the pchan choice for RSL De-/Activation is not trivial. So in order to pass the desired pchan to generate the RSL chan_nr, introduce gsm_lchan_as_pchan2chan_nr(). To avoid code dup, this requires decoupling the gsm_ts2chan_nr() pchan from the actual ts struct, so refactor gsm_ts2chan_nr() to gsm_pchan2chan_nr() with explicit pchan, ts_nr and lchan_nr arguments. Change-Id: I1a40e8452fe8120d350a27973e56be0b8c8c517f
2016-07-28dyn TS: rename lchan->dyn_pdch to lchan->dynNeels Hofmeyr1-4/+4
This will also be used by the new dynamic TS type, so make the name more general. Change-Id: I2451b10519dff3e5cdf503b430574c0984d19000
2016-07-28prepare dyn TS: act lchan: fetch the channel mode a bit laterNeels Hofmeyr1-8/+8
Dyn TS will add a new type of chan activation, which does not need a Channel Mode IE. Incidentally, the dyn PDCH also doesn't need this IE if it opts for sending a PDCH ACT instead. So it makes sense to compose the Channel Mode IE only after the dynamic decisions are done. Change-Id: I66d88ad6a4ae7bee1e552960fd4e92aff953125c
2016-07-28error log: rsl_chan_activate_lchan: log channel mode errorNeels Hofmeyr1-1/+5
Change-Id: I0f403b13ff9897770c0b855bf57a9440717b46e8
2016-07-28debug log: fix line endings for abis_rsl_rx_rll loggingNeels Hofmeyr1-0/+3
This function outputs a debug log without line ending, which should be completed by a subsequent DEBUGPC(), so complete the started log line where missing in three of the switch cases. The three cases do print another log message, but since these don't start on a new line when RLL is in debug level, the log output for these is hard(er) to read without this patch. Change-Id: I355647e77e1b2d8e75ae1a167fe87a507a38d82d
2016-07-25error log: abis_rsl.c: log errors in channel_mode_from_lchan()Neels Hofmeyr1-0/+12
Change-Id: Ifa416eab76e6c26dc83e979d815ae778d0d7133b
2016-07-25code dup: join [rsl_]lchan_lookup() from libbsc and osmo-btsNeels Hofmeyr1-42/+10
lchan_lookup in abis_rsl.c and rsl_lchan_lookup() from osmo-bts rsl.c are the same code, except for the log context, which is only set in abis_rsl.c. Factor out the common code to rsl_lchan_lookup() in gsm_data_shared.c. Openbsc and osmo-bts each define their own DRSL log constant, so add an int *rc return code argument and keep the logging part in abis_rsl.c's thin lchan_lookup() wrapper. Incidentally, this also removes code dup for logging. To avoid duplicate symbols, the rsl_lchan_lookup() implementation needs to be removed from osmo-bts, so older osmo-bts git revisions will not build with this. Change-Id: Ie89bc5bb9110a0e539d37991dedac6f913211b48
2016-07-25cosmetic: rsl_rx_chan_act_ack(): use local lchan var in 14 instancesNeels Hofmeyr1-14/+15
In preparation for an upcoming change. Change-Id: I9ce71fd7dde42ad7d20f806ac70c150d11450efa
2016-07-25cosmetic: act lchan type: use constant instead of 0x00Neels Hofmeyr1-1/+1
Change-Id: Idc8afc4e52e189f474077899eef896381ce238f7
2016-07-25cosmetic: rsl_rx_rf_chan_rel_ack(): use local ts var for brevityNeels Hofmeyr1-5/+5
In preparation for an upcoming change. Change-Id: I11bd59492fa8d5b9392d9f2b511c8fa9585afe6c
2016-07-25comments: clarify some dynamic TS commentsNeels Hofmeyr1-2/+2
A new type of dynamic channel will be introduced soon, so prepare some comments to name the dynamic TS kind more specifically. Change-Id: I51fa8c2ebba507299e55a5cb7e67e48a6c8471f7
2016-07-17dyn pdch: don't PDCH ACT if gprs mode is noneNeels Hofmeyr1-2/+9
Skip PDCH activation if the GPRS mode is 'none' at: * TCH/F_PDCH init after OML Enable (dyn_pdch_init()) * after TCH/F_PDCH is released, in TCH/F mode * in the T3111 error timer callback after a TCH/F_PDCH was released in error state Assert the GPRS mode in rsl_ipacc_pdch_activate() to make sure all callers check the GPRS mode. Closes: OS#1765 Change-Id: I970e5f9dbcb1c625209e914a4c7696294ed34e62
2016-06-24err log: tweak dyn pdch ack error loggingNeels Hofmeyr1-6/+6
Rather use gsm_lchan_name(). Change-Id: I0334484eaa6a2c0f25925042c9c3c1a4e3e78ca4
2016-06-24dyn PDCH: cosmetic: clarify lchan rel with assertion and commentNeels Hofmeyr1-1/+11
Change-Id: If3cc40022e8283daa991fffe4b6baa734303d8a5
2016-06-23debug log: log all lchan state transitionsNeels Hofmeyr1-0/+3
Change-Id: Ic70aca65b3796c90ba1a88ea67ac7a2ad9190b69
2016-06-21dyn PDCH: enable PDCH only after release due to errorNeels Hofmeyr1-1/+6
In rsl_rx_rf_chan_rel_ack(), only activate PDCH when in NONE state. For the case of REL_ERR state, do the PDCH activation in the error timeout callback after T3111 is done. Change-Id: I4c55479b252a12039bb3d8c30a9cbf0199ca410e
2016-06-16dyn PDCH: set lchan->state after PDCH DEACT / before PDCH ACTNeels Hofmeyr1-23/+5
Do the PDCH DE/ACT before we set the lchan->state to De-/Activation Requested. It makes more sense semantically to change PDCH mode while the lchan is still in NONE status. Thus slightly move some invocations: PDCH ACT: Free the lchan before PDCH activation. Hence remove the lchan_free() call from the rsl_rx_pdch_act_ack() code path; it used to do the PDCH activation first and call lchan_free() in the callback. PDCH DEACT: Set the (TCH) Activation Requested state only within rsl_chan_activate_lchan(), after the PDCH deact is complete. Channel allocator: don't pick channels that have a PDCH PENDING flag set, to avoid using channels that are still in PDCH switchover (despite their state being NONE). The lchan_may_change_pdch() sanity checks are becoming a lot simpler. Change-Id: I4206dd4808e21c3e59393ea7f5ab4f438afff066