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>