Страница 1 из 1

короткие пакеты stm32

Добавлено: Пн авг 05, 2024 13:16:44
danone78
Всем привет, опять беда. Принимая по ethernet пакеты длиной менее 60 байт невозможно определить их точную длину. В возвращаемом дескрипторе они все минимум 60. Можно конечно узнать длину в поле длины принимаемого пакета, но это уже костыль. Для keep-alive соединения нужно, отлавливать аки с одним байтом.

Re: короткие пакеты stm32

Добавлено: Пн авг 05, 2024 14:14:20
AlanDrakes

Код: Выделить всё

ETH->DMAOMR |= ETH_DMAOMR_FUGF;
Bit 6 FUGF: Forward undersized good frames
When this bit is set, the Rx FIFO forwards undersized frames (frames with no error and length less than 64 bytes) including pad-bytes and CRC). When this bit is cleared, the Rx FIFO drops all frames of less than 64 bytes, unless such a frame has already been transferred due to lower value of receive threshold (e.g., RTC = 01).
Нужно установить бит 6 регистра ETH DMA operation mode register, чтобы разрешить складывать в буфер пакеты длиной менее 64 байт.
Как минимум, попробуйте.

Вот тут обсуждался этот же вопорс и ссылку на флаг, который нужно установить.

Re: короткие пакеты stm32

Добавлено: Ср авг 07, 2024 08:21:12
danone78
Пробовал эту опцию, никакого эффекта. Но я тут прикинул, что если длина пакета в IP заголовке ошибочна, то контрольная сумма тоже, так что можно считать ее вполне себе валидной.