d HT channel width (20/40MHz) update processing + * ic_restart_task - deferred device restart + +The following are a list of tasks which are per-VAP and are defined in +struct ieee80211vap . + + * iv_swbmiss_task - deferred per-vap beacon miss processing + * iv_nstate_task (with iv_nstates, iv_nstate_args) - VAP state transition + handling tasks + * iv_wme_task - deferred WME (QoS configuration) update + * iv_slot_task - deferred slot time update + * iv_erp_protmode_task - deferred ERP/11g protection mode update + * iv_preamble_task - deferred 802.11b preamble update + * iv_ht_protmode_update - deferred 802.11n protection mode update + +## Future work + + * There's currently no way to schedule multiple instances of a task + with some state into the taskqueue. Eg, the newstate task used to "miss" + state changes; it now works around this by having an array of newstate task + entries. + + * The task API is very much a thin wrapper around FreeBSD's taskqueue API. + It really should become a platform API which is defined and implemented + in ieee80211_freebsd.[ch]. + + * Tasks are fire and forget. There's currently no way for the submitter + to be called when thas task runs or is canceled; it can only run and + then block via calling drain until its called or cancelled. + + * There's currently no way to suspend transmit and receive handling + around state processing. This is not always desirable for packet + performance and latency reasons but there are cases where this + would be desirable (eg a channel width change would benefit from + stopping and queueing transmit, waiting for the driver to finish + transmitting, then change the channel width and then unblock + transmit to continue.) diff --git a/sys/net80211/README.md b/sys/net80211/README.md index be704185f43f..c47e27a10219 100644 --- a/sys/net80211/README.md +++ b/sys/net80211/README.md @@ -101,7 +101,7 @@ with the protocol definitions. * Debugging - (@ref md_net80211_DEBUG) * Top-level device layout (ieee80211com) * Data / Control Path Overview (@ref md_net80211_DATAPATH_TRANSMIT), (@ref md_net80211_DATAPATH_RECEIVE) - * Deferred work + * Deferred work (@ref md_net80211_DEFERRED_WORK) * Regulatory * Virtual interfaces * Operating Modes