From d5e718ec03587decd8418af754dc010b68722fff Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Mon, 20 Sep 2010 20:33:15 +0000 Subject: [PATCH] dahdi: Use 'chan' convenience pointer in dahdi_receive. Simplifies the function and may increase performance due to decreased dereferencing of the span and channel array. Review: https://reviewboard.asterisk.org/r/905/ Signed-off-by: Shaun Ruffell git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9364 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-base.c | 78 +++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 9d2652b..fd5fcae 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -8716,9 +8716,10 @@ int dahdi_receive(struct dahdi_span *span) span->watchcounter--; #endif for (x=0;xchannels;x++) { - if (span->chans[x]->master == span->chans[x]) { - spin_lock_irqsave(&span->chans[x]->lock, flags); - if (span->chans[x]->nextslave) { + struct dahdi_chan *const chan = span->chans[x]; + if (chan->master == chan) { + spin_lock_irqsave(&chan->lock, flags); + if (chan->nextslave) { /* Must process each slave at the same time */ u_char data[DAHDI_CHUNKSIZE]; int pos = 0; @@ -8728,8 +8729,8 @@ int dahdi_receive(struct dahdi_span *span) do { data[pos++] = span->chans[z]->readchunk[y]; if (pos == DAHDI_CHUNKSIZE) { - if(!(span->chans[x]->flags & DAHDI_FLAG_NOSTDTXRX)) - __dahdi_receive_chunk(span->chans[x], data); + if (!(chan->flags & DAHDI_FLAG_NOSTDTXRX)) + __dahdi_receive_chunk(chan, data); pos = 0; } z=span->chans[z]->nextslave; @@ -8737,57 +8738,56 @@ int dahdi_receive(struct dahdi_span *span) } } else { /* Process a normal channel */ - if (!(span->chans[x]->flags & DAHDI_FLAG_NOSTDTXRX)) - __dahdi_real_receive(span->chans[x]); + if (!(chan->flags & DAHDI_FLAG_NOSTDTXRX)) + __dahdi_real_receive(chan); } - if (span->chans[x]->itimer) { - span->chans[x]->itimer -= DAHDI_CHUNKSIZE; - if (span->chans[x]->itimer <= 0) { - rbs_itimer_expire(span->chans[x]); - } + if (chan->itimer) { + chan->itimer -= DAHDI_CHUNKSIZE; + if (chan->itimer <= 0) + rbs_itimer_expire(chan); } - if (span->chans[x]->ringdebtimer) - span->chans[x]->ringdebtimer--; - if (span->chans[x]->sig & __DAHDI_SIG_FXS) { - if (span->chans[x]->rxhooksig == DAHDI_RXSIG_RING) - span->chans[x]->ringtrailer = DAHDI_RINGTRAILER; - else if (span->chans[x]->ringtrailer) { - span->chans[x]->ringtrailer-= DAHDI_CHUNKSIZE; + if (chan->ringdebtimer) + chan->ringdebtimer--; + if (chan->sig & __DAHDI_SIG_FXS) { + if (chan->rxhooksig == DAHDI_RXSIG_RING) + chan->ringtrailer = DAHDI_RINGTRAILER; + else if (chan->ringtrailer) { + chan->ringtrailer -= DAHDI_CHUNKSIZE; /* See if RING trailer is expired */ - if (!span->chans[x]->ringtrailer && !span->chans[x]->ringdebtimer) - __qevent(span->chans[x],DAHDI_EVENT_RINGOFFHOOK); + if (!chan->ringtrailer && !chan->ringdebtimer) + __qevent(chan, DAHDI_EVENT_RINGOFFHOOK); } } - if (span->chans[x]->pulsetimer) + if (chan->pulsetimer) { - span->chans[x]->pulsetimer--; - if (span->chans[x]->pulsetimer <= 0) + chan->pulsetimer--; + if (chan->pulsetimer <= 0) { - if (span->chans[x]->pulsecount) + if (chan->pulsecount) { - if (span->chans[x]->pulsecount > 12) { + if (chan->pulsecount > 12) { module_printk(KERN_NOTICE, "Got pulse digit %d on %s???\n", - span->chans[x]->pulsecount, - span->chans[x]->name); - } else if (span->chans[x]->pulsecount > 11) { - __qevent(span->chans[x], DAHDI_EVENT_PULSEDIGIT | '#'); - } else if (span->chans[x]->pulsecount > 10) { - __qevent(span->chans[x], DAHDI_EVENT_PULSEDIGIT | '*'); - } else if (span->chans[x]->pulsecount > 9) { - __qevent(span->chans[x], DAHDI_EVENT_PULSEDIGIT | '0'); + chan->pulsecount, + chan->name); + } else if (chan->pulsecount > 11) { + __qevent(chan, DAHDI_EVENT_PULSEDIGIT | '#'); + } else if (chan->pulsecount > 10) { + __qevent(chan, DAHDI_EVENT_PULSEDIGIT | '*'); + } else if (chan->pulsecount > 9) { + __qevent(chan, DAHDI_EVENT_PULSEDIGIT | '0'); } else { - __qevent(span->chans[x], DAHDI_EVENT_PULSEDIGIT | ('0' + - span->chans[x]->pulsecount)); + __qevent(chan, DAHDI_EVENT_PULSEDIGIT | ('0' + + chan->pulsecount)); } - span->chans[x]->pulsecount = 0; + chan->pulsecount = 0; } } } #ifdef BUFFER_DEBUG - span->chans[x]->statcount -= DAHDI_CHUNKSIZE; + chan->statcount -= DAHDI_CHUNKSIZE; #endif - spin_unlock_irqrestore(&span->chans[x]->lock, flags); + spin_unlock_irqrestore(&chan->lock, flags); } }