DDK работает именно так, как написано, т.е. IRQ_STORM именно когда более 1000 циклов боработки прерываний без выхода из обработчика.
Прерывание будет на каждый запрос приёма-передачи к DDK, плюс еще 16 от контроллера интерфейса E1, плюс по максимум одному на каждую ошибку...
Вызов zaptel-кода сейчас делается непосредственно из callback-функций DDK, которые вызываются из обработчика прерываний. И это крайне неправильно.
Получается что вся работа zaptel-кода "вклинивается" в обработчик IRQ, и если там не очень быстро (а оно так и есть), то за время обработки очередной порции данных происходит еще один приём (или передача). В итоге все как-бы зацикливается в обработчике IRQ...