diff options
author | sam <sam@FreeBSD.org> | 2004-04-03 00:02:17 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2004-04-03 00:02:17 +0000 |
commit | 414d361a59b12802a06aeb3caa0d83f31e063163 (patch) | |
tree | 3889b8cbc3c1cb58a8d37a9080afb8c09086b515 /sys | |
parent | 5ae38352b4a01ccc3ed3aa4743a87591c260c537 (diff) | |
download | FreeBSD-src-414d361a59b12802a06aeb3caa0d83f31e063163.zip FreeBSD-src-414d361a59b12802a06aeb3caa0d83f31e063163.tar.gz |
transmit beacon frames directly instead of defering them to a swi; there
was too much delay
Obtained from: madwifi
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ath/if_ath.c | 11 | ||||
-rw-r--r-- | sys/dev/ath/if_athvar.h | 1 |
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 6620ff9..3699e51 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -270,7 +270,6 @@ ath_attach(u_int16_t devid, struct ath_softc *sc) TASK_INIT(&sc->sc_txtask, 0, ath_tx_proc, sc); TASK_INIT(&sc->sc_rxtask, 0, ath_rx_proc, sc); - TASK_INIT(&sc->sc_swbatask, 0, ath_beacon_proc, sc); TASK_INIT(&sc->sc_rxorntask, 0, ath_rxorn_proc, sc); TASK_INIT(&sc->sc_fataltask, 0, ath_fatal_proc, sc); TASK_INIT(&sc->sc_bmisstask, 0, ath_bmiss_proc, sc); @@ -480,8 +479,14 @@ ath_intr(void *arg) taskqueue_enqueue(taskqueue_swi, &sc->sc_rxtask); if (status & HAL_INT_TX) taskqueue_enqueue(taskqueue_swi, &sc->sc_txtask); - if (status & HAL_INT_SWBA) - taskqueue_enqueue(taskqueue_swi, &sc->sc_swbatask); + if (status & HAL_INT_SWBA) { + /* + * Handle beacon transmission directly; deferring + * this is too slow to meet timing constraints + * under load. + */ + ath_beacon_proc(sc, 0); + } if (status & HAL_INT_BMISS) { sc->sc_stats.ast_bmiss++; taskqueue_enqueue(taskqueue_swi, &sc->sc_bmisstask); diff --git a/sys/dev/ath/if_athvar.h b/sys/dev/ath/if_athvar.h index 3803dab..766163d 100644 --- a/sys/dev/ath/if_athvar.h +++ b/sys/dev/ath/if_athvar.h @@ -147,7 +147,6 @@ struct ath_softc { u_int sc_bhalq; /* HAL q for outgoing beacons */ struct ath_buf *sc_bcbuf; /* beacon buffer */ struct ath_buf *sc_bufptr; /* allocated buffer ptr */ - struct task sc_swbatask; /* swba int processing */ struct task sc_bmisstask; /* bmiss int processing */ struct callout sc_cal_ch; /* callout handle for cals */ |