|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 14, 2004 17:03:55 Переделываю доставшийся в наследство драйвер сетевой карты. Имеет место быть следующая проблема: 1. Пусть сетевая карта установлена на роутере, который разделяет две подсети. 2. Пусть с одного из компьютеров одной подсети я пытаюсь осуществить ping несуществующего хоста другой подсети. 3. По приходу пакета ping на сетевую карту роутера, подключенную к первой подсети, драйвер выкачивает пакет из карты по DMA и уведомляет о его существовании NDIS. 4. В связи с отсутствием точки назначения пакета в ARP-таблице роутера, роутер начинает рассылать во вторую подсеть ARP-запросы. 5. NDIS _БЛОКИРУЕТ_ память, выделенную под пакет и возвращает драйверу статус PENDING. 6. Теперь драйвер _ОБЯЗАН_ завершить обработку данного пакета по завершении обработки пакета драйверами верхнего уровня (ARP) по уведомлению NDIS в функции ReturnPacket() 7. Средняя скорость завершения обработки ПО роутера запроса на несуществующий хост - 2 секунды. Средняя частота прихода пакетов от ping - один в секунду. Память, выделенная под пакет заблокирована NDIS и освобождена до завершения обработки пакета быть не может. ВОПРОС: что необходимо сделать, чтобы избежать переполнения буфера памяти, выделяемого в драйвере под буфера и дескрипторы пакетов. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |