qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Status of user-mode networking for win32


From: Elefterios Stamatogiannakis
Subject: Re: [Qemu-devel] Status of user-mode networking for win32
Date: Mon, 07 Jun 2004 18:00:28 +0300
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7) Gecko/20040514

 Mmmmmm.

 If i understand correctly ne2000 links the guest with the host.

This connection works for me because i can get a dhcp lease from the qemu-slirp throught ne2000.

 I can also ping the dhcp server.

My problem is with the host -> internet connection from what i can understand.

 Qemu doesn't seem to open a "real" socket with the outside world at all.

 Also all the above are using win2k as a host with linux as a guest.

 teris.


Renzo Davoli wrote:

On Mon, Jun 07, 2004 at 05:01:35PM +0300, Elefterios Stamatogiannakis wrote:

The problem is that it doesn't seem to connect to the outside world.

I have seen with a packet sniffer that the packet payload was 16 bits
misaligned.

I have tried the workaround here included as a patch and Win98+vdeqemu pci works.

I am trying to figure out if this is a correct patch or it is the writel/readl call parameter to be wrong. (word sized transfers should be
aligned...)

renzo
---------------
--- hw/ne2000.c.orig    2004-06-07 16:14:28.000000000 +0200
+++ hw/ne2000.c 2004-06-07 16:27:14.000000000 +0200
@@ -401,7 +401,8 @@
static inline void ne2000_mem_writel(NE2000State *s, uint32_t addr, uint32_t val)
 {
-    addr &= ~3; /* XXX: check exact behaviour if not even */
+    /*addr &= ~3; XXX: check exact behaviour if not even */
+    addr &= ~1; /* XXX: check exact behaviour if not even */
if (addr < 32 || (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
         *(uint32_t *)(s->mem + addr) = cpu_to_le32(val);
@@ -431,7 +432,8 @@
static inline uint32_t ne2000_mem_readl(NE2000State *s, uint32_t addr)
 {
-    addr &= ~3; /* XXX: check exact behaviour if not even */
+    /*addr &= ~3;  XXX: check exact behaviour if not even */
+    addr &= ~1; /* XXX: check exact behaviour if not even */
if (addr < 32 || (addr >= NE2000_PMEM_START && addr < NE2000_MEM_SIZE)) {
         return le32_to_cpu(*(uint32_t *)(s->mem + addr));



_______________________________________________
Qemu-devel mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/qemu-devel




reply via email to

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