Цитата(athlon64 @ Jun 1 2012, 10:12)

Попробуйте примеры с сайта ST.
Они у меня работают без вопросов
Да в общем-то большая часть кода с этих примеров и используется. Хотелось бы не просто запустить, а понять и разобраться где накосячил.
По поводу отключения аппаратного подсчета сумм имеются такие наблюдения:
При полном отключении и включении подсчета програмно (в стэке), естественно все работает нормально.
При аппаратном вычислении ситуация такая:
Код
Режим ICMP TCP
ETH_DMATxDesc_ChecksumTCPUDPICMPFull - +
ETH_DMATxDesc_ChecksumTCPUDPICMPSegment - +
ETH_DMATxDesc_ChecksumIPV4Header + -
Ерунда какая-то

Цитата(Artem @ Jun 1 2012, 12:53)

А какая версия стека? Была такая проблема когда переходили на версию 1.4
о_О, да стэк именно 1.4.0. Как решили вопрос?
upd:
Интересно девки пляшут... Со стеком 1.3.2 действительно все нормально работает. Вроде проблема больше на аппаратную смахивает, а оказалось дело в стеке...кто-нибудь может пояснить в чем дело?
Сравнивая обработку ICMP пакетов в core/ipv4/icmp.c заметил, что в 1.3.2 есть явное обнуление контрольной суммы в заголовке ICMP при ответе, а в 1.4.0 соответственно нету. Неужели в этом дело? Хотя нигде не встречал упоминаний, что для аппаратного подсчета там должны быть нули. Или плохо искал?
Сообщение отредактировал Bass - Jun 1 2012, 07:00