summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-02-25 17:34:02 +0000
committerShaun Ruffell <sruffell@digium.com>2010-02-25 17:34:02 +0000
commitd646ea33ece2f126a2cb6bcbf901b5c8bec03e20 (patch)
treefd130b075d47753c0c9a8f51bbe405174f9f1f8b
parent36b4f0072fd8f20a7b3f46f917b7d5af86fceb7b (diff)
wctdm24xxp: Only use the first three EFRAMES for module commands.
On a 2.6.32.7 debug kernel with a TDM2400, this can save up to 30ms every second of processing time without any appreciable impact on runtime performance since most of the commands to the modules during normal operation are reads, and therefore only one would be in each SFRAME anyway. The impact of this change is less for TDM410 and TDM800 since they already limit the number of modules that they look for queued commands for. There is still more room for optimizing module command handling. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8096 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--drivers/dahdi/wctdm24xxp/base.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/dahdi/wctdm24xxp/base.c b/drivers/dahdi/wctdm24xxp/base.c
index 9b16d80..51c807a 100644
--- a/drivers/dahdi/wctdm24xxp/base.c
+++ b/drivers/dahdi/wctdm24xxp/base.c
@@ -865,7 +865,8 @@ static inline void wctdm_transmitprep(struct wctdm *wc, unsigned char *writechun
if (y < wc->desc->ports)
writechunk[y] = wc->chans[y]->writechunk[x];
}
- cmd_dequeue(wc, writechunk, y, x);
+ if (x < 3)
+ cmd_dequeue(wc, writechunk, y, x);
}
if (!x)
wc->blinktimer++;
@@ -1102,7 +1103,8 @@ static inline void wctdm_receiveprep(struct wctdm *wc, unsigned char *readchunk)
for (y=0;y < wc->cards;y++) {
if (likely(wc->initialized) && (y < wc->desc->ports))
wc->chans[y]->readchunk[x] = readchunk[y];
- cmd_decipher(wc, readchunk, y);
+ if (x < 3)
+ cmd_decipher(wc, readchunk, y);
}
if (wc->vpm100) {
for (y=NUM_CARDS;y < NUM_CARDS + NUM_EC; y++)