Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Sep 2010 16:48:56 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r213207 - projects/sv/sys/dev/e1000
Message-ID:  <201009271648.o8RGmu1t042485@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Mon Sep 27 16:48:56 2010
New Revision: 213207
URL: http://svn.freebsd.org/changeset/base/213207

Log:
  Mask the conditional locking with appropriate macros.
  Don't make them in the headers because their usage should be just local.
  
  Requested by:	rstone

Modified:
  projects/sv/sys/dev/e1000/if_em.c
  projects/sv/sys/dev/e1000/if_lem.c

Modified: projects/sv/sys/dev/e1000/if_em.c
==============================================================================
--- projects/sv/sys/dev/e1000/if_em.c	Mon Sep 27 16:29:46 2010	(r213206)
+++ projects/sv/sys/dev/e1000/if_em.c	Mon Sep 27 16:48:56 2010	(r213207)
@@ -89,6 +89,27 @@
 #include "e1000_82571.h"
 #include "if_em.h"
 
+#if defined(DEVICE_POLLING) || defined(NETDUMP_CLIENT)
+
+#define	EM_CORE_LOCK_COND(adapter, locking) do {			\
+	if ((locking) != 0)						\
+		EM_CORE_LOCK(adapter);					\
+} while (0)
+#define	EM_CORE_UNLOCK_COND(adapter, locking) do {			\
+	if ((locking) != 0)						\
+		EM_CORE_UNLOCK(adapter);				\
+} while (0)
+#define	EM_TX_LOCK_COND(txr, locking) do {				\
+	if ((locking) != 0)						\
+		EM_TX_LOCK(txr);					\
+} while (0)
+#define	EM_TX_UNLOCK_COND(txr, locking) do {				\
+	if ((locking) != 0)						\
+		EM_CORE_UNLOCK(txr);					\
+} while (0)
+
+#endif
+
 /*********************************************************************
  *  Set this to one to display debug statistics
  *********************************************************************/
@@ -1392,11 +1413,9 @@ _em_poll_generic(struct ifnet *ifp, enum
 	u32		reg_icr;
 	int		rx_done;
 
-	if (locking != 0)
-		EM_CORE_LOCK(adapter);
+	EM_CORE_LOCK_COND(adapter, locking);
 	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
-		if (locking != 0)
-			EM_CORE_UNLOCK(adapter);
+		EM_CORE_UNLOCK_COND(adapter, locking);
 		return (0);
 	}
 
@@ -1410,13 +1429,11 @@ _em_poll_generic(struct ifnet *ifp, enum
 			    em_local_timer, adapter);
 		}
 	}
-	if (locking != 0)
-		EM_CORE_UNLOCK(adapter);
+	EM_CORE_UNLOCK_COND(adapter, locking);
 
 	em_rxeof(rxr, count, &rx_done);
 
-	if (locking != 0)
-		EM_TX_LOCK(txr);
+	EM_TX_LOCK_COND(txr, locking);
 	em_txeof(txr);
 #ifdef EM_MULTIQUEUE
 	if (!drbr_empty(ifp, txr->br))
@@ -1425,8 +1442,7 @@ _em_poll_generic(struct ifnet *ifp, enum
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
 		em_start_locked(ifp, txr);
 #endif
-	if (locking != 0)
-		EM_TX_UNLOCK(txr);
+	EM_TX_UNLOCK_COND(txr, locking);
 
 	return (rx_done);
 }

Modified: projects/sv/sys/dev/e1000/if_lem.c
==============================================================================
--- projects/sv/sys/dev/e1000/if_lem.c	Mon Sep 27 16:29:46 2010	(r213206)
+++ projects/sv/sys/dev/e1000/if_lem.c	Mon Sep 27 16:48:56 2010	(r213207)
@@ -87,6 +87,27 @@
 #include "e1000_api.h"
 #include "if_lem.h"
 
+#if defined(DEVICE_POLLING) || defined(NETDUMP_CLIENT)
+
+#define	EM_CORE_LOCK_COND(adapter, locking) do {			\
+	if ((locking) != 0)						\
+		EM_CORE_LOCK(adapter);					\
+} while (0)
+#define	EM_CORE_UNLOCK_COND(adapter, locking) do {			\
+	if ((locking) != 0)						\
+		EM_CORE_UNLOCK(adapter);				\
+} while (0)
+#define	EM_TX_LOCK_COND(adapter, locking) do {				\
+	if ((locking) != 0)						\
+		EM_TX_LOCK(adapter);					\
+} while (0)
+#define	EM_TX_UNLOCK_COND(adapter, locking) do {			\
+	if ((locking) != 0)						\
+		EM_CORE_UNLOCK(adapter);				\
+} while (0)
+
+#endif
+
 /*********************************************************************
  *  Legacy Em Driver version:
  *********************************************************************/
@@ -1263,11 +1284,9 @@ _lem_poll_generic(struct ifnet *ifp, enu
 	struct adapter *adapter = ifp->if_softc;
 	u32		reg_icr, rx_done = 0;
 
-	if (locking != 0)
-		EM_CORE_LOCK(adapter);
+	EM_CORE_LOCK_COND(adapter, locking);
 	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
-		if (locking != 0)
-			EM_CORE_UNLOCK(adapter);
+		EM_CORE_UNLOCK_COND(adapter, locking);
 		return (rx_done);
 	}
 
@@ -1281,18 +1300,15 @@ _lem_poll_generic(struct ifnet *ifp, enu
 			    lem_local_timer, adapter);
 		}
 	}
-	if (locking != 0)
-		EM_CORE_UNLOCK(adapter);
+	EM_CORE_UNLOCK_COND(adapter, locking);
 
 	lem_rxeof(adapter, count, &rx_done);
 
-	if (locking != 0)
-		EM_TX_LOCK(adapter);
+	EM_TX_LOCK_COND(adapter, locking);
 	lem_txeof(adapter);
 	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
 		lem_start_locked(ifp);
-	if (locking != 0)
-		EM_TX_UNLOCK(adapter);
+	EM_TX_UNLOCK_COND(adapter, locking);
 	return (rx_done);
 }
 



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