Date: Fri, 7 Mar 2003 10:00:23 -0800 (PST) From: Gustav Wibling <gustav@vmware.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/44126: lnc network hungup at large traffics on VMware (R esend) Message-ID: <200303071800.h27I0Ngi095765@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/44126; it has been noted by GNATS. From: Gustav Wibling <gustav@vmware.com> To: "'freebsd-gnats-submit@FreeBSD.org'" <freebsd-gnats-submit@FreeBSD.org>, "'tam@math.kobe-u.ac.jp'" <tam@math.kobe-u.ac.jp> Cc: Subject: Re: kern/44126: lnc network hungup at large traffics on VMware (R esend) Date: Fri, 7 Mar 2003 09:52:21 -0800 The reason this happens on VMware is due to a race in the driver. This race is exposed by virtual hardware because things happens more in clusters. The problem was caused by the line outw(sc->rdp, RINT | INEA) at the end of the lnc_rint function. What happens is that from the end of the while loop to the outw writes/acks the RINT in the LANCE status register the receive ring fills up with new data and the RINT written in the status register due to this will be acked without the driver handling the new packets. No new RINT interrupts will be generated because the hardware is unable to get a valid receive dsc. (The ring is full). The guest won't handle the packets because it received no interrupt from the hardware. By removing this line the caller of lnc_rint will do a read and an ack and then handle what it read, instead of just unconditionally acking. This seems like the correct thing to do. This is very unlikely to happen on real hardware because it normally takes time to receive, in this case, 8 packets. On virtual hardware this can be done very fast because it is mainly a memcpy. The next release of VMware Workstation will have a workaround for this. Thanks, Gustav Wibling Member of Tech. Staff VMware, Inc. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303071800.h27I0Ngi095765>