короткие пакеты stm32
короткие пакеты stm32
Всем привет, опять беда. Принимая по ethernet пакеты длиной менее 60 байт невозможно определить их точную длину. В возвращаемом дескрипторе они все минимум 60. Можно конечно узнать длину в поле длины принимаемого пакета, но это уже костыль. Для keep-alive соединения нужно, отлавливать аки с одним байтом.
- Реклама
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: короткие пакеты stm32
Код: Выделить всё
ETH->DMAOMR |= ETH_DMAOMR_FUGF;Нужно установить бит 6 регистра ETH DMA operation mode register, чтобы разрешить складывать в буфер пакеты длиной менее 64 байт.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).
Как минимум, попробуйте.
Вот тут обсуждался этот же вопорс и ссылку на флаг, который нужно установить.
Re: короткие пакеты stm32
Пробовал эту опцию, никакого эффекта. Но я тут прикинул, что если длина пакета в IP заголовке ошибочна, то контрольная сумма тоже, так что можно считать ее вполне себе валидной.
