From 8053657761e0193c6984b3dcfd5f1e7cfd44dde6 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Mon, 3 Jan 2011 18:27:36 +0000 Subject: [PATCH] dahdi: Change dahdi_chan.nextslave from index to a pointer. Signed-off-by: Shaun Ruffell Acked-by: Kinsey Moore git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9600 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-base.c | 38 +++++++++++++++++++------------------- include/dahdi/kernel.h | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 5eeb2a5..1e0e341 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -4258,11 +4258,11 @@ static void recalc_slaves(struct dahdi_chan *chan) module_printk(KERN_NOTICE, "Channel %s, slave to %s, last is %s, its next will be %d\n", chan->span->chans[x]->name, chan->name, last->name, x); #endif - last->nextslave = x; - last = chan->span->chans[x]; + last->nextslave = chan->span->chans[x]; + last = last->nextslave; } /* Terminate list */ - last->nextslave = 0; + last->nextslave = NULL; #ifdef CONFIG_DAHDI_DEBUG module_printk(KERN_NOTICE, "Done Recalculating slaves on %s (last is %s)\n", chan->name, last->name); #endif @@ -4345,7 +4345,7 @@ static int dahdi_ioctl_chanconfig(struct file *file, unsigned long data) /* Clear the master channel */ chan->master = chan; - chan->nextslave = 0; + chan->nextslave = NULL; /* Unlink this channel from the master's channel list */ recalc_slaves(oldmaster); } @@ -8538,8 +8538,8 @@ static inline void __dahdi_real_receive(struct dahdi_chan *chan) int dahdi_transmit(struct dahdi_span *span) { - int x,y,z; unsigned long flags; + unsigned int x; local_irq_save(flags); @@ -8561,20 +8561,20 @@ int dahdi_transmit(struct dahdi_span *span) } else { if (chan->nextslave) { u_char data[DAHDI_CHUNKSIZE]; - int pos=DAHDI_CHUNKSIZE; + int pos = DAHDI_CHUNKSIZE; + int y; + struct dahdi_chan *z; /* Process master/slaves one way */ - for (y=0;ynextslave) { + if (pos == DAHDI_CHUNKSIZE) { /* Get next chunk */ __dahdi_transmit_chunk(chan, data); pos = 0; } - span->chans[z]->writechunk[y] = data[pos++]; - z = span->chans[z]->nextslave; - } while(z); + z->writechunk[y] = data[pos++]; + } } } else { /* Process independents elsewise */ @@ -8839,8 +8839,8 @@ static void coretimer_cleanup(void) int dahdi_receive(struct dahdi_span *span) { - int x,y,z; unsigned long flags; + unsigned int x; #ifdef CONFIG_DAHDI_WATCHDOG span->watchcounter--; @@ -8855,18 +8855,18 @@ int dahdi_receive(struct dahdi_span *span) /* Must process each slave at the same time */ u_char data[DAHDI_CHUNKSIZE]; int pos = 0; + int y; + struct dahdi_chan *z; for (y=0;ychans[z]->readchunk[y]; + for (z = chan; z; z = z->nextslave) { + data[pos++] = z->readchunk[y]; if (pos == DAHDI_CHUNKSIZE) { if (!(chan->flags & DAHDI_FLAG_NOSTDTXRX)) __dahdi_receive_chunk(chan, data); pos = 0; } - z=span->chans[z]->nextslave; - } while(z); + } } } else { /* Process a normal channel */ diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index 9960161..3e8f274 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -424,7 +424,7 @@ struct dahdi_chan { struct dahdi_chan *master; /*!< Our Master channel (could be us) */ /*! \brief Next slave (if appropriate) */ - int nextslave; + struct dahdi_chan *nextslave; u_char *writechunk; /*!< Actual place to write to */ u_char swritechunk[DAHDI_MAX_CHUNKSIZE]; /*!< Buffer to be written */