summaryrefslogtreecommitdiff
path: root/drivers/dahdi/voicebus/voicebus.h
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2010-02-10 22:36:03 +0000
committerShaun Ruffell <sruffell@digium.com>2010-02-10 22:36:03 +0000
commit8d01aa4ca33ff7e0ffc44d473ac99e61e195d86a (patch)
tree8813691073bf5c2ccf44a69444a6ad524a10e30d /drivers/dahdi/voicebus/voicebus.h
parent36183ddd5d9980d98c80b0196e10702ac3b21fb1 (diff)
voicebus: Improve hard underrun handling.
When there is a hard underrun, or in other words interrupts are held off for so long that the board completely runs out of transmit descriptors, it was too easy for the driver to be in a 'confused' state about the descriptors. This change has the driver cleanup and reset the descriptor ring in this case so that we're not racing against the interface while we resume normal operation. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8026 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/voicebus/voicebus.h')
-rw-r--r--drivers/dahdi/voicebus/voicebus.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/dahdi/voicebus/voicebus.h b/drivers/dahdi/voicebus/voicebus.h
index a038b91..be713c6 100644
--- a/drivers/dahdi/voicebus/voicebus.h
+++ b/drivers/dahdi/voicebus/voicebus.h
@@ -58,6 +58,7 @@ struct voicebus;
struct voicebus_operations {
void (*handle_receive)(struct voicebus *vb, void *vbb);
void (*handle_transmit)(struct voicebus *vb, void *vbb);
+ void (*handle_error)(struct voicebus *vb);
};
/**
@@ -94,6 +95,7 @@ struct voicebus {
#elif VOICEBUS_DEFERRED == TIMER
struct timer_list timer;
#endif
+ struct work_struct underrun_work;
const struct voicebus_operations *ops;
struct completion stopped_completion;
unsigned long flags;