fsl_etsec: Pad short payloads with zeros
commit64f441d2e53ac6ed8b4ef199e1995529d2012000
authorAndrey Smirnov <andrew.smirnov@gmail.com>
Mon, 28 Nov 2016 18:13:14 +0000 (28 10:13 -0800)
committerJason Wang <jasowang@redhat.com>
Mon, 5 Dec 2016 09:45:14 +0000 (5 17:45 +0800)
tree536c0ec27dd45b9d5a823eac9e2cb874f6a33af7
parent77d54985b85a0cb760330ec2bd92505e0a2a97a9
fsl_etsec: Pad short payloads with zeros

Depending on QEMU network setup it is possible for us to receive a
complete Ethernet packet that is less 64 bytes long. One such example is
when QEMU is configured to use a standalone TAP device (not set to be a
part of any bridge) receives and ARP packet. In cases like that we need
to add more than just 4-bytes of CRC padding and ensure that our payload
is at least 60 bytes long, such that, when combined with CRC padding
bytes the resulting size is at least 802.3 minimum MTU bytes
long (64). Failing to do that results in code in etsec_walk_rx_ring()
setting BD_RX_SH which, in turn, makes corresponding Linux driver of
emulated host to reject buffer as a runt packet

Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
hw/net/fsl_etsec/rings.c