svn commit: r248095 - in user/attilio/vmcontention/sys: dev/ath kern net80211
Attilio Rao
attilio at FreeBSD.org
Sat Mar 9 12:03:10 UTC 2013
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);
More information about the svn-src-user
mailing list