osmo-bsc/openbsc
Neels Hofmeyr d35fc4408c dyn TS: fix OS#1798: on late RF CHAN REL ACK, activate PDCH
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-27 02:23:47 +00:00
..
contrib Add web proxy for control interface 2016-08-11 06:05:39 +00:00
doc add example config for sysmobts 2016-08-08 11:29:49 +00:00
include dyn TS: clearly use lchan[0], fixing minor confusion 2016-08-27 02:23:47 +00:00
src dyn TS: fix OS#1798: on late RF CHAN REL ACK, activate PDCH 2016-08-27 02:23:47 +00:00
tests sgsn: add statistics counter for GPRS and PDP packets 2016-07-25 00:15:53 +00:00
tools
.gitignore Ignore extended test leftovers 2016-05-12 12:24:23 +00:00
AUTHORS AUTHORS: Add Jacob and Neels 2015-12-05 23:04:11 +01:00
COPYING
Makefile.am Fix "make distcheck" 2015-06-19 20:57:48 +02:00
README openbsc/README: some fixes, add CSCN and Iu* 2016-01-28 13:36:07 +01:00
README.vty-tests Add README.vty-tests 2016-01-28 13:36:07 +01:00
configure.ac configure: require libgsm for --enable-mgcp-transcoding 2016-06-17 15:33:22 +00:00
git-version-gen
openbsc.pc.in
osmoappdesc.py gtphub: Fix the VTY prompt to make the tests move forward 2015-12-14 15:24:50 +01:00

README

About OpenBSC
=============

OpenBSC started as a minimalistic all-in-one implementation of the GSM Network,
with particular emphasis on the functionality typically provided by the BSC,
MSC, HLR, VLR and SMSC.  Today it is a growing suite of libraries and programs,
implementing protocol stacks and functional elements, including

 * OsmoBSC - a pure GSM BSC, speaking Abis/IP to the BTS and A/IP to the MSC
 * OsmoBSC-MGCP - MGCP helper to the OsmoBSC software
 * OsmoNITB - a BSC+MSC+VLR+HLR+SMSC "Network in the box".
 * OsmoCSCN - a voice CN with A/IP and IuCS/IP towards the BSC and/or HNB-GW
 * OsmoSGSN - a GPRS SGSN with Gb/IP and IuPS/IP towards the PCU and/or HNB-GW
 * Osmo-GbProxy - a Proxy to aggregate many Gb links as one Gb link to the SGSN
 * OsmoBSCNAT - a gateway aggregating many A links as one A link to the MSC
 * OsmoGTPHUB - a hub aggregating many GTP links (between SGSN and GGSN)
 * ipaccess-utils - some tools to discover + configure ip.access nanoBTS
 * bs11_config - a tool to configure the Siemens BS-11 microBTS

Various interfaces towards the BTS are supported, among which are:

 * Classic A-bis over E1 using a mISDN based E1 interface. In other
   words, you can connect existing GSM Base Transceiver Station (BTS)
   through E1 to OpenBSC.  So far, we have made it work with the Siemens BS-11,
   various Ericsson RBS2xxx BTS models and the Nokia MetroSite.

 * A-bis over IP as used by the ip.access nanoBTS product family as well as
   the Open Source OsmoBTS software (by the same authors as OpenBSC).  OsmoBTS
   in turn supports various transceiver hardware, including the sysmoBTS
   product family, as well as SDR transceivers supported by OsmoTRX, such as
   the UmTRX or USRP boardss.

 * IuCS and IuPS over IP towards an HNB-GW (see osmo-iuh) for UMTS (3G)
   voice and data links.

Find OpenBSC online at
http://openbsc.osmocom.org/

	Harald Welte <laforge@gnumonks.org>