qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Make SLIRP Ethernet packets size to 64 bytes mi


From: Fabien Chouteau
Subject: Re: [Qemu-devel] [PATCH] Make SLIRP Ethernet packets size to 64 bytes minimuma
Date: Tue, 28 Jun 2011 11:08:37 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Mnenhy/0.8.3 Thunderbird/3.1.10

On 28/06/2011 10:34, Stefan Hajnoczi wrote:
> On Mon, Jun 27, 2011 at 5:12 PM, Fabien Chouteau <address@hidden> wrote:
>> On 27/06/2011 17:39, Stefan Hajnoczi wrote:
>>> On Mon, Jun 27, 2011 at 3:23 PM, Fabien Chouteau <address@hidden> wrote:
>>>> On 27/06/2011 15:50, Stefan Hajnoczi wrote:
>>>>> On Mon, Jun 27, 2011 at 1:41 PM, Fabien Chouteau <address@hidden> wrote:
>>>>>>
>>>>>> Signed-off-by: Fabien Chouteau <address@hidden>
>>>>>> ---
>>>>>>  slirp/slirp.c |    4 ++--
>>>>>>  1 files changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> Any particular bug that this fixes?
>>>>>
>>>>> There have been 64 byte minimum padding patches to several emulated
>>>>> NICs.  There has also been discussion about where the best place to do
>>>>> this is.  Why is this patch necessary?
>>>>>
>>>>
>>>> This patch is necessary because some NICs are configured to drop short 
>>>> frames,
>>>> therefore the OS will not receive some of the packets generated by Qemu.
>>>>
>>>> There's a first patch to fix this issue:
>>>> http://git.savannah.gnu.org/cgit/qemu.git/commit/?id=dbf3c4b4baceb91eb64d09f787cbe92d65188813
>>>>
>>>> My patch fixes two other sources of short frames.
>>>
>>> Thanks for the explanation.  I stepped back from the discussion on
>>> where the right place to fix this is last time around.  Now I'm
>>> wondering why do anything in slirp when the other sources (tap, ...)
>>> aren't padding to 64 bytes?
>>
>> I think that packets generated by Qemu must follow RFC. For other sources, 
>> qemu
>> should keep original size when possible and put padding otherwise.
>
> slirp interfaces to net.h which does not emulate Ethernet.  For
> example, it doesn't carry the Frame Check Sequence (FCS) as per the
> Ethernet standard. NICs that want to report FCS to the guest
> calculate it themselves, just like they do with 64-byte padding.  So I
> find it weird to say we should honor Ethernet when the transport we
> are using is not Ethernet.

In this case it's always Ethernet frames, look at the two patched lines,
there's an Ethernet header:

uint8_t arp_req[max(ETH_HLEN + sizeof(struct arphdr), 64)];

slirp_output(slirp->opaque, buf, max(ip_data_len + ETH_HLEN, 64));

>
> This patch doesn't hurt but we'd be just as well off without it.
>
> Did you do this to fix a bug?  If so, then something else in QEMU
> needs to be fixed, not slirp.

When Qemu generates bad Ethernet frames, I think it's a bug.

And again, this is the extension of a previous patch. If this patch is not
valid then we should revert the first, it's also a question of consistency.

-- 
Fabien Chouteau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]