--- dahdi-linux-complete-2.2.0-rc4+2.2.0-rc2/linux/drivers/dahdi/dahdi-base.c 2009-05-01 23:43:18.000000000 +0700 +++ dahdi-linux-complete/linux/drivers/dahdi/dahdi-base.c 2009-06-02 11:21:49.192144086 +0700 @@ -2129,6 +2138,15 @@ } chan->writen[res] = amnt; } + if (chan->ec_state && (ECHO_MODE_IDLE != chan->ec_state->status.mode) && + chan->ec_state->ops->echocan_hpf_tx) { + for (x=0; x < chan->writen[res]; ++x) { + short tx; + tx = DAHDI_XLAW(chan->writebuf[res][x], chan); + chan->ec_state->ops->echocan_hpf_tx(chan->ec_state, &tx, 1); + chan->writebuf[res][x] = DAHDI_LIN2X((int) tx, chan); + } + } chan->writeidx[res] = 0; if (chan->flags & DAHDI_FLAG_FCS) calc_fcs(chan, res);