summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-01-03 18:27:36 +0000
committerShaun Ruffell <sruffell@digium.com>2011-01-03 18:27:36 +0000
commit7ca9fa95de4a3e657efc03a628fcb4f14956cf60 (patch)
tree560b9ca19150e58e84a9bd65f6ec8940f2fa28b7
parent6153b1fcf7e517d836718a294d6e167666aec824 (diff)
dahdi: Change dahdi_chan.nextslave from index to a pointer.
Signed-off-by: Shaun Ruffell <sruffell@digium.com> Acked-by: Kinsey Moore <kmoore@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9600 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--drivers/dahdi/dahdi-base.c38
-rw-r--r--include/dahdi/kernel.h2
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;y<DAHDI_CHUNKSIZE;y++) {
+ for (y = 0; y < DAHDI_CHUNKSIZE; y++) {
/* Process slaves for this byte too */
- z = x;
- do {
- if (pos==DAHDI_CHUNKSIZE) {
+ for (z = chan; z; z = z->nextslave) {
+ 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;y<DAHDI_CHUNKSIZE;y++) {
/* Put all its slaves, too */
- z = x;
- do {
- data[pos++] = span->chans[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 */