Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 May 2016 17:04:02 GMT
From:      vincenzo@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r303801 - soc2016/vincenzo/head/sys/dev/netmap
Message-ID:  <201605241704.u4OH42jA079845@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vincenzo
Date: Tue May 24 17:04:01 2016
New Revision: 303801
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=303801

Log:
  ptnet: add core lock

Modified:
  soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c

Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c
==============================================================================
--- soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Tue May 24 17:02:42 2016	(r303800)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Tue May 24 17:04:01 2016	(r303801)
@@ -93,6 +93,18 @@
 	char			hwaddr[ETHER_ADDR_LEN];
 };
 
+#define PTNET_CORE_LOCK_INIT(_sc)	do {			\
+		snprintf((_sc)->core_mtx_name, sizeof((_sc)->core_mtx_name),	\
+			 "%s", device_get_nameunit(sc->dev));			\
+		mtx_init(&(_sc)->core_mtx, (_sc)->core_mtx_name,		\
+			 "ptnet core lock", MTX_DEF);				\
+	} while (0)
+
+#define PTNET_CORE_LOCK_FINI(_sc)	mtx_destroy(&(_sc)->core_mtx)
+
+#define PTNET_CORE_LOCK(_sc)	mtx_lock(&(_sc)->core_mtx)
+#define PTNET_CORE_UNLOCK(_sc)	mtx_unlock(&(_sc)->core_mtx)
+
 static int	ptnet_probe(device_t);
 static int	ptnet_attach(device_t);
 static int	ptnet_detach(device_t);
@@ -152,6 +164,9 @@
 
 	sc = device_get_softc(dev);
 	sc->dev = dev;
+
+	PTNET_CORE_LOCK_INIT(sc);
+
 	sc->ifp = ifp = if_alloc(IFT_ETHER);
 	if (ifp == NULL) {
 		device_printf(dev, "Failed to allocate ifnet\n");
@@ -188,8 +203,12 @@
 static int
 ptnet_detach(device_t dev)
 {
+	struct ptnet_softc *sc = device_get_softc(dev);
+
 	printf("%s\n", __func__);
 
+	PTNET_CORE_LOCK_FINI(sc);
+
 	return (0);
 }
 
@@ -257,12 +276,10 @@
 	ifmr->ifm_status = IFM_AVALID;
 	ifmr->ifm_active = IFM_ETHER;
 
-	//lock
 	if (1) {
 		ifmr->ifm_status |= IFM_ACTIVE;
 		ifmr->ifm_active |= IFM_10G_T | IFM_FDX;
 	} else {
 		ifmr->ifm_active |= IFM_NONE;
 	}
-	//unlock
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605241704.u4OH42jA079845>