Module Name: src
Committed By: jdolecek
Date: Tue Jul 3 18:07:36 UTC 2018
Modified Files:
src/sys/dev/pci: if_msk.c if_mskvar.h if_sk.c if_skvar.h
Log Message:
attach the rnd source only once even with dual-port adapters
To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/dev/pci/if_msk.c
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/pci/if_mskvar.h
cvs rdiff -u -r1.87 -r1.88 src/sys/dev/pci/if_sk.c
cvs rdiff -u -r1.18 -r1.19 src/sys/dev/pci/if_skvar.h
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/pci/if_msk.c
diff -u src/sys/dev/pci/if_msk.c:1.68 src/sys/dev/pci/if_msk.c:1.69
--- src/sys/dev/pci/if_msk.c:1.68 Mon Jul 2 06:03:13 2018
+++ src/sys/dev/pci/if_msk.c Tue Jul 3 18:07:36 2018
@@ -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 @@ msk_attach(device_t parent, device_t sel
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_detach(device_t self, int flags)
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 @@ msk_intr(void *xsc)
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)
Index: src/sys/dev/pci/if_mskvar.h
diff -u src/sys/dev/pci/if_mskvar.h:1.15 src/sys/dev/pci/if_mskvar.h:1.16
--- src/sys/dev/pci/if_mskvar.h:1.15 Mon Jul 2 06:03:13 2018
+++ src/sys/dev/pci/if_mskvar.h Tue Jul 3 18:07:36 2018
@@ -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 @@ struct sk_softc {
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 */
Index: src/sys/dev/pci/if_sk.c
diff -u src/sys/dev/pci/if_sk.c:1.87 src/sys/dev/pci/if_sk.c:1.88
--- src/sys/dev/pci/if_sk.c:1.87 Tue Jun 26 06:48:01 2018
+++ src/sys/dev/pci/if_sk.c Tue Jul 3 18:07:36 2018
@@ -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 @@ sk_attach(device_t parent, device_t self
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 @@ sk_intr(void *xsc)
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)
Index: src/sys/dev/pci/if_skvar.h
diff -u src/sys/dev/pci/if_skvar.h:1.18 src/sys/dev/pci/if_skvar.h:1.19
--- src/sys/dev/pci/if_skvar.h:1.18 Mon Apr 13 16:33:25 2015
+++ src/sys/dev/pci/if_skvar.h Tue Jul 3 18:07:36 2018
@@ -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 @@ struct sk_softc {
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 */