From owner-cvs-src-old@FreeBSD.ORG Wed Nov 4 18:20:47 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 777D41065672 for ; Wed, 4 Nov 2009 18:20:47 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 652238FC1D for ; Wed, 4 Nov 2009 18:20:47 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id nA4IKlp8071790 for ; Wed, 4 Nov 2009 18:20:47 GMT (envelope-from yongari@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id nA4IKl8l071789 for cvs-src-old@freebsd.org; Wed, 4 Nov 2009 18:20:47 GMT (envelope-from yongari@repoman.freebsd.org) Message-Id: <200911041820.nA4IKl8l071789@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to yongari@repoman.freebsd.org using -f From: Pyun YongHyeon Date: Wed, 4 Nov 2009 18:20:31 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: RELENG_7 Subject: cvs commit: src/sys/dev/fxp if_fxp.c if_fxpvar.h X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Nov 2009 18:20:47 -0000 yongari 2009-11-04 18:20:31 UTC FreeBSD src repository Modified files: (Branch: RELENG_7) sys/dev/fxp if_fxp.c if_fxpvar.h Log: SVN rev 198917 on 2009-11-04 18:20:31Z by yongari MFC r194573: Overhaul fxp(4) multicast filter programming. fxp(4) hardwares do not allow multicast filter programming when controller is busy to send/receive frames. So it used to mark need_mcsetup bit and defer multicast filter programming until controller becomes idle state. To detect when the controller is idle fxp(4) relied on Tx completion interrupt with NOP command and fxp_start_body and fxp_intr_body had to see whether pending multicast filter programming was requested. This resulted in very complex logic and sometimes it did not work as expected. Since the controller should be in idle state before any multicast filter modifications I changed it to reinitialize the controller whenever multicast filter programming is required. This is the same way what OpenBSD and NetBSD does. Also I added IFF_DRV_RUNNING check in ioctl handler so controller would be reinitialized only if it is absolutely needed. With this change I guess we can remove fxp(4) DELAY hack in ifioctl for IPv6 case. Revision Changes Path 1.266.2.21 +37 -132 src/sys/dev/fxp/if_fxp.c 1.40.2.8 +1 -2 src/sys/dev/fxp/if_fxpvar.h