From owner-freebsd-net Thu Jun 20 9: 9:55 2002 Delivered-To: freebsd-net@freebsd.org Received: from wall.polstra.com (wall-gw.polstra.com [206.213.73.130]) by hub.freebsd.org (Postfix) with ESMTP id C931437B406 for ; Thu, 20 Jun 2002 09:09:49 -0700 (PDT) Received: from vashon.polstra.com (vashon.polstra.com [206.213.73.13]) by wall.polstra.com (8.11.3/8.11.3) with ESMTP id g5KG9kf96910; Thu, 20 Jun 2002 09:09:46 -0700 (PDT) (envelope-from jdp@wall.polstra.com) Received: (from jdp@localhost) by vashon.polstra.com (8.11.6/8.11.0) id g5KG9kS22944; Thu, 20 Jun 2002 09:09:46 -0700 (PDT) (envelope-from jdp) Date: Thu, 20 Jun 2002 09:09:46 -0700 (PDT) Message-Id: <200206201609.g5KG9kS22944@vashon.polstra.com> To: net@freebsd.org From: John Polstra Cc: paleph@pacbell.net Subject: Re: bge driver issue In-Reply-To: <200206182206.g5IM6P003388@pacbell.net> References: <200206182206.g5IM6P003388@pacbell.net> Organization: Polstra & Co., Seattle, WA Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org In article <200206182206.g5IM6P003388@pacbell.net>, wrote: > We have a Dell poweredge 2650 (successor to 2550). > > We also saw the same problem with 4.5. I tried the current bge driver from 4.6 > without success. The problem seems to be a size problem. When we ftp a small > file, things work fine. However, when we try a 18 Megabyte file, the ftp > hands and we see the problem descriped below. The linux system that came > with the hardware (from dell) worked fine. On the 2650 or any other x86 PCI-X system, please try the following simple experiment. Edit "src/sys/dev/bge/if_bgereg.h". Find this line: #define ETHER_ALIGN 2 Change the "2" to "0". Build and install a new kernel. See whether it solves the problem. Here is the reasoning behind the experiment. The bge driver sets things up so that the NIC DMAs received packets into mbuf clusters starting ETHER_ALIGN bytes from the beginning of the buffer. That is done so the payload after the 14- or 18-byte Ethernet header will be aligned in memory at a 4-byte boundary. The Linux driver from 3Com for the 3c996B-T does the same thing. However, on PCI-X busses only, that driver disables the 2-byte offsetting and stores received packets at the very beginning of the buffer in memory. It is reasonable to assume that they went to all that trouble for a reason -- for example, a chip bug. This change will impact performance on the x86 architecture, and it will flat-out break Alphas and most other architectures. The actual fix would have to be more intelligent, but this is just an experiment. Please report back after you have tried this change. I know two people who have reported that it solved the problems they were having with BCM5701 chips in PCI-X systems. John -- John Polstra John D. Polstra & Co., Inc. Seattle, Washington USA "Disappointment is a good sign of basic intelligence." -- Chögyam Trungpa To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message