Цитата(Hz! @ Oct 3 2008, 11:39)

Тогда план такой: в стеке резервирую пулы для приема в количестве больше, чем RxDescriptorNumber. При инициализации EMAC выделяю необходимое количество pbuf-ов (== RxDescriptorNumber), настраиваю дескрипторы и жду прихода пакета. Входящий пакет записываю в буферы, потом их склеиваю в один через указатели в структуре pbuf. Выделяю новые буферы и прописываю их адреса в дескрипторах, а принятый пакет передаю в стек. Когда он обработан и становится ненужным, он освобождается стеком, таким образом, восполняется количество свободных pool-ов.
Покритикуйте, пожалуйста, такой подход.
Я, собственно, так и делал, когда писал драйвер для Freescale MCF52233. Прикладываю его к этому посту. Отлажено и работает. Может быть, будет интересно взглянуть.