Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Mar 2013 12:03:09 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r248095 - in user/attilio/vmcontention/sys: dev/ath kern net80211
Message-ID:  <201303091203.r29C39DN041013@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sat Mar  9 12:03:08 2013
New Revision: 248095
URL: http://svnweb.freebsd.org/changeset/base/248095

Log:
  MFC

Modified:
  user/attilio/vmcontention/sys/dev/ath/if_ath.c
  user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c
  user/attilio/vmcontention/sys/kern/kern_event.c
  user/attilio/vmcontention/sys/kern/subr_witness.c
  user/attilio/vmcontention/sys/kern/sys_generic.c
  user/attilio/vmcontention/sys/net80211/ieee80211_mesh.c
Directory Properties:
  user/attilio/vmcontention/   (props changed)
  user/attilio/vmcontention/sys/   (props changed)

Modified: user/attilio/vmcontention/sys/dev/ath/if_ath.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/if_ath.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/dev/ath/if_ath.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -4342,9 +4342,12 @@ ath_tx_stopdma(struct ath_softc *sc, str
 {
 	struct ath_hal *ah = sc->sc_ah;
 
-	DPRINTF(sc, ATH_DEBUG_RESET, "%s: tx queue [%u] %p, link %p\n",
-	    __func__, txq->axq_qnum,
+	DPRINTF(sc, ATH_DEBUG_RESET,
+	    "%s: tx queue [%u] %p, flags 0x%08x, link %p\n",
+	    __func__,
+	    txq->axq_qnum,
 	    (caddr_t)(uintptr_t) ath_hal_gettxbuf(ah, txq->axq_qnum),
+	    txq->axq_flags,
 	    txq->axq_link);
 	(void) ath_hal_stoptxdma(ah, txq->axq_qnum);
 }

Modified: user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c
==============================================================================
--- user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -4340,12 +4340,23 @@ ath_tx_aggr_comp_aggr(struct ath_softc *
 	    __func__, tap->txa_start, tx_ok, ts.ts_status, ts.ts_flags,
 	    isaggr, seq_st, hasba, ba[0], ba[1]);
 
+	/*
+	 * The reference driver doesn't do this; it simply ignores
+	 * this check in its entirety.
+	 *
+	 * I've seen this occur when using iperf to send traffic
+	 * out tid 1 - the aggregate frames are all marked as TID 1,
+	 * but the TXSTATUS has TID=0.  So, let's just ignore this
+	 * check.
+	 */
+#if 0
 	/* Occasionally, the MAC sends a tx status for the wrong TID. */
 	if (tid != ts.ts_tid) {
 		device_printf(sc->sc_dev, "%s: tid %d != hw tid %d\n",
 		    __func__, tid, ts.ts_tid);
 		tx_ok = 0;
 	}
+#endif
 
 	/* AR5416 BA bug; this requires an interface reset */
 	if (isaggr && tx_ok && (! hasba)) {

Modified: user/attilio/vmcontention/sys/kern/kern_event.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/kern_event.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/kern/kern_event.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -1329,12 +1329,13 @@ kqueue_scan(struct kqueue *kq, int maxev
 			goto done_nl;
 		}
 		if (timespecisset(tsp)) {
-			if (tsp->tv_sec < INT32_MAX) {
+			if (tsp->tv_sec <= INT32_MAX) {
 				rsbt = tstosbt(*tsp);
 				if (TIMESEL(&asbt, rsbt))
 					asbt += tc_tick_sbt;
-				asbt += rsbt;
-				if (asbt < rsbt)
+				if (asbt <= INT64_MAX - rsbt)
+					asbt += rsbt;
+				else
 					asbt = 0;
 				rsbt >>= tc_precexp;
 			} else

Modified: user/attilio/vmcontention/sys/kern/subr_witness.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/subr_witness.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/kern/subr_witness.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -602,7 +602,7 @@ static struct witness_order_list_entry o
 	 * VM
 	 */
 	{ "vm map (user)", &lock_class_sx },
-	{ "vm object", &lock_class_mtx_sleep },
+	{ "vm object", &lock_class_rw },
 	{ "vm page", &lock_class_mtx_sleep },
 	{ "vm page queue", &lock_class_mtx_sleep },
 	{ "pmap pv global", &lock_class_rw },

Modified: user/attilio/vmcontention/sys/kern/sys_generic.c
==============================================================================
--- user/attilio/vmcontention/sys/kern/sys_generic.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/kern/sys_generic.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -1051,16 +1051,17 @@ kern_select(struct thread *td, int nd, f
 			error = EINVAL;
 			goto done;
 		}
-		if (rtv.tv_sec == 0 && rtv.tv_usec == 0)
+		if (!timevalisset(&rtv))
 			asbt = 0;
-		else if (rtv.tv_sec < INT32_MAX) {
+		else if (rtv.tv_sec <= INT32_MAX) {
 			rsbt = tvtosbt(rtv);
 			precision = rsbt;
 			precision >>= tc_precexp;
 			if (TIMESEL(&asbt, rsbt))
 				asbt += tc_tick_sbt;
-			asbt += rsbt;
-			if (asbt < rsbt)
+			if (asbt <= INT64_MAX - rsbt)
+				asbt += rsbt;
+			else
 				asbt = -1;
 		} else
 			asbt = -1;

Modified: user/attilio/vmcontention/sys/net80211/ieee80211_mesh.c
==============================================================================
--- user/attilio/vmcontention/sys/net80211/ieee80211_mesh.c	Sat Mar  9 11:57:51 2013	(r248094)
+++ user/attilio/vmcontention/sys/net80211/ieee80211_mesh.c	Sat Mar  9 12:03:08 2013	(r248095)
@@ -1477,10 +1477,9 @@ mesh_recv_indiv_data_to_fwrd(struct ieee
 	struct ieee80211_qosframe_addr4 *qwh;
 	struct ieee80211_mesh_state *ms = vap->iv_mesh;
 	struct ieee80211_mesh_route *rt_meshda, *rt_meshsa;
-	struct ieee80211com *ic = vap->iv_ic;
 
 	/* This is called from the RX path - don't hold this lock */
-	IEEE80211_TX_UNLOCK_ASSERT(ic);
+	IEEE80211_TX_UNLOCK_ASSERT(vap->iv_ic);
 
 	qwh = (struct ieee80211_qosframe_addr4 *)wh;
 
@@ -1536,11 +1535,10 @@ mesh_recv_indiv_data_to_me(struct ieee80
 	const struct ieee80211_meshcntl_ae10 *mc10;
 	struct ieee80211_mesh_state *ms = vap->iv_mesh;
 	struct ieee80211_mesh_route *rt;
-	struct ieee80211com *ic = vap->iv_ic;
 	int ae;
 
 	/* This is called from the RX path - don't hold this lock */
-	IEEE80211_TX_UNLOCK_ASSERT(ic);
+	IEEE80211_TX_UNLOCK_ASSERT(vap->iv_ic);
 
 	qwh = (struct ieee80211_qosframe_addr4 *)wh;
 	mc10 = (const struct ieee80211_meshcntl_ae10 *)mc;
@@ -1603,10 +1601,9 @@ mesh_recv_group_data(struct ieee80211vap
 {
 #define	MC01(mc)	((const struct ieee80211_meshcntl_ae01 *)mc)
 	struct ieee80211_mesh_state *ms = vap->iv_mesh;
-	struct ieee80211com *ic = vap->iv_ic;
 
 	/* This is called from the RX path - don't hold this lock */
-	IEEE80211_TX_UNLOCK_ASSERT(ic);
+	IEEE80211_TX_UNLOCK_ASSERT(vap->iv_ic);
 
 	mesh_forward(vap, m, mc);
 



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