svn commit: r280120 - head/sys/dev/wpi
Oliver Pinter
oliver.pinter at hardenedbsd.org
Sun Mar 15 22:11:59 UTC 2015
On Sun, Mar 15, 2015 at 10:35 PM, Adrian Chadd <adrian at freebsd.org> wrote:
> .. promise I'm done for now.
>
> (God, it'd be nice to use git, or some web ui that lets me batch
> review and commit things like this.)
http://svnweb.freebsd.org/socsvn/soc2014/op/tools/svn-cherry-pick-from-git.csh?view=markup
>
>
> -a
>
>
> On 15 March 2015 at 14:32, Adrian Chadd <adrian at freebsd.org> wrote:
>> Author: adrian
>> Date: Sun Mar 15 21:32:11 2015
>> New Revision: 280120
>> URL: https://svnweb.freebsd.org/changeset/base/280120
>>
>> Log:
>> Add a new taskqueue (device specific, not net80211 ic->tq); use it for
>> device restart.
>>
>> (Committers note - once scan overhaul and a few other things have been
>> fixed in net80211 to not block things in the taskqueue, this can disappear
>> and the device specific taskqueues in other drivers can also go away.)
>>
>> PR: kern/197143
>> Submitted by: Andriy Voskoboinyk <s3erios at gmail.com>
>>
>> Modified:
>> head/sys/dev/wpi/if_wpi.c
>> head/sys/dev/wpi/if_wpivar.h
>>
>> Modified: head/sys/dev/wpi/if_wpi.c
>> ==============================================================================
>> --- head/sys/dev/wpi/if_wpi.c Sun Mar 15 21:30:20 2015 (r280119)
>> +++ head/sys/dev/wpi/if_wpi.c Sun Mar 15 21:32:11 2015 (r280120)
>> @@ -532,6 +532,14 @@ wpi_attach(device_t dev)
>> TASK_INIT(&sc->sc_radioon_task, 0, wpi_radio_on, sc);
>> TASK_INIT(&sc->sc_start_task, 0, wpi_start_task, sc);
>>
>> + sc->sc_tq = taskqueue_create("wpi_taskq", M_WAITOK,
>> + taskqueue_thread_enqueue, &sc->sc_tq);
>> + error = taskqueue_start_threads(&sc->sc_tq, 1, 0, "wpi_taskq");
>> + if (error != 0) {
>> + device_printf(dev, "can't start threads, error %d\n", error);
>> + goto fail;
>> + }
>> +
>> wpi_sysctlattach(sc);
>>
>> /*
>> @@ -688,6 +696,9 @@ wpi_detach(device_t dev)
>>
>> wpi_stop(sc);
>>
>> + taskqueue_drain_all(sc->sc_tq);
>> + taskqueue_free(sc->sc_tq);
>> +
>> callout_drain(&sc->watchdog_rfkill);
>> callout_drain(&sc->tx_timeout);
>> callout_drain(&sc->scan_timeout);
>> @@ -2387,8 +2398,6 @@ wpi_intr(void *arg)
>> WPI_WRITE(sc, WPI_FH_INT, r2);
>>
>> if (r1 & (WPI_INT_SW_ERR | WPI_INT_HW_ERR)) {
>> - struct ieee80211com *ic = ifp->if_l2com;
>> -
>> device_printf(sc->sc_dev, "fatal firmware error\n");
>> #ifdef WPI_DEBUG
>> wpi_debug_registers(sc);
>> @@ -2397,7 +2406,7 @@ wpi_intr(void *arg)
>> DPRINTF(sc, WPI_DEBUG_HW,
>> "(%s)\n", (r1 & WPI_INT_SW_ERR) ? "(Software Error)" :
>> "(Hardware Error)");
>> - ieee80211_runtask(ic, &sc->sc_reinittask);
>> + taskqueue_enqueue(sc->sc_tq, &sc->sc_reinittask);
>> goto end;
>> }
>>
>> @@ -2950,10 +2959,9 @@ wpi_scan_timeout(void *arg)
>> {
>> struct wpi_softc *sc = arg;
>> struct ifnet *ifp = sc->sc_ifp;
>> - struct ieee80211com *ic = ifp->if_l2com;
>>
>> if_printf(ifp, "scan timeout\n");
>> - ieee80211_runtask(ic, &sc->sc_reinittask);
>> + taskqueue_enqueue(sc->sc_tq, &sc->sc_reinittask);
>> }
>>
>> static void
>> @@ -2961,11 +2969,10 @@ wpi_tx_timeout(void *arg)
>> {
>> struct wpi_softc *sc = arg;
>> struct ifnet *ifp = sc->sc_ifp;
>> - struct ieee80211com *ic = ifp->if_l2com;
>>
>> if_printf(ifp, "device timeout\n");
>> if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
>> - ieee80211_runtask(ic, &sc->sc_reinittask);
>> + taskqueue_enqueue(sc->sc_tq, &sc->sc_reinittask);
>> }
>>
>> static int
>>
>> Modified: head/sys/dev/wpi/if_wpivar.h
>> ==============================================================================
>> --- head/sys/dev/wpi/if_wpivar.h Sun Mar 15 21:30:20 2015 (r280119)
>> +++ head/sys/dev/wpi/if_wpivar.h Sun Mar 15 21:32:11 2015 (r280120)
>> @@ -228,6 +228,9 @@ struct wpi_softc {
>> struct task sc_radioon_task;
>> struct task sc_start_task;
>>
>> + /* Taskqueue */
>> + struct taskqueue *sc_tq;
>> +
>> /* Eeprom info. */
>> uint8_t cap;
>> uint16_t rev;
>>
> _______________________________________________
> svn-src-head at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-head
> To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"
More information about the freebsd-wireless
mailing list