Всем привет, опять беда. Принимая по ethernet пакеты длиной менее 60 байт невозможно определить их точную длину. В возвращаемом дескрипторе они все минимум 60. Можно конечно узнать длину в поле длины принимаемого пакета, но это уже костыль. Для keep-alive соединения нужно, отлавливать аки с одним байтом.
Код: Выделить всё
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).
Как минимум, попробуйте.
Вот тут обсуждался этот же вопорс и ссылку на флаг, который нужно установить.
