diff options
author | Alec L Davis <sivad.a@paradise.net.nz> | 2010-07-29 23:48:16 +0000 |
---|---|---|
committer | Alec L Davis <sivad.a@paradise.net.nz> | 2010-07-29 23:48:16 +0000 |
commit | e0e0b776b77031223c90f9fcadefe3efffab951d (patch) | |
tree | c89a9ee0afaa5a759490ff2887e1a4b182c47ac0 /drivers/dahdi/wctdm24xxp/wctdm24xxp.h | |
parent | 9855dc2467c5f7efd3a0ccf2f499a2193fb7973e (diff) |
SLIC_LF_OPPENDING confict between wctdm_proslic_recheck_sanity() and set_lasttxhook_interruptible()
Problem:
'wctdm_proslic_recheck_sanity()' is executed (4 times??) every ~256ms which monitors and clears the SLIC_LF_OPPENDING on fxs->lasttxhook when the LF state has been reached.
'set_lasttxhook_interruptible()' times out after 100ms waiting from the previous write to the SLIC_LF register, by waiting for SLIC_LF_OPPENDING to be cleared, thus the write will fail.
Solution:
adds wctdm_proslic_check_oppending which does the monitoring and clearing of SLIC_LF_OPPENDING, which is execute every 1ms. It also if the correct state is not reached within 100ms, resends the lasttxhook state.
(closes issue #17724)
Reported by: alecdavis
Patches:
wctdm24xxp_fxs_answer.diff4.txt uploaded by alecdavis (license 585)
Tested by: alecdavis, sruffell
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9063 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wctdm24xxp/wctdm24xxp.h')
-rw-r--r-- | drivers/dahdi/wctdm24xxp/wctdm24xxp.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/dahdi/wctdm24xxp/wctdm24xxp.h b/drivers/dahdi/wctdm24xxp/wctdm24xxp.h index beb929f..9297103 100644 --- a/drivers/dahdi/wctdm24xxp/wctdm24xxp.h +++ b/drivers/dahdi/wctdm24xxp/wctdm24xxp.h @@ -240,6 +240,7 @@ struct wctdm { * voicebus ISR. */ int lasttxhook; + int oppending_ms; spinlock_t lasttxhooklock; int palarms; struct dahdi_vmwi_info vmwisetting; |