diff options
author | Guillaume Knispel <gknispel@avencall.com> | 2012-11-23 00:46:22 +0100 |
---|---|---|
committer | Guillaume Knispel <gknispel@avencall.com> | 2012-11-23 00:46:22 +0100 |
commit | fa32ecd16da0c67b99ebaf7faf98e3d0da0e2d80 (patch) | |
tree | 3af6e757588f8c2be1aec37bdc8843279b244ed7 /xhfc/base.c | |
parent | 3b12ddead15d043f9ae567d3a6d2f07172e55117 (diff) | |
parent | e7bdaa4cec115c4154a09a2b7447a8a5755d1184 (diff) |
Merge branch 'master' of alcor:git/xivo-drivers
Diffstat (limited to 'xhfc/base.c')
-rw-r--r-- | xhfc/base.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/xhfc/base.c b/xhfc/base.c index b8c2ade..3455d4d 100644 --- a/xhfc/base.c +++ b/xhfc/base.c @@ -478,12 +478,6 @@ static int hdlc_tx_frame(struct xhfc_span *xhfc_span) char debugbuf[MAX(256, HDLC_BUF_LEN * 3 + 1)]; int dbglen; - /* ignoring TE red alarms: if TE and we are in alarm, restart the - * S/T state machine... */ - if (!xhfc_span->nt && (xhfc_span->span.alarms != 0)) { - activate_request(xhfc_span); - } - fifo = dchan_fifo(xhfc_span); res = dahdi_hdlc_getbuf(xhfc_span->sigchan, buf, &size); @@ -557,6 +551,11 @@ static void xhfc_hdlc_hard_xmit(struct dahdi_chan *chan) /* Increment the hdlc_pending counter and trigger hdlc_tx_frame */ if (xhfc_span->sigchan == chan) atomic_inc(&xhfc_span->hdlc_pending); + + /* If there is an alarm, try to activate layer1 before sending out + * anything (xref7) */ + if (xhfc_span->span.alarms != 0) + activate_request(xhfc_span); } /***************************************************************************** @@ -602,6 +601,8 @@ static irqreturn_t xhfc_interrupt(int irq, void *dev_id) for (i = 0; i < SPANS_PER_CHIP; i++) { struct xhfc_span* s = &xhfc->spans[i]; + /* If there is an alarm, wait for the port to go up before transmission + * (xref7) */ if ((s->span.flags & DAHDI_FLAG_RUNNING) && s->sigchan && s->span.alarms == DAHDI_ALARM_NONE) { |