From: Marcel Block <marcelblock@googlemail.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] ne2000 bug? buffer full/empty
Date: Tue, 27 Mar 2007 08:58:44 +0200 [thread overview]
Message-ID: <4608C0A4.5060407@gmail.com> (raw)
Hi qemu-devers,
this is my first post here, so please be kind :-)
i believe i found a bug in qemu's ne2000 code. i'm currently working on
a ne2000 driver for my little hobby-os and i'm having some troubles
getting it to receive any packets when running on qemu. but it works
fine on bochs and on _real_ ne2000-hardware (rtl8029-pci in my case).
i believe the case "current page register == boundary register" should
be interpreted as 'buffer empty' instead of 'buffer full'. this was
changed last year or so by dr. han zhu, i tried to send him a email but
it looks like the email-address he used back then is no longer available.
the current code looks like this: (hw/ne2000.c):
static int ne2000_buffer_full(NE2000State *s)
{
int avail, index, boundary;
index = s->curpag << 8;
boundary = s->boundary << 8;
if (index <= boundary)
avail = boundary - index;
else
avail = (s->stop - s->start) - (index - boundary);
if (avail < (MAX_ETH_FRAME_SIZE + 4))
return 1;
return 0;
}
that way qemu thinks the buffer is full if index==boundary. if i change
the "if(index <= boundary)" back to "if(index < boundary)" my driver
appears to work fine.
all the specs i read so far tend to initialize those two registers to
the same value. so it appears logical that index==boundary should be
interpreted as 'buffer empty'.
i'm waiting for your feedback :-)
best regards,
marcel block
next reply other threads:[~2007-03-27 7:01 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-27 6:58 Marcel Block [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-04-02 1:21 [Qemu-devel] ne2000 bug? buffer full/empty Marcel Block
2007-03-26 18:05 [Qemu-devel] Ne2000 bug?, " Marcel Block
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4608C0A4.5060407@gmail.com \
--to=marcelblock@googlemail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.