Module Name: src Committed By: hikaru Date: Sat Feb 13 03:33:02 UTC 2016
Modified Files: src/sys/dev/marvell: if_mvxpe.c Log Message: Correct locks and missing breaks. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/sys/dev/marvell/if_mvxpe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/marvell/if_mvxpe.c diff -u src/sys/dev/marvell/if_mvxpe.c:1.3 src/sys/dev/marvell/if_mvxpe.c:1.4 --- src/sys/dev/marvell/if_mvxpe.c:1.3 Tue Feb 9 08:32:11 2016 +++ src/sys/dev/marvell/if_mvxpe.c Sat Feb 13 03:33:02 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if_mvxpe.c,v 1.3 2016/02/09 08:32:11 ozaki-r Exp $ */ +/* $NetBSD: if_mvxpe.c,v 1.4 2016/02/13 03:33:02 hikaru Exp $ */ /* * Copyright (c) 2015 Internet Initiative Japan Inc. * All rights reserved. @@ -25,7 +25,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_mvxpe.c,v 1.3 2016/02/09 08:32:11 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_mvxpe.c,v 1.4 2016/02/13 03:33:02 hikaru Exp $"); #include "opt_multiprocessor.h" @@ -850,7 +850,6 @@ mvxpe_initreg(struct ifnet *ifp) aprint_error_ifnet(ifp, "initialization failed: cannot initialize queue\n"); mvxpe_rx_unlockq(sc, q); - mvxpe_tx_unlockq(sc, q); return ENOBUFS; } mvxpe_rx_unlockq(sc, q); @@ -859,7 +858,6 @@ mvxpe_initreg(struct ifnet *ifp) if (mvxpe_tx_queue_init(ifp, q) != 0) { aprint_error_ifnet(ifp, "initialization failed: cannot initialize queue\n"); - mvxpe_rx_unlockq(sc, q); mvxpe_tx_unlockq(sc, q); return ENOBUFS; } @@ -1421,8 +1419,10 @@ mvxpe_rxtxth_intr(void *arg) mvxpe_sc_lock(sc); ic = MVXPE_READ(sc, MVXPE_PRXTXTIC); - if (ic == 0) + if (ic == 0) { + mvxpe_sc_unlock(sc); return 0; + } MVXPE_WRITE(sc, MVXPE_PRXTXTIC, ~ic); datum = datum ^ ic; @@ -1441,8 +1441,10 @@ mvxpe_rxtxth_intr(void *arg) DPRINTIFNET(ifp, 2, "PTXTXTIC: +PRXTXICSUMMARY\n"); mvxpe_rxtx_intr(sc); } - if (!(ifp->if_flags & IFF_RUNNING)) + if (!(ifp->if_flags & IFF_RUNNING)) { + mvxpe_sc_unlock(sc); return 1; + } /* RxTxTH interrupt */ queues = MVXPE_PRXTXTI_GET_RBICTAPQ(ic); @@ -2316,12 +2318,16 @@ mvxpe_tx_queue_complete(struct mvxpe_sof switch (t->flags & MVXPE_TX_F_EC_MASK) { case MVXPE_TX_F_EC_LC: MVXPE_EVCNT_INCR(&sc->sc_ev.ev_txd_lc); + break; case MVXPE_TX_F_EC_UR: MVXPE_EVCNT_INCR(&sc->sc_ev.ev_txd_ur); + break; case MVXPE_TX_F_EC_RL: MVXPE_EVCNT_INCR(&sc->sc_ev.ev_txd_rl); + break; default: MVXPE_EVCNT_INCR(&sc->sc_ev.ev_txd_oth); + break; } error = 1; }