Uthernet II: fix a bug when TFE buffer size was reduced for 2+ packets.

Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
Andrea Odetti 2021-05-12 11:02:30 +01:00
parent ffa5a35ba8
commit b78f20d915
3 changed files with 5 additions and 4 deletions

View file

@ -47,7 +47,7 @@ void tfeTransmitOnePacket(const BYTE * buffer, const int len)
}
}
bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len)
bool tfeReceiveOnePacket(const uint8_t * mac, const int size, BYTE * buffer, int & len)
{
if (!tfe_enabled)
{
@ -67,6 +67,7 @@ bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len)
int multicast = 0;
int crc_error;
len = size;
const int newframe = tfe_arch_receive(
buffer, /* where to store a frame */
&len, /* length of received frame */

View file

@ -1,4 +1,4 @@
#pragma once
bool tfeReceiveOnePacket(const uint8_t * mac, BYTE * buffer, int & len);
bool tfeReceiveOnePacket(const uint8_t * mac, const int size, BYTE * buffer, int & len);
void tfeTransmitOnePacket(const BYTE * buffer, const int len);

View file

@ -375,8 +375,8 @@ namespace
#else
{
BYTE buffer[MAX_RXLENGTH];
int len = sizeof(buffer);
if (tfeReceiveOnePacket(memory.data() + SHAR0, buffer, len))
int len;
if (tfeReceiveOnePacket(memory.data() + SHAR0, sizeof(buffer), buffer, len))
{
if (isThereRoomFor(i, len, sizeof(uint16_t)))
{