summaryrefslogtreecommitdiff
path: root/drivers/dahdi
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-09-23 20:23:47 +0000
committerShaun Ruffell <sruffell@digium.com>2011-09-23 20:23:47 +0000
commit185f0b7682a11a706057a4d6bcc17c92953fc455 (patch)
tree2bddd35b7de43e3ddaffa72411caa9bd59335984 /drivers/dahdi
parent8ef4ae608415a09c077cdd022a55e4ed7b1398a3 (diff)
dahdi: Check for master in DAHDI_STARTUP / resolves MeetMe regression.
There were a couple of reports that MeetMe conferences were not working in 2.5.0.1 and that downgrading to 2.4.1.2 resolved the issue. This could occur if there were no analog spans in a system, and all the digital spans were out of alarm before DAHDI_STARTUP ioctl was called by dahdi_cfg. If the spans were *not* out of alarm, they would be marked master when the span changes it's alarm state. This would result in a condition where no spans were marked as the "master" and so the core timer was handling conferencing. The core timer runs by default at 4ms and most board drivers run at 1ms intervals, but a channel currently only buffers up 2ms of data when conferenced. Therefore, 2ms of audio from a board was continuously dropped from the conference every 4ms by default. This fixes a regression first introduced in 2.5.0 which was specifically added in revision r9611 "dahdi: Do not locate new master in interrupt context." Internal-reference-ID: DAHDI-894 Signed-off-by: Shaun Ruffell <sruffell@digium.com> Tested-by: Dennis Martinez <dmartinez@digium.com> Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10205 git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.5@10207 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi')
-rw-r--r--drivers/dahdi/dahdi-base.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index 77432fc..f01074e 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -4797,6 +4797,10 @@ static int dahdi_ioctl_startup(struct file *file, unsigned long data)
*/
s->chans[x]->rxhooksig = DAHDI_RXSIG_INITIAL;
}
+
+ /* Now that this span is running, it might be selected as the
+ * master span */
+ __dahdi_find_master_span();
}
put_span(s);
return 0;