From owner-svn-src-projects@FreeBSD.ORG Wed Mar 11 10:43:16 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D659DB05; Wed, 11 Mar 2015 10:43:16 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A928C759; Wed, 11 Mar 2015 10:43:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t2BAhFoK028287; Wed, 11 Mar 2015 10:43:15 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t2BAhFCF028283; Wed, 11 Mar 2015 10:43:15 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201503111043.t2BAhFCF028283@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 11 Mar 2015 10:43:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r279882 - in projects/ifnet/sys/dev: bge msk xl X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Mar 2015 10:43:16 -0000 Author: glebius Date: Wed Mar 11 10:43:14 2015 New Revision: 279882 URL: https://svnweb.freebsd.org/changeset/base/279882 Log: For now use consistent softc lock in drivers transmit methods, due to a theoretical race condition. Note that the condition exists in all drbr(9) based drivers in head, but never was evidenced. Nevertheless, leave this branch for KPI redesign instead of performance experiments. Discussed with: jhb Modified: projects/ifnet/sys/dev/bge/if_bge.c projects/ifnet/sys/dev/msk/if_msk.c projects/ifnet/sys/dev/xl/if_xl.c Modified: projects/ifnet/sys/dev/bge/if_bge.c ============================================================================== --- projects/ifnet/sys/dev/bge/if_bge.c Wed Mar 11 09:54:03 2015 (r279881) +++ projects/ifnet/sys/dev/bge/if_bge.c Wed Mar 11 10:43:14 2015 (r279882) @@ -5398,8 +5398,7 @@ bge_transmit(if_t ifp, struct mbuf *m) return (error); sc = if_getsoftc(ifp, IF_DRIVER_SOFTC); - if (BGE_TRYLOCK(sc) == 0) - return (0); + BGE_LOCK(sc); error = bge_start_locked(sc); BGE_UNLOCK(sc); return (error); Modified: projects/ifnet/sys/dev/msk/if_msk.c ============================================================================== --- projects/ifnet/sys/dev/msk/if_msk.c Wed Mar 11 09:54:03 2015 (r279881) +++ projects/ifnet/sys/dev/msk/if_msk.c Wed Mar 11 10:43:14 2015 (r279882) @@ -2894,8 +2894,7 @@ msk_transmit(if_t ifp, struct mbuf *m) return (error); sc_if = if_getsoftc(ifp, IF_DRIVER_SOFTC); - if (MSK_IF_TRYLOCK(sc_if) == 0) - return (0); + MSK_IF_LOCK(sc_if); error = msk_start(sc_if); MSK_IF_UNLOCK(sc_if); return (error); Modified: projects/ifnet/sys/dev/xl/if_xl.c ============================================================================== --- projects/ifnet/sys/dev/xl/if_xl.c Wed Mar 11 09:54:03 2015 (r279881) +++ projects/ifnet/sys/dev/xl/if_xl.c Wed Mar 11 10:43:14 2015 (r279882) @@ -2414,8 +2414,7 @@ xl_transmit(if_t ifp, struct mbuf *m) return (error); sc = if_getsoftc(ifp, IF_DRIVER_SOFTC); - if (XL_TRY_LOCK(sc) == 0) - return (0); + XL_LOCK(sc); if (sc->xl_type == XL_TYPE_905B) xl_start_90xB_locked(sc); else