А>А может переделаная strstr под работу в драйвере быстрее заработает?
Зачем переделывать? Базовые С функции и так реализованы в ядре и более менее быстро.
А>Или вобще идея фильтрации по сигнатурам по другому реализуется?
Честно говоря, не очень понятно откуда взялись ТАКИЕ тормоза? На 100МБ сети при полной загрузке пакеты приходят примерно 1 на 100мкс. Без фильтрации это нагрузка на нормальный процессор врядли превысит 10% ( если трафик не злонамеренный — хитрая фрагментация может хорошо повысить нагрузку

). Таким образом, можно считать, что у Вас на обработку пакета есть не менее 10 мкс ( при этом не будет существенной нагрузки на процессор ) — IMHO, этого должно хватить на поиск сигнатуры в буфере длиной около 1КБ любым способом

. Может, у Вас просто отладочная версия драйвера? Попробуйте собрать его с оптимизацией по скорости, я думаю тормоза значительно уменьшаться. Также, стоит убрать копирование памяти — это съэкономит инструкций 200

.
IMHO сигнатурный анализ сетевого пакета не сводится к поиску определенной последовательности в нем, на практике все может быть гораздо быстрее ( например, поиск сигнатуры по конкретному смещению ).