ISDN4BSD (HPS version) is going into ports
Hans Petter Selasky
hselasky at c2i.net
Thu Jul 19 16:48:19 UTC 2012
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
More information about the freebsd-isdn
mailing list