ISDN4BSD (HPS version) is going into ports

Andreas Longwitz longwitz at incore.de
Tue Jan 15 11:28:16 UTC 2013


Hans Petter Selasky wrote:
> 
> Do you know what mode the chip is running in for the B-channels?
Not really.

> HDLC or so-called transparent mode (no bit-destuffing). By default the AVM PCI 
> driver is setup to use HDLC emulation, and expects that the chip is configured 
> for transparent mode. Valid HDLC flags start like 0x7E, and that is what I 
> would expect. Else something is wrong somewhere. 
> 
> [Incoming data] -> [HDLC table decoder] -> [isdndecode]
> 
> No data in isdndecode means that the HDLC table decoder is not getting what it 
> expects.

Thanks for this clarification.

With some more initialization stolen from the BSD source I now have for
the first incoming frame:

avm_pci_b_status_read: len_rx=32:
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
avm_pci_b_status_read: len_rx=32:
0xffffffffffe7ff7e7edf070087043c003814183cf920021e20001ea9cfe8e7e7
avm_pci_b_status_read: len_rx=32:
0xe7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7

and the first outgoing looks like this:
avm_pci_b_status_read: len_tx=32:
0xffffff7edf070087040400381418683c51db0d10008f30e0fafdffffffffffff

and my local isdndecode sees both of this frames (remote isdndecode sees
only his own frame):

-- TE->NT - unit:00  frame:000030 - time:14.01 21:28:26.129845 -
                                    length:18 ----
B01:000  ff 03 c0 21 01 01 00 0e    05 06 1a 4f d4 76 03 04
B01:010  c0 23

-- NT->TE - unit:00  frame:000031 - time:14.01 21:28:26.203400 -
                                    length:18 ----
B01:000  ff 03 c0 21 01 0f 00 0e    05 06 4f 3e 44 c0 03 04
B01:010  c0 23

But no more frames.

I have b1control=hdlc in my isdnd.rc and use for the card:
     isdnconfig -u 0 -p DRVR_DSS1_TE
I do not know what to do otherwise from userland to "configure the chip
for transparent mode". The kernel driver should do this (he sets
HSCX_MODE_TRANS) ?

I agree there is a communication problem for B-channel between the
driver and the chip. For an outgoing B-channel frame we write the frame
 to the fifo of the chip but I cannot see, that we tell the chip we are
ready and the frame should go out the line. For an incoming B-channel
frame we read the frame from the fifo of the chip but I don't see that
we tell the chip we have it, so the chip does not get the next frame
from the line. For incoming D-channel frames we use RMC command for this
in register cmdrd.

Probably I am missing something.

-- 
Andreas Longwitz



More information about the freebsd-isdn mailing list