From owner-cvs-src@FreeBSD.ORG Sun Oct 15 23:42:58 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 952F116A47B; Sun, 15 Oct 2006 23:42:58 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 906A443D62; Sun, 15 Oct 2006 23:42:57 +0000 (GMT) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k9FNgvEO002216; Sun, 15 Oct 2006 23:42:57 GMT (envelope-from scottl@repoman.freebsd.org) Received: (from scottl@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k9FNgvMc002214; Sun, 15 Oct 2006 23:42:57 GMT (envelope-from scottl) Message-Id: <200610152342.k9FNgvMc002214@repoman.freebsd.org> From: Scott Long Date: Sun, 15 Oct 2006 23:42:57 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/dev/bce if_bce.c if_bcereg.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Oct 2006 23:42:58 -0000 scottl 2006-10-15 23:42:57 UTC FreeBSD src repository Modified files: sys/dev/bce if_bce.c if_bcereg.h Log: Overhaul the transmit and dma paths: - Use bus_dmamap_load_mbuf_sg() to eliminate the need for the callback and all of the extra bookkeeping associated with it. - Eliminate the bce_dmamap_arg structure and streamline the memory allocation routines to not need it. This does change some of the debugging messages. - Refactor the loop that fills the buffer descriptor so that it can be done with a single set of logic in a single loop instead of two sets of logic. - Eliminate the need to cache and pass descriptor indexes between the start loop and the encap function. - Change the start loop to always check the ifnet sendq for more work. This significantly helps the driver withstand large UDP workloads, though it's still not perfect. I suspect the remaining work lies with handling the OACTIVE flag, and also in possibly streamlining the interrupt handler some. It is, however, nearly on par with the other popular gigabit drivers in terms of stability now. Revision Changes Path 1.14 +121 -203 src/sys/dev/bce/if_bce.c 1.7 +0 -16 src/sys/dev/bce/if_bcereg.h