[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 byt
From: |
Edgar E. Iglesias |
Subject: |
Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes) |
Date: |
Sat, 18 Sep 2010 23:27:10 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Sat, Sep 18, 2010 at 09:43:45PM +0100, Stefan Hajnoczi wrote:
> The OpenIndiana (Solaris) e1000g driver drops frames that are too long
> or too short. It expects to receive frames of at least the Ethernet
> minimum size. ARP requests in particular are small and will be dropped
> if they are not padded appropriately, preventing a Solaris VM from
> becoming visible on the network.
>
> Signed-off-by: Stefan Hajnoczi <address@hidden>
> ---
> hw/e1000.c | 10 ++++++++++
> 1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/hw/e1000.c b/hw/e1000.c
> index 7d7d140..bc983f9 100644
> --- a/hw/e1000.c
> +++ b/hw/e1000.c
> @@ -55,6 +55,7 @@ static int debugflags = DBGBIT(TXERR) | DBGBIT(GENERAL);
>
> #define IOPORT_SIZE 0x40
> #define PNPMMIO_SIZE 0x20000
> +#define MIN_BUF_SIZE 60
>
> /*
> * HW models:
> @@ -635,10 +636,19 @@ e1000_receive(VLANClientState *nc, const uint8_t *buf,
> size_t size)
> uint32_t rdh_start;
> uint16_t vlan_special = 0;
> uint8_t vlan_status = 0, vlan_offset = 0;
> + uint8_t min_buf[MIN_BUF_SIZE];
>
> if (!(s->mac_reg[RCTL] & E1000_RCTL_EN))
> return -1;
>
> + /* Pad to minimum Ethernet frame length */
> + if (size < sizeof(min_buf)) {
> + memcpy(min_buf, buf, size);
> + memset(&min_buf[size], 0, sizeof(min_buf) - size);
> + buf = min_buf;
> + size = sizeof(min_buf);
> + }
> +
Hi,
This doesn't look right. AFAIK, MAC's dont pad on receive.
IMO this kind of padding should somehow be done by the bridge that forwards
packets into the qemu vlan (e.g slirp or the generic tap bridge).
Cheers
- [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Stefan Hajnoczi, 2010/09/18
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes),
Edgar E. Iglesias <=
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Kevin Wolf, 2010/09/20
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Edgar E. Iglesias, 2010/09/20
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Stefan Hajnoczi, 2010/09/20
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Michael S. Tsirkin, 2010/09/20
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Anthony Liguori, 2010/09/20
- Re: [Qemu-devel] [PATCH] e1000: Pad short frames to minimum size (60 bytes), Edgar E. Iglesias, 2010/09/20