[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 46/60] e1000: Discard oversized packets based on
From: |
Amos Kong |
Subject: |
Re: [Qemu-devel] [PATCH 46/60] e1000: Discard oversized packets based on SBP|LPE |
Date: |
Wed, 27 Nov 2013 19:14:30 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, Feb 04, 2013 at 02:40:56PM +0400, Michael Tokarev wrote:
> From: Michael Contreras <address@hidden>
>
> Discard packets longer than 16384 when !SBP to match the hardware behavior.
>
> Signed-off-by: Michael Contreras <address@hidden>
> Signed-off-by: Stefan Hajnoczi <address@hidden>
> (cherry picked from commit 2c0331f4f7d241995452b99afaf0aab00493334a)
>
> Signed-off-by: Michael Tokarev <address@hidden>
> ---
> hw/e1000.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/hw/e1000.c b/hw/e1000.c
> index e22ba3d..87c798b 100644
> --- a/hw/e1000.c
> +++ b/hw/e1000.c
> @@ -61,6 +61,8 @@ static int debugflags = DBGBIT(TXERR) | DBGBIT(GENERAL);
>
> /* this is the size past which hardware will drop packets when setting LPE=0
> */
> #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
> +/* this is the size past which hardware will drop packets when setting LPE=1
> */
> +#define MAXIMUM_ETHERNET_LPE_SIZE 16384
>
> /*
> * HW models:
> @@ -799,8 +801,9 @@ e1000_receive(VLANClientState *nc, const uint8_t *buf,
> size_t size)
> }
>
> /* Discard oversized packets if !LPE and !SBP. */
> - if (size > MAXIMUM_ETHERNET_VLAN_SIZE
> - && !(s->mac_reg[RCTL] & E1000_RCTL_LPE)
> + if ((size > MAXIMUM_ETHERNET_LPE_SIZE ||
> + (size > MAXIMUM_ETHERNET_VLAN_SIZE
> + && !(s->mac_reg[RCTL] & E1000_RCTL_LPE)))
> && !(s->mac_reg[RCTL] & E1000_RCTL_SBP)) {
> return size;
This change is correct. I have a related question to ask.
I enabled E1000_DEBUG in qemu, and try to change nic MTU to >1500
in Windows 7/ Windows 8 guest. I found RCTL register isn't changed.
It mean E1000_RCTL_LPE bit is 0, so I ping guest from host with >
1500 size packet, the request ICMP packets will be dropped.
It seems a e1000 driver bug of Windows?
Thanks, Amos
> }
> --
> 1.7.10.4
- Re: [Qemu-devel] [PATCH 46/60] e1000: Discard oversized packets based on SBP|LPE,
Amos Kong <=