diff options
Diffstat (limited to 'drivers/dahdi/dahdi-base.c')
-rw-r--r-- | drivers/dahdi/dahdi-base.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 2fcb5ec..6134192 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -2330,6 +2330,21 @@ static ssize_t dahdi_chan_write(struct file *file, const char __user *usrbuf, } chan->writen[res] = amnt; } +#ifdef CONFIG_DAHDI_ECHOCAN_PROCESS_TX + if ((chan->ec_state) && + (ECHO_MODE_ACTIVE == chan->ec_state->status.mode) && + (chan->ec_state->ops->echocan_process_tx)) { + struct ec_state *const ec_state = chan->ec_state; + for (x = 0; x < chan->writen[res]; ++x) { + short tx; + tx = DAHDI_XLAW(chan->writebuf[res][x], chan); + ec_state->ops->echocan_process_tx(ec_state, + &tx, 1); + chan->writebuf[res][x] = DAHDI_LIN2X((int) tx, + chan); + } + } +#endif chan->writeidx[res] = 0; if (chan->flags & DAHDI_FLAG_FCS) calc_fcs(chan, res); |