Patchwork Intel 8255x/eepro100 compatibility patches

login
register
mail settings
Submitter Reimar Döffinger
Date Aug. 11, 2009, 6:27 p.m.
Message ID <20090811182744.GA7045@1und1.de>
Download mbox | patch
Permalink /patch/31156/
State Superseded
Headers show

Comments

Reimar Döffinger - Aug. 11, 2009, 6:27 p.m.
On Sun, Aug 09, 2009 at 11:14:33PM +0200, Reimar Döffinger wrote:
> Attached is a series of patches that makes things work with at least
> some version of that (sorry, I only tried some binary I found on the
> net, didn't compile from source).
> In addition, I also used the documentation from here:
> http://www.intel.com/design/network/manuals/8255X_OpenSDM.htm

Another change, currently if the hardware runs out of receive buffers qemu
crashes with an assert.
Simply setting the RU state to "no resources" seems to work (though it
is hard to provoke the situation and thus hard to test well), at least
it can't be any worse than crashing due to an assert (IMO)...
From eb3dcfa9d65df83c207a74970953cad95d2da1ad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= <reimar@hokum.(none)>
Date: Tue, 11 Aug 2009 17:19:01 +0200
Subject: [PATCH] Set the RU state to ru_no_resources instead of asserting when we used up
 the last receive buffer.
 This should not usually happen with good drivers, but it can happen with
 the OS X drivers at least.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
---
 hw/eepro100.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Anthony Liguori - Aug. 11, 2009, 8:26 p.m.
Reimar Döffinger wrote:
> On Sun, Aug 09, 2009 at 11:14:33PM +0200, Reimar Döffinger wrote:
>   
>> Attached is a series of patches that makes things work with at least
>> some version of that (sorry, I only tried some binary I found on the
>> net, didn't compile from source).
>> In addition, I also used the documentation from here:
>> http://www.intel.com/design/network/manuals/8255X_OpenSDM.htm
>>     
>
> Another change, currently if the hardware runs out of receive buffers qemu
> crashes with an assert.
> Simply setting the RU state to "no resources" seems to work (though it
> is hard to provoke the situation and thus hard to test well), at least
> it can't be any worse than crashing due to an assert (IMO)...
>   
Please send this as a series of patches with each patch in an email.

Regards,

Anthony Liguori
Reimar Döffinger - Aug. 11, 2009, 9:13 p.m.
Hello,

On Tue, Aug 11, 2009 at 03:26:25PM -0500, Anthony Liguori wrote:
> Please send this as a series of patches with each patch in an email.

Ok, resending as a series of patches, hopefully this is the proper format now.
Repeating myself a bit from the original mail:
I have been playing around a bit with the OS X/darwin network drivers for these
cards and noticed that they seem to differ quite a bit from the Linux ones.
If you're interested, the source of the core part is here:
http://www.opensource.apple.com/source/AppleIntel8255x/AppleIntel8255x-19/i82557Private.cpp
Attached is a series of patches that makes things work with at least
some version of that (sorry, I only tried some binary I found on the
net, didn't compile from source).
In addition, I also used the documentation from here:
http://www.intel.com/design/network/manuals/8255X_OpenSDM.htm

Hope this is interesting to someone and maybe we can even get these
merged...

Thanks,
Reimar Döffinger
Reimar Döffinger - Aug. 15, 2009, 12:32 p.m.
On Tue, Aug 11, 2009 at 11:13:51PM +0200, Reimar Döffinger wrote:
> On Tue, Aug 11, 2009 at 03:26:25PM -0500, Anthony Liguori wrote:
> > Please send this as a series of patches with each patch in an email.
> 
> Ok, resending as a series of patches, hopefully this is the proper format now.
> Repeating myself a bit from the original mail:
> I have been playing around a bit with the OS X/darwin network drivers for these
> cards and noticed that they seem to differ quite a bit from the Linux ones.
> If you're interested, the source of the core part is here:
> http://www.opensource.apple.com/source/AppleIntel8255x/AppleIntel8255x-19/i82557Private.cpp
> Attached is a series of patches that makes things work with at least
> some version of that (sorry, I only tried some binary I found on the
> net, didn't compile from source).
> In addition, I also used the documentation from here:
> http://www.intel.com/design/network/manuals/8255X_OpenSDM.htm
> 
> Hope this is interesting to someone and maybe we can even get these
> merged...

I know it hasn't been that long, but still: ping?
Btw. I have tested my patched version with OSX (10.5), OpenSolaris (0906), Ubuntu (9.10
alpha) and FreeBSD 7.2 (admittedly only x86/x86_64) and found no issues.

Patch

diff --git a/hw/eepro100.c b/hw/eepro100.c
index d2c18cc..8b343c1 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1558,7 +1558,7 @@  static ssize_t nic_receive(VLANClientState *vc, const uint8_t * buf, size_t size
     s->ru_offset = le32_to_cpu(rx.link);
     if (rfd_command & 0x8000) {
         /* EL bit is set, so this was the last frame. */
-        assert(0);
+        set_ru_state(s, ru_no_resources);
     }
     if (rfd_command & 0x4000) {
         /* S bit is set. */