From owner-freebsd-hackers Thu Mar 18 19:50:34 1999 Delivered-To: freebsd-hackers@freebsd.org Received: from skynet.ctr.columbia.edu (skynet.ctr.columbia.edu [128.59.64.70]) by hub.freebsd.org (Postfix) with SMTP id EDBE8150A3 for ; Thu, 18 Mar 1999 19:50:26 -0800 (PST) (envelope-from wpaul@skynet.ctr.columbia.edu) Received: (from wpaul@localhost) by skynet.ctr.columbia.edu (8.6.12/8.6.9) id WAA02769 for hackers@freebsd.org; Thu, 18 Mar 1999 22:56:53 -0500 From: Bill Paul Message-Id: <199903190356.WAA02769@skynet.ctr.columbia.edu> Subject: Gigabit ethernet revisited To: hackers@freebsd.org Date: Thu, 18 Mar 1999 22:56:52 -0500 (EST) X-Mailer: ELM [version 2.4 PL24] Content-Type: text Content-Length: 2436 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Well, I'm still trying to squeeze the best possible performance out of the Tigon 2, but I've run into a bottleneck that I can't seem to sort out. First of all, transmission speed seems just fine: with jumbo frames enabled, I can blast 8K UDP packets at 840Mbps. (With the normal 1500byte MTU, I can get around 630Mbps. This is all without checksum offloading.) The problem is on the receive side. When I send all these UDP packets, the receiving host drops about 30% of them. Now, I know what you're going to say: UDP is unreliable, blah blah. But this is going through a single fiber patch from one host to another, so there's really nowhere for frames to get lost, assuming nice fast transfers between the NIC and the host. What seems to be happening is that while PCI read performance (transfering from host to NIC) is very good, PCI write performance (transfering from NIC to host) sucks. At the very least, it's about half what I think it should be. The nic stats counters show quite a few nicDmaWriteRingFull and nicNoMoreWrDMADescriptors errors, which means that the NIC is receiving the frames but the bus isn't transfering them to the host fast enough. The machines I'm using now are Dell Precision 410 workstations, each with one 450Mhz Pentium II CPU, 128MB of RAM and Intel 82443BX PCI chipsets. The manual says that there are certain things you have to do to insure that PCI Write and Invalidate is turned on, which I think I'm doing correctly. The 'write and invalidate' bit seems to be set in the PCI command register. I don't have a PCI bus analyzer so I'm sort of in the dark. I don't think I've done anything to horribly pessimize the receive handling code. I'm starting to run out of things to try. The latest driver revision is at http://www.freebsd.org/~wpaul/Alteon/3.0/tigon.tar.gz. The manuals for the Tigon chip are at http://www.alteon.com/support/openkits. -Bill -- ============================================================================= -Bill Paul (212) 854-6020 | System Manager, Master of Unix-Fu Work: wpaul@ctr.columbia.edu | Center for Telecommunications Research Home: wpaul@skynet.ctr.columbia.edu | Columbia University, New York City ============================================================================= "It is not I who am crazy; it is I who am mad!" - Ren Hoek, "Space Madness" ============================================================================= To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message