imx_fec: Use ENET_FTRL to determine truncation length
Frame truncation length, TRUNC_FL, is determined by the contents of ENET_FTRL register, so convert the code to use it instead of a hardcoded constant. To avoid the case where TRUNC_FL is greater that ENET_MAX_FRAME_SIZE, increase the value of the latter to its theoretical maximum of 16K. Cc: Peter Maydell <peter.maydell@linaro.org> Cc: Jason Wang <jasowang@redhat.com> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org> Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
7bac20dc51
commit
ff9a7feeab
@ -1052,8 +1052,8 @@ static ssize_t imx_enet_receive(NetClientState *nc, const uint8_t *buf,
|
|||||||
crc_ptr = (uint8_t *) &crc;
|
crc_ptr = (uint8_t *) &crc;
|
||||||
|
|
||||||
/* Huge frames are truncted. */
|
/* Huge frames are truncted. */
|
||||||
if (size > ENET_MAX_FRAME_SIZE) {
|
if (size > s->regs[ENET_FTRL]) {
|
||||||
size = ENET_MAX_FRAME_SIZE;
|
size = s->regs[ENET_FTRL];
|
||||||
flags |= ENET_BD_TR | ENET_BD_LG;
|
flags |= ENET_BD_TR | ENET_BD_LG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,6 @@
|
|||||||
#define ENET_TCCR3 393
|
#define ENET_TCCR3 393
|
||||||
#define ENET_MAX 400
|
#define ENET_MAX 400
|
||||||
|
|
||||||
#define ENET_MAX_FRAME_SIZE 2032
|
|
||||||
|
|
||||||
/* EIR and EIMR */
|
/* EIR and EIMR */
|
||||||
#define ENET_INT_HB (1 << 31)
|
#define ENET_INT_HB (1 << 31)
|
||||||
@ -155,6 +154,8 @@
|
|||||||
#define ENET_RCR_NLC (1 << 30)
|
#define ENET_RCR_NLC (1 << 30)
|
||||||
#define ENET_RCR_GRS (1 << 31)
|
#define ENET_RCR_GRS (1 << 31)
|
||||||
|
|
||||||
|
#define ENET_MAX_FRAME_SIZE (1 << ENET_RCR_MAX_FL_LENGTH)
|
||||||
|
|
||||||
/* TCR */
|
/* TCR */
|
||||||
#define ENET_TCR_GTS (1 << 0)
|
#define ENET_TCR_GTS (1 << 0)
|
||||||
#define ENET_TCR_FDEN (1 << 2)
|
#define ENET_TCR_FDEN (1 << 2)
|
||||||
|
Loading…
Reference in New Issue
Block a user