Date: Tue, 17 Feb 2009 15:47:13 +0000 (UTC) From: Rafal Jaworowski <raj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r188715 - head/sys/dev/tsec Message-ID: <200902171547.n1HFlD1O019522@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: raj Date: Tue Feb 17 15:47:13 2009 New Revision: 188715 URL: http://svn.freebsd.org/changeset/base/188715 Log: tsec(4): do not clear interrupt events register before use. Prior to this fix, IEVENT register was always cleared before calling tsec_error_intr_locked(), which prevented error recovery actions from happening with polling enabled (and could lead to serious problems, including controller hang). Submitted by: Marcin Ligenza marcinl ! pacomp dot com dot pl Modified: head/sys/dev/tsec/if_tsec.c Modified: head/sys/dev/tsec/if_tsec.c ============================================================================== --- head/sys/dev/tsec/if_tsec.c Tue Feb 17 15:41:41 2009 (r188714) +++ head/sys/dev/tsec/if_tsec.c Tue Feb 17 15:47:13 2009 (r188715) @@ -870,11 +870,11 @@ tsec_poll(struct ifnet *ifp, enum poll_c } if (cmd == POLL_AND_CHECK_STATUS) { - ie = TSEC_READ(sc, TSEC_REG_IEVENT); + tsec_error_intr_locked(sc, count); /* Clear all events reported */ + ie = TSEC_READ(sc, TSEC_REG_IEVENT); TSEC_WRITE(sc, TSEC_REG_IEVENT, ie); - tsec_error_intr_locked(sc, count); } tsec_transmit_intr_locked(sc);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902171547.n1HFlD1O019522>