svn commit: r310883 - stable/11/sys/dev/etherswitch

Luiz Otavio O Souza loos at FreeBSD.org
Sat Dec 31 01:58:06 UTC 2016


Author: loos
Date: Sat Dec 31 01:58:04 2016
New Revision: 310883
URL: https://svnweb.freebsd.org/changeset/base/310883

Log:
  MFC r309461:
  
  Allow simultaneous access to switch device, there is no reason to prevent
  it.
  
  Remove bogus wrappers and use the kernel defaults.
  
  While here, use DEVMETHOD_END.
  
  Obtained from:	pfSense
  Sponsored by:	Rubicon Communications, LLC (Netgate)

Modified:
  stable/11/sys/dev/etherswitch/etherswitch.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/etherswitch/etherswitch.c
==============================================================================
--- stable/11/sys/dev/etherswitch/etherswitch.c	Sat Dec 31 01:54:48 2016	(r310882)
+++ stable/11/sys/dev/etherswitch/etherswitch.c	Sat Dec 31 01:58:04 2016	(r310883)
@@ -30,7 +30,6 @@
 #include <sys/bus.h>
 #include <sys/conf.h>
 #include <sys/fcntl.h>
-#include <sys/lock.h>
 #include <sys/kernel.h>
 #include <sys/malloc.h>
 #include <sys/module.h>
@@ -45,19 +44,11 @@
 
 #include "etherswitch_if.h"
 
-#define BUFSIZE 1024
-
 struct etherswitch_softc {
 	device_t sc_dev;
-	int sc_count;
-
 	struct cdev *sc_devnode;
-	struct sx sc_lock;
 };
 
-#define	SWITCH_LOCK(sc)			sx_xlock(&(sc)->sc_lock)
-#define	SWITCH_UNLOCK(sc)			sx_xunlock(&(sc)->sc_lock)
-
 static int etherswitch_probe(device_t);
 static int etherswitch_attach(device_t);
 static int etherswitch_detach(device_t);
@@ -72,7 +63,7 @@ static device_method_t etherswitch_metho
 	DEVMETHOD(device_attach,	etherswitch_attach),
 	DEVMETHOD(device_detach,	etherswitch_detach),
 
-	{ 0, 0 }
+	DEVMETHOD_END
 };
 
 driver_t etherswitch_driver = {
@@ -81,19 +72,11 @@ driver_t etherswitch_driver = {
 	sizeof(struct etherswitch_softc),
 };
 
-static	d_open_t	etherswitchopen;
-static	d_close_t	etherswitchclose;
-static	d_write_t	etherswitchwrite;
-static	d_read_t	etherswitchread;
 static	d_ioctl_t	etherswitchioctl;
 
 static struct cdevsw etherswitch_cdevsw = {
 	.d_version =	D_VERSION,
 	.d_flags =	D_TRACKCLOSE,
-	.d_open =	etherswitchopen,
-	.d_close =	etherswitchclose,
-	.d_read =	etherswitchread,
-	.d_write =	etherswitchwrite,
 	.d_ioctl =	etherswitchioctl,
 	.d_name =	"etherswitch",
 };
@@ -119,13 +102,11 @@ etherswitch_attach(device_t dev)
 	struct etherswitch_softc *sc = (struct etherswitch_softc *)device_get_softc(dev);
 
 	sc->sc_dev = dev;
-	sx_init(&sc->sc_lock, "etherswitch");
 	sc->sc_devnode = make_dev(&etherswitch_cdevsw, device_get_unit(dev),
 			UID_ROOT, GID_WHEEL,
 			0600, "etherswitch%d", device_get_unit(dev));
 	if (sc->sc_devnode == NULL) {
 		device_printf(dev, "failed to create character device\n");
-		sx_destroy(&sc->sc_lock);
 		return (ENXIO);
 	}
 	sc->sc_devnode->si_drv1 = sc;
@@ -140,61 +121,11 @@ etherswitch_detach(device_t dev)
 
 	if (sc->sc_devnode)
 		destroy_dev(sc->sc_devnode);
-	sx_destroy(&sc->sc_lock);
-
-	return (0);
-}
-
-static int
-etherswitchopen(struct cdev *dev, int flags, int fmt, struct thread *td)
-{
-	struct etherswitch_softc *sc = dev->si_drv1;
-
-	SWITCH_LOCK(sc);
-	if (sc->sc_count > 0) {
-		SWITCH_UNLOCK(sc);
-		return (EBUSY);
-	}
-
-	sc->sc_count++;
-	SWITCH_UNLOCK(sc);
-
-	return (0);
-}
-
-static int
-etherswitchclose(struct cdev *dev, int flags, int fmt, struct thread *td)
-{
-	struct etherswitch_softc *sc = dev->si_drv1;
-
-	SWITCH_LOCK(sc);
-	if (sc->sc_count == 0) {
-		SWITCH_UNLOCK(sc);
-		return (EINVAL);
-	}
-
-	sc->sc_count--;
-
-	if (sc->sc_count < 0)
-		panic("%s: etherswitch_count < 0!", __func__);
-	SWITCH_UNLOCK(sc);
 
 	return (0);
 }
 
 static int
-etherswitchwrite(struct cdev *dev, struct uio * uio, int ioflag)
-{
-	return (EINVAL);
-}
-
-static int
-etherswitchread(struct cdev *dev, struct uio * uio, int ioflag)
-{
-	return (EINVAL);
-}
-
-static int
 etherswitchioctl(struct cdev *cdev, u_long cmd, caddr_t data, int flags, struct thread *td)
 {
 	struct etherswitch_softc *sc = cdev->si_drv1;


More information about the svn-src-stable-11 mailing list