svn commit: r279882 - in projects/ifnet/sys/dev: bge msk xl
Gleb Smirnoff
glebius at FreeBSD.org
Wed Mar 11 10:43:16 UTC 2015
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
More information about the svn-src-projects
mailing list