Date: Thu, 19 Jul 2012 18:48:31 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: Andreas Longwitz <longwitz@incore.de> Cc: freebsd-isdn@freebsd.org Subject: Re: ISDN4BSD (HPS version) is going into ports Message-ID: <201207191848.31049.hselasky@c2i.net> In-Reply-To: <500833F5.2050205@incore.de> References: <4FFDB2DE.6010107@incore.de> <201207161801.46422.hselasky@c2i.net> <500833F5.2050205@incore.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 19 July 2012 18:21:09 Andreas Longwitz wrote: > Hi Hans, Hi Andreas, > > >> 1. example: Default options + SPPP + RBCH, crash on kldload i4b, test PC > > > >> without isdn hardware: > > I cannot reproduce this crash over here. I think it is not a bug in I4B, > > but rather some hardware generating spurious interrupts when probing! > > Loading I4B will cause a re-probe of existing devices with no driver > > attached. > > OK, the re-probe of the existing devices is done by the kernel because a > DRIVER_MODULE is loaded via kldload, or did you some special programming > for this ? No, this is done by generic PNP/PCI code when the module is loaded as far as I'm aware. > > > The I4B module as a whole cannot be unloaded, it requires a reboot. Some > > parts of I4B supports unload, but others not. A crash at this point is > > like expected. However it is possible in theory to split I4B into > > separate modules, which can be loaded/unloaded, but not the core itself > > currently. > > So it seems a little bit safer to load i4b - or any other DRIVER_MODULE > - via loader.conf, because the re-probe must not be done. Right. > > > I believe the SPPP functionality has not been tested for a while. > > In the meantime I found the reason for my troubles with i4b + sppp on > incoming calls: > > There was a commit for if_spppsubr.c (Revision 1.222) with the text: > Use monotonic time_uptime instead of 'time_second' as timebase for > timeouts. After changing in i4b_global.h from > #define SECOND time_second > to #define SECOND time_uptime > the problem was gone. I4B also uses SECOND for other purpose. I think your change is OK and have committed it. > > One bagatelle is left: On every incoming call I see in /var/log/messages > kernel: i4b-L3 dss1_decode_q931_cs0_ie_cd: IEI_BEARERCAP - Unsupported > B-Sub-Protocol 0x00 > kernel: i4b: unit 0, assigned TEI = 253 = 0xfd (example), This warning can be ignored. I4B looks for a Voice type byte which is not there and the safety wrapper returns zero. Try this patch: Modified: trunk/i4b/src/sys/i4b/dss1/dss1_l3decoder.h Log: i4b: Silence warning when using HDLC. Modified: trunk/i4b/src/sys/i4b/dss1/dss1_l3decoder.h =================================================================== --- trunk/i4b/src/sys/i4b/dss1/dss1_l3decoder.h +++ trunk/i4b/src/sys/i4b/dss1/dss1_l3decoder.h @@ -177,8 +177,10 @@ break; default: - NDBGL3(L3_P_ERR, "IEI_BEARERCAP - " + if (dss1_get_valid(buf,4)) { + NDBGL3(L3_P_ERR, "IEI_BEARERCAP - " "Unsupported B-Sub-Protocol 0x%02x", temp); + } cd->channel_bsubprot = BSUBPROT_UNKNOWN; } break; > > but the incoming SETUP frame is ok. Can you give me a hint how to deal > with this ? In /etc/isdn/isdnd.rc I do not have any subaddress specific > parameters. Subaddress is not matched unless specified. I'll roll out a new tarball when time permits. Until further simply checkout code via SVN and type "make package" in the i4b direction to get a new tarball for ports. After replacing the file in /usr/ports/distfiles, you type make makesum or something like that to update the checksum file. Thanks for testing! --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201207191848.31049.hselasky>