Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci attach the rnd source only once even with dual-p...



details:   https://anonhg.NetBSD.org/src/rev/324f8c793fe3
branches:  trunk
changeset: 320379:324f8c793fe3
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Tue Jul 03 18:07:36 2018 +0000

description:
attach the rnd source only once even with dual-port adapters

diffstat:

 sys/dev/pci/if_msk.c    |  14 +++++++++-----
 sys/dev/pci/if_mskvar.h |   5 +++--
 sys/dev/pci/if_sk.c     |  11 +++++++----
 sys/dev/pci/if_skvar.h  |   5 +++--
 4 files changed, 22 insertions(+), 13 deletions(-)

diffs (127 lines):

diff -r 69e97ef1a36c -r 324f8c793fe3 sys/dev/pci/if_msk.c
--- a/sys/dev/pci/if_msk.c      Tue Jul 03 16:30:13 2018 +0000
+++ b/sys/dev/pci/if_msk.c      Tue Jul 03 18:07:36 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_msk.c,v 1.68 2018/07/02 06:03:13 jdolecek Exp $ */
+/* $NetBSD: if_msk.c,v 1.69 2018/07/03 18:07:36 jdolecek Exp $ */
 /*     $OpenBSD: if_msk.c,v 1.79 2009/10/15 17:54:56 deraadt Exp $     */
 
 /*
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.68 2018/07/02 06:03:13 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.69 2018/07/03 18:07:36 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1199,8 +1199,10 @@
        else
                aprint_error_dev(self, "couldn't establish power handler\n");
 
-       rnd_attach_source(&sc->rnd_source, device_xname(sc->sk_dev),
-               RND_TYPE_NET, RND_FLAG_DEFAULT);
+       if (sc->rnd_attached++ == 0) {
+               rnd_attach_source(&sc->rnd_source, device_xname(sc->sk_dev),
+                       RND_TYPE_NET, RND_FLAG_DEFAULT);
+       }
 
        DPRINTFN(2, ("msk_attach: end\n"));
        return;
@@ -1227,7 +1229,8 @@
 
        msk_stop(ifp, 0);
 
-       rnd_detach_source(&sc->rnd_source);
+       if (--sc->rnd_attached == 0)
+               rnd_detach_source(&sc->rnd_source);
 
        callout_halt(&sc_if->sk_tick_ch, NULL);
        callout_destroy(&sc_if->sk_tick_ch);
@@ -2148,6 +2151,7 @@
        if (ifp1 != NULL && !IFQ_IS_EMPTY(&ifp1->if_snd))
                if_schedule_deferred_start(ifp1);
 
+       KASSERT(sc->rnd_attached > 0);
        rnd_add_uint32(&sc->rnd_source, status);
 
        if (sc->sk_int_mod_pending)
diff -r 69e97ef1a36c -r 324f8c793fe3 sys/dev/pci/if_mskvar.h
--- a/sys/dev/pci/if_mskvar.h   Tue Jul 03 16:30:13 2018 +0000
+++ b/sys/dev/pci/if_mskvar.h   Tue Jul 03 18:07:36 2018 +0000
@@ -1,5 +1,5 @@
 /*     $OpenBSD: if_mskvar.h,v 1.3 2006/12/28 16:34:42 kettenis Exp $  */
-/*     $NetBSD: if_mskvar.h,v 1.15 2018/07/02 06:03:13 jdolecek Exp $  */
+/*     $NetBSD: if_mskvar.h,v 1.16 2018/07/03 18:07:36 jdolecek Exp $  */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -209,7 +209,8 @@
        int                     sk_status_nseg;
        int                     sk_status_idx;
        int                     sk_status_own_idx;
-       krndsource_t     rnd_source;
+       u_int8_t                rnd_attached;
+       krndsource_t            rnd_source;
 };
 
 /* Softc for each logical interface */
diff -r 69e97ef1a36c -r 324f8c793fe3 sys/dev/pci/if_sk.c
--- a/sys/dev/pci/if_sk.c       Tue Jul 03 16:30:13 2018 +0000
+++ b/sys/dev/pci/if_sk.c       Tue Jul 03 18:07:36 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_sk.c,v 1.87 2018/06/26 06:48:01 msaitoh Exp $       */
+/*     $NetBSD: if_sk.c,v 1.88 2018/07/03 18:07:36 jdolecek Exp $      */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -115,7 +115,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_sk.c,v 1.87 2018/06/26 06:48:01 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_sk.c,v 1.88 2018/07/03 18:07:36 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1462,8 +1462,10 @@
 
        ether_ifattach(ifp, sc_if->sk_enaddr);
 
-        rnd_attach_source(&sc->rnd_source, device_xname(sc->sk_dev),
-            RND_TYPE_NET, RND_FLAG_DEFAULT);
+       if (sc->rnd_attached++ == 0) {
+               rnd_attach_source(&sc->rnd_source, device_xname(sc->sk_dev),
+                   RND_TYPE_NET, RND_FLAG_DEFAULT);
+       }
 
        if (pmf_device_register(self, NULL, sk_resume))
                pmf_class_network_register(self, ifp);
@@ -2400,6 +2402,7 @@
        if (ifp1 != NULL)
                if_schedule_deferred_start(ifp1);
 
+       KASSERT(sc->rnd_attached > 0);
        rnd_add_uint32(&sc->rnd_source, status);
 
        if (sc->sk_int_mod_pending)
diff -r 69e97ef1a36c -r 324f8c793fe3 sys/dev/pci/if_skvar.h
--- a/sys/dev/pci/if_skvar.h    Tue Jul 03 16:30:13 2018 +0000
+++ b/sys/dev/pci/if_skvar.h    Tue Jul 03 18:07:36 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_skvar.h,v 1.18 2015/04/13 16:33:25 riastradh Exp $ */
+/* $NetBSD: if_skvar.h,v 1.19 2018/07/03 18:07:36 jdolecek Exp $ */
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -200,7 +200,8 @@
        int                     sk_int_mod_pending;
        bus_dma_tag_t           sc_dmatag;
        struct sk_if_softc      *sk_if[2];
-       krndsource_t     rnd_source;
+       u_int8_t                rnd_attached;
+       krndsource_t            rnd_source;
 };
 
 /* Softc for each logical interface */



Home | Main Index | Thread Index | Old Index