31#define WPI_RX_RADIOTAP_PRESENT \
32 ((1 << IEEE80211_RADIOTAP_TSFT) | \
33 (1 << IEEE80211_RADIOTAP_FLAGS) | \
34 (1 << IEEE80211_RADIOTAP_RATE) | \
35 (1 << IEEE80211_RADIOTAP_CHANNEL) | \
36 (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) | \
37 (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) | \
38 (1 << IEEE80211_RADIOTAP_ANTENNA))
48#define WPI_TX_RADIOTAP_PRESENT \
49 ((1 << IEEE80211_RADIOTAP_FLAGS) | \
50 (1 << IEEE80211_RADIOTAP_RATE) | \
51 (1 << IEEE80211_RADIOTAP_CHANNEL))
65 struct ieee80211_node *
ni;
98 struct ieee80211_node
ni;
101#define WPI_NODE(ni) ((struct wpi_node *)(ni))
109#define WPI_SAMPLES_COUNT 5
118 struct ieee80211_node *
ni;
132#define WPI_VAP_KEY(kid) (1 << kid)
135 enum ieee80211_state, int);
138 const struct ieee80211_rx_stats *,
141#define WPI_VAP(vap) ((struct wpi_vap *)(vap))
143#define WPI_VAP_LOCK_INIT(_wvp) \
144 mtx_init(&(_wvp)->wv_mtx, "lock for wv_bcbuf/wv_boff structures", \
146#define WPI_VAP_LOCK(_wvp) mtx_lock(&(_wvp)->wv_mtx)
147#define WPI_VAP_UNLOCK(_wvp) mtx_unlock(&(_wvp)->wv_mtx)
148#define WPI_VAP_LOCK_ASSERT(_wvp) mtx_assert(&(_wvp)->wv_mtx, MA_OWNED)
149#define WPI_VAP_LOCK_DESTROY(_wvp) mtx_destroy(&(_wvp)->wv_mtx)
174 struct ieee80211_ratectl_tx_status
sc_txs;
257#define WPI_LOCK_INIT(_sc) \
258 mtx_init(&(_sc)->sc_mtx, device_get_nameunit((_sc)->sc_dev), \
259 MTX_NETWORK_LOCK, MTX_DEF)
260#define WPI_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
261#define WPI_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
262#define WPI_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->sc_mtx, MA_OWNED)
263#define WPI_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_mtx)
265#define WPI_RXON_LOCK_INIT(_sc) \
266 mtx_init(&(_sc)->rxon_mtx, "lock for wpi_rxon structure", NULL, MTX_DEF)
267#define WPI_RXON_LOCK(_sc) mtx_lock(&(_sc)->rxon_mtx)
268#define WPI_RXON_UNLOCK(_sc) mtx_unlock(&(_sc)->rxon_mtx)
269#define WPI_RXON_LOCK_ASSERT(_sc) mtx_assert(&(_sc)->rxon_mtx, MA_OWNED)
270#define WPI_RXON_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->rxon_mtx)
272#define WPI_TX_LOCK_INIT(_sc) \
273 mtx_init(&(_sc)->tx_mtx, "tx path lock", NULL, MTX_DEF)
274#define WPI_TX_LOCK(_sc) mtx_lock(&(_sc)->tx_mtx)
275#define WPI_TX_UNLOCK(_sc) mtx_unlock(&(_sc)->tx_mtx)
276#define WPI_TX_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->tx_mtx)
278#define WPI_NT_LOCK_INIT(_sc) \
279 mtx_init(&(_sc)->nt_mtx, "node table lock", NULL, MTX_DEF)
280#define WPI_NT_LOCK(_sc) mtx_lock(&(_sc)->nt_mtx)
281#define WPI_NT_UNLOCK(_sc) mtx_unlock(&(_sc)->nt_mtx)
282#define WPI_NT_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->nt_mtx)
284#define WPI_TXQ_LOCK_INIT(_sc) \
285 mtx_init(&(_sc)->txq_mtx, "txq/cmdq lock", NULL, MTX_DEF)
286#define WPI_TXQ_LOCK(_sc) mtx_lock(&(_sc)->txq_mtx)
287#define WPI_TXQ_UNLOCK(_sc) mtx_unlock(&(_sc)->txq_mtx)
288#define WPI_TXQ_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->txq_mtx)
290#define WPI_TXQ_STATE_LOCK_INIT(_sc) \
291 mtx_init(&(_sc)->txq_state_mtx, "txq state lock", NULL, MTX_DEF)
292#define WPI_TXQ_STATE_LOCK(_sc) mtx_lock(&(_sc)->txq_state_mtx)
293#define WPI_TXQ_STATE_UNLOCK(_sc) mtx_unlock(&(_sc)->txq_state_mtx)
294#define WPI_TXQ_STATE_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->txq_state_mtx)
#define WPI_DRV_NTXQUEUES
#define WPI_POWER_GROUPS_COUNT
#define WPI_TX_RING_COUNT
#define WPI_RX_RING_COUNT
#define WPI_CHAN_BANDS_COUNT
#define WPI_MAX_CHAN_PER_BAND
#define WPI_SAMPLES_COUNT
struct wpi_tx_radiotap_header __packed
struct wpi_rx_radiotap_header __aligned(8)
struct ieee80211_node * ni
struct wpi_power_sample samples[WPI_SAMPLES_COUNT]
struct wpi_rx_data data[WPI_RX_RING_COUNT]
struct wpi_dma_info desc_dma
struct task sc_radioon_task
int8_t maxpwr[IEEE80211_CHAN_MAX]
struct callout watchdog_rfkill
struct wpi_shared * shared
const struct firmware * fw_fp
struct ieee80211com sc_ic
struct callout tx_timeout
struct wpi_tx_radiotap_header sc_txtap
struct task sc_radiooff_task
void(* sc_update_rx_ring)(struct wpi_softc *)
struct wpi_dma_info fw_dma
void(* sc_node_free)(struct ieee80211_node *)
struct wpi_power_group groups[WPI_POWER_GROUPS_COUNT]
void(* sc_update_tx_ring)(struct wpi_softc *, struct wpi_tx_ring *)
struct wpi_rx_radiotap_header sc_rxtap
struct wpi_eeprom_chan eeprom_channels[WPI_CHAN_BANDS_COUNT][WPI_MAX_CHAN_PER_BAND]
struct wpi_tx_ring txq[WPI_DRV_NTXQUEUES]
struct ieee80211_ratectl_tx_status sc_txs
struct callout scan_timeout
struct wpi_dma_info shared_dma
struct ieee80211_node * ni
struct wpi_dma_info cmd_dma
struct wpi_tx_desc * desc
struct wpi_tx_data data[WPI_TX_RING_COUNT]
struct wpi_dma_info desc_dma
int(* wv_newstate)(struct ieee80211vap *, enum ieee80211_state, int)
void(* wv_recv_mgmt)(struct ieee80211_node *, struct mbuf *, int, const struct ieee80211_rx_stats *, int, int)
struct ieee80211vap wv_vap