mirror of git://git.sysmocom.de/ofono
d7d49eb1d5
After unplugging a Huawei USB dongle, the 'atoms' in oFono are removed via 'flush_atoms'. Every atom has a destruct function pointer, used as destructor. This includes the gprs_context atom that is currently active. The function calls are: flush_atoms -> destruct -> gprs_context_remove -> at_gprs_context_remove -> modem_disconnect Because the device is physically removed, the IO channel for the AT port is gone. In 'at_gprs_context_remove', there is an attempt to resume communication over that AT port, but that is not possible. This is detected, and 'io_disconnect' (pointer to 'modem_disconnect') is called. 'modem_disconnect' has the same atom and tries to remove it again, so it calls the same destructor. This continues infinitely. This patch moves the GPRS context removal so that it only happens if the modem port could be re-opened successfully. If the port cannot be re-opened (in the case of modem removal), the atom is already in the process of being removed by the process kicked off in flush_atoms. This fix is limited to Huawei devices and has been tested using the following devices: - E3531i-2 - E3372 - E3531s-2 - E369 - E1552 |
||
---|---|---|
btio | ||
doc | ||
drivers | ||
dundee | ||
examples | ||
gatchat | ||
gdbus | ||
gisi | ||
gril | ||
include | ||
linux | ||
plugins | ||
src | ||
test | ||
tools | ||
unit | ||
.gitignore | ||
.mailmap | ||
AUTHORS | ||
COPYING | ||
ChangeLog | ||
HACKING | ||
INSTALL | ||
Makefile.am | ||
NEWS | ||
README | ||
TODO | ||
acinclude.m4 | ||
bootstrap | ||
bootstrap-configure | ||
configure.ac | ||
ofono.pc.in |
README
oFono - Open Source Telephony ***************************** Copyright (C) 2008-2011 Intel Corporation. All rights reserved. Compilation and installation ============================ In order to compile telephony stack you need following software packages: - GCC compiler - GLib library - D-Bus library To configure run: ./configure --prefix=/usr --mandir=/usr/share/man \ --sysconfdir=/etc --localstatedir=/var Configure automatically searches for all required components and packages. To compile and install run: make && make install Embedded Linux library ====================== In order to compile the daemon and utilities the development version of Embedded Linux library is required to be present. The development repositories can be found here: git://git.kernel.org/pub/scm/libs/ell/ell.git https://kernel.googlesource.com/pub/scm/libs/ell/ell.git The build systems requires that the Embedded Linux library source code is available on the same top level directory as the source code: . |--- ell | |--- ell | `--- unit `--- ofono |--- src `--- tools It is not required to build or install Embedded Linux library. The build will happen when building the Wireless daemon and it will then be linked internally. When using --enable-external-ell build option, it is not required that the Embedded Linux library source code is available in the top level directory. Kernel Dependencies =================== In order to have the PPP stack working in oFono you need to enable CONFIG_TUN (Universal TUN/TAP device driver support) in your kernel .config. Information =========== Mailing list: ofono@ofono.org For additional information about the project visit oFono web site: http://www.ofono.org