From owner-svn-src-all@FreeBSD.ORG Tue Dec 2 02:12:34 2008 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0011106567D; Tue, 2 Dec 2008 02:12:34 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D8B068FC16; Tue, 2 Dec 2008 02:12:34 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mB22CYql045212; Tue, 2 Dec 2008 02:12:34 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mB22CY5e045211; Tue, 2 Dec 2008 02:12:34 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <200812020212.mB22CY5e045211@svn.freebsd.org> From: Pyun YongHyeon Date: Tue, 2 Dec 2008 02:12:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r185538 - head/sys/dev/fxp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Dec 2008 02:12:35 -0000 Author: yongari Date: Tue Dec 2 02:12:34 2008 New Revision: 185538 URL: http://svn.freebsd.org/changeset/base/185538 Log: Make sure to clear PMDR register by writing back power management events. Just reading PMDR register was not enough to have fxp(4) immuninize against received magic packets during system boot. Tested by: Alexey Shuvaev < shuvaev <> physik DOT uni-wuerzburg DOT de > Modified: head/sys/dev/fxp/if_fxp.c Modified: head/sys/dev/fxp/if_fxp.c ============================================================================== --- head/sys/dev/fxp/if_fxp.c Tue Dec 2 00:51:56 2008 (r185537) +++ head/sys/dev/fxp/if_fxp.c Tue Dec 2 02:12:34 2008 (r185538) @@ -857,7 +857,7 @@ fxp_attach(device_t dev) if ((sc->flags & FXP_FLAG_WOLCAP) != 0) { FXP_LOCK(sc); /* Clear wakeup events. */ - CSR_READ_1(sc, FXP_CSR_PMDR); + CSR_WRITE_1(sc, FXP_CSR_PMDR, CSR_READ_1(sc, FXP_CSR_PMDR)); fxp_init_body(sc); fxp_stop(sc); FXP_UNLOCK(sc); @@ -1050,10 +1050,9 @@ fxp_resume(device_t dev) /* Disable PME and clear PME status. */ pmstat &= ~PCIM_PSTAT_PMEENABLE; pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2); - if ((sc->flags & FXP_FLAG_WOLCAP) != 0) { - /* Clear wakeup events. */ - CSR_READ_1(sc, FXP_CSR_PMDR); - } + if ((sc->flags & FXP_FLAG_WOLCAP) != 0) + CSR_WRITE_1(sc, FXP_CSR_PMDR, + CSR_READ_1(sc, FXP_CSR_PMDR)); } CSR_WRITE_4(sc, FXP_CSR_PORT, FXP_PORT_SELECTIVE_RESET);