On 9 Apr 2010, at 03:15, PseudoCylon wrote: >>> Author: rpaulo >>> Date: Wed Apr 7 15:29:13 2010 >>> New Revision: 206358 >>> URL: http://svn.freebsd.org/changeset/base/206358 >>> >>> Log: >>> net80211 rate control framework (net80211 ratectl). >>> >>> This framework allows drivers to abstract the rate control algorithm and >>> just feed the framework with the usable parameters. The rate control >>> framework will now deal with passing the parameters to the selected >>> algorithm. Right now we have AMRR (the default) and RSSADAPT but there's >>> no way to select one with ifconfig, yet. >>> The objective is to have more rate control algorithms in the net80211 >>> stack so all drivers[0] can use it. Ideally, we'll have the well-known >>> sample rate control algorithm in the net80211 at some point so all >>> drivers can use it (not just ath). >>> >> >> Hello, >> >> I've just tried the commit and run(4) works fine out of the box. It properly >> updates the rate. >> >> Thank you for updating the driver. >> >> AK >> > > Sorry, correction. > > I've got complain from witness > > uma_zalloc_arg: zone "64" with the following non-sleepable locks held: > exclusive sleep mutex run0 (network driver) r = 0 (0xffffff80008de128) locked > @ /usr/src/sys/dev/usb/usb_request.c:540 > KDB: stack backtrace: > db_trace_self_wrapper() at db_trace_self_wrapper+0x2a > _witness_debugger() at _witness_debugger+0x2e > witness_warn() at witness_warn+0x2c2 > uma_zalloc_arg() at uma_zalloc_arg+0x335 > malloc() at malloc+0x9a > amrr_node_init() at amrr_node_init+0x38 > run_newstate() at run_newstate+0x363 > ieee80211_newstate_cb() at ieee80211_newstate_cb+0xac > taskqueue_run() at taskqueue_run+0x91 > taskqueue_thread_loop() at taskqueue_thread_loop+0x3f > fork_exit() at fork_exit+0x12a > fork_trampoline() at fork_trampoline+0xe > --- trap 0, rip = 0, rsp = 0xffffff803e5d0d30, rbp = 0 --- > > Just unlocking the mutex before calling ieee80211_ratectl_node_init() fix > this. As long as ieee80211_ratectl_node_init() won't be called with the same > ni at the same time, unlocking should be safe. > > Here is patch > > *** orig_if_run.c 2010-04-08 03:29:31.000000000 -0600 > --- fix_if_run.c 2010-04-08 19:52:45.000000000 -0600 > *************** > *** 1965,1969 **** > uint32_t sta[3]; > - #if 0 > - uint8_t wcid; > - #endif > > --- 1965,1966 ---- > *************** > *** 1975,1981 **** > > ! #if 0 > ! wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd); > ! ieee80211_amrr_node_init(&rvp->amrr, &rvp->amn[wcid], ni); > ! #endif > ieee80211_ratectl_node_init(ni); > > --- 1972,1976 ---- > > ! RUN_UNLOCK(sc); > ieee80211_ratectl_node_init(ni); > + RUN_LOCK(sc); > > *************** > *** 2096,2102 **** > > - #if 0 > - wcid = RUN_AID2WCID(ni == NULL ? 0 : ni->ni_associd); > - amn = &rvp->amn[wcid]; > - #endif > - > /* count failed TX as errors */ > --- 2091,2092 ---- > > > > P.S. > #if 0s (amn[]) are no longer needed because now each amrr node is attached to > individual ieee80211_node.
Can you try updating and see if everything works for you? Thanks. Regards, -- Rui Paulo _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"