[Home]

Summary:DAHLIN-00181: Motherboards with Intel ICH7 Family and ICH5 Family dont know when pstn is ring...
Reporter:Francisco Antonello (skyzer)Labels:
Date Opened:2010-03-13 00:09:39.000-0600Date Closed:2019-05-31 09:39:57
Priority:MinorRegression?No
Status:Closed/CompleteComponents:wcfxo
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) lspci_verbose_amd.txt
( 1) lspci_verbose_intel.txt
Description:Excuse me if this topic has been addressed. But I have had constant problems since the driver was merged into zaptel to dahdi involving X100P cards and motherboards with intel chipsets.

What happens is that in any way chan_dahdi don't receives any signals that the line is ringing.

In the same way that it is not possible to make a call to the pstn line.

This is happening only with motherboards with Intel chipset of the families described. Mothermoards withs Sis, Nvidia, Via chipsets dont show this particular probleman... if a put the same hard disk, and the same board in another machine, with sis, nvidia, via chipset's, this works perfect.... its happen ONLY with intel boards...

(PS: i use slackware 13.0)

Do i make some debugging in wcfxo driver and not found anywhere in the driver becomes aware that the line is ringing.

Could someone help me? I do not believe I'm doing something wrong, because the same device works perfectly with the asterisk 1.4.x Zaptel driver.
Comments:By: Tzafrir Cohen (tzafrir) 2010-03-14 06:23:55

I'm not sure I understand the symptoms.

How can you tell that a PSTN ring is not detected?

Does this work on some systems? Could you provide the output of lspci of some relevant systems (those in which it works and those in which it doesn't)?

Does a standard analog phone detect the ring?

By: Francisco Antonello (skyzer) 2010-03-18 00:37:50

Ok, I'll explain.

First, i have the same board, working in another systems.
the vast majority of motherboards have a Sis, Via or nvidia.
The probleman aways happen in some Intel machines.

I attached one file (lspci_verbose_nvidia.txt) from on old machine (AMD Athlon XP 2200+). on this machine, everything works fine.

look, when i call to my pstn number, asterisk give-me this message (this is in the system who works fine):

[Mar 18 00:47:20]     -- Starting simple switch on 'DAHDI/1-1'
[Mar 18 00:47:21]     -- Executing [s@from-pstn:1] Wait("DAHDI/1-1", "1") in new stack

So, i put some debug messages on chan_dahdi.c, on the ss_thread function.
On the good machine, the debug message is showed..
On the the machine who use intel chipset, the message is not showed..

i not know if I'm right, but if ring tone is detected, the processing will pass through this function. Right?

So, after this, i decide to test wcfxo.c driver and has put some messagens on wcxfs.c from dahdi driver.

I put one debug message on this part of code..

-------------------------------------------------
static int wcfxo_hooksig(struct dahdi_chan *chan, enum dahdi_txsig txsig)
{
       struct wcfxo *wc = chan->pvt;
       int reg=0;

       printk(KERN_INFO "FXO: HOOK event detected on wcfxo_hooksig\n");

---------------------------------------------------------------------------
note that the debug message is just the beginning of the function. so, in the some system, they should be showed right?

So, when (on the system who works) recive a ring tone, this message has showed on the syslog and chan_dahdi.c of asterisk knows about a new call is coming and show the debug message...

Sorry, I have over 15 years as a C programmer and I'm degree in computer engineering. However, never worked with drivers for Linux kernel.
The question is, what is the first function who is called when a public pstn call incoming on dahdi driver? in case of wcfxo.c

When i do the same test on the system who  does not work, this message is not showed..
Nothing happen!!!

I put some debug messages on the registration funcion, and the board is correctly registred on the system..

this is the output of /proc/interruptions from the system with intel board.
-------------------------------------------------------
root@asterisk:~# cat /proc/interrupts
          CPU0
 0:        314   IO-APIC-edge      timer
 1:          8   IO-APIC-edge      i8042
 4:          2   IO-APIC-edge
 8:          1   IO-APIC-edge      rtc0
 9:          0   IO-APIC-fasteoi   acpi
14:      16070   IO-APIC-edge      ide0
15:          0   IO-APIC-edge      ide1
16:        146   IO-APIC-fasteoi   HDA Intel
19:          0   IO-APIC-fasteoi   ata_piix
23:         29   IO-APIC-fasteoi   wcfxo
26:      51307   PCI-MSI-edge      eth0
NMI:          0   Non-maskable interrupts
LOC:     471435   Local timer interrupts
RES:          0   Rescheduling interrupts
CAL:          0   Function call interrupts
TLB:          0   TLB shootdowns
TRM:          0   Thermal event interrupts
SPU:          0   Spurious interrupts
------------------------------------------------------------------
I attached a file called lspci_verbose_intel.txt with lspci from intel system.



A timely question that maybe I can help investigate this problem.

In that role really wcfxo driver learns that there is an event occurring with the line?

ok, the second question, Yes, when i call to my pstn, the standard analog phone rings... but asterisk dont take knowledge about this...


one more thing that occurred to me after looking carefully dmesg system intel
This message is displayed during the boot process and believe it has to do with the reason not to function


dahdi: Telephony Interface Registered on major 196
dahdi: Version: 2.2.0.2
wcfxo 0000:03:02.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
FXO PCI Master abort
wcfxo: DAA mode is 'FCC'
Found a Wildcard FXO: Wildcard X100P
dahdi_echocan_mg2: Registered echo canceler 'MG2'
dahdi_transcode: Loaded.


look.. we say: FXO PCI Master abort

what is the condiction who makes ints variable asume 0x10 value?

this is the part of code

       if (ints & 0x10) {
               printk(KERN_INFO "FXO PCI Master abort\n");
               /* Stop DMA andlet the watchdog start it again */
               wcfxo_stop_dma(wc);
               return IRQ_RETVAL(1);
       }

even with this message, the card appears as configured

root@asterisk:~# dahdi_cfg -vvv
DAHDI Tools Version - 2.2.0

DAHDI Version: 2.2.0.2
Echo Canceller(s): MG2
Configuration
======================


Channel map:

Channel 01: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 01)

1 channels to configure.

Setting echocan for channel 1 to mg2


root@asterisk:~# dahdi_hardware
pci:0000:03:02.0     wcfxo+       1057:5608 Wildcard X100P

Ok. is all information I have now ...

By: Shaun Ruffell (sruffell) 2010-03-18 00:44:09

Depending on the kernel version you're using, if the IDE controller is operating in "combined mode" (i.e., the hard drive shows up on hda instead of sda) the disk controller can lock interrupts for so long an X100P will not be able to service it's interrupt in time.

Is your hard drive on hda?

By: Francisco Antonello (skyzer) 2010-03-18 21:09:36

Okay, this is not the case. I tested both ways,
What is happening is that during the initialization of FXO
th routine DAHDI_IRQ_HANDLER (wcfxo_interrupt) is performed during the interruptions.

From this point, ints = inb (wc-> ioaddr + WC_INTSTAT); receives values 5 and 10

but then, at some stage, the reading is 255 and this code has considered true

       if (ints & 0x10) {
               printk(KERN_INFO "FXO PCI Master abort\n");
               /* Stop DMA andlet the watchdog start it again */
               wcfxo_stop_dma(wc);
               return IRQ_RETVAL(1);
       }

right?

so, after this... nothing more works.. watchdog  dont restart dma.. and the fxo dont works...

then, in what context, INTB receives the 255 response?
what is wrong..

Another thing not mentioned.
Even dahdi_cfg-v shows no problem when I try to open a channel to the pstn, it is not open. Simply, the line goes quiet ..

By: Anderson Alipio (alipio) 2010-12-27 09:48:25.000-0600

I'm having the same problem in a Intel motherboard with X100P FXO card. Does this issue have a solution already?

Thanks.