|
| From: | Philippe Mathieu-Daudé |
| Subject: | Re: [Qemu-devel] [PATCH 05/17] imx_fec: Use ENET_FTRL to determine truncation length |
| Date: | Fri, 29 Sep 2017 21:17:26 -0300 |
| User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
Hi Andrey, On 09/18/2017 04:50 PM, Andrey Smirnov wrote:
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. Cc: Peter Maydell <address@hidden> Cc: Jason Wang <address@hidden> Cc: address@hidden Cc: address@hidden Cc: address@hidden Signed-off-by: Andrey Smirnov <address@hidden> --- hw/net/imx_fec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 767402909d..989c11be5f 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -1050,8 +1050,8 @@ static ssize_t imx_enet_receive(NetClientState *nc, const uint8_t *buf, size += 4;/* Huge frames are truncted. */- if (size > ENET_MAX_FRAME_SIZE) { - size = ENET_MAX_FRAME_SIZE; + if (size > s->regs[ENET_FTRL]) { + size = s->regs[ENET_FTRL]; > flags |= ENET_BD_TR | ENET_BD_LG; }
for this to be ok you need to update imx_enet_write(), such:
case ENET_FTRL:
- s->regs[index] = value & 0x00003fff;
+ value &= 0x00003fff;
+ if (value > ENET_MAX_FRAME_SIZE) {
+ warn_report("%s: guest requested bigger "
+ "frame size than QEMU supports "
+ "(%u > %u)", value,
+ ENET_MAX_FRAME_SIZE);
+ value = ENET_MAX_FRAME_SIZE;
+ }
+ s->regs[index] = value;
break;
Regards,
Phil.
| [Prev in Thread] | Current Thread | [Next in Thread] |