17 #include <linux/export.h>
27 if (sdata->
u.
mgd.ht_capa_mask.cap_info & le_flag) {
28 if (!(sdata->
u.
mgd.ht_capa.cap_info & le_flag))
36 u8 *scaps = (
u8 *)(&sdata->
u.
mgd.ht_capa.mcs.rx_mask);
56 ht_cap->
mcs.rx_mask[
i] &= ~m;
58 ht_cap->
mcs.rx_mask[
i] |= (m & scaps[
i]);
69 if (sdata->
u.
mgd.ht_capa_mask.ampdu_params_info &
71 u8 n = sdata->
u.
mgd.ht_capa.ampdu_params_info
73 if (n < ht_cap->ampdu_factor)
78 if (sdata->
u.
mgd.ht_capa_mask.ampdu_params_info &
80 u8 n = (sdata->
u.
mgd.ht_capa.ampdu_params_info &
95 int i, max_tx_streams;
99 memset(ht_cap, 0,
sizeof(*ht_cap));
101 if (!ht_cap_ie || !sband->
ht_cap.ht_supported)
136 tx_mcs_set_cap = sband->
ht_cap.mcs.tx_params;
139 ht_cap->
mcs.tx_params = ht_cap_ie->
mcs.tx_params;
160 for (i = 0; i < max_tx_streams; i++)
161 ht_cap->
mcs.rx_mask[i] =
162 sband->
ht_cap.mcs.rx_mask[i] & ht_cap_ie->
mcs.rx_mask[i];
167 ht_cap->
mcs.rx_mask[i] =
168 sband->
ht_cap.mcs.rx_mask[i] &
169 ht_cap_ie->
mcs.rx_mask[i];
172 if (sband->
ht_cap.mcs.rx_mask[32/8] & ht_cap_ie->
mcs.rx_mask[32/8] & 1)
173 ht_cap->
mcs.rx_mask[32/8] |= 1;
230 spin_lock_bh(&sta->
lock);
238 spin_unlock_bh(&sta->
lock);
244 tid_tx = rcu_dereference_protected_tid_tx(sta, tid);
263 skb = dev_alloc_skb(
sizeof(*mgmt) + local->
hw.extra_tx_headroom);
267 skb_reserve(skb, local->
hw.extra_tx_headroom);
284 skb_put(skb, 1 +
sizeof(mgmt->
u.action.u.delba));
288 params = (
u16)(initiator << 11);
289 params |= (
u16)(tid << 12);
292 mgmt->
u.action.u.delba.reason_code =
cpu_to_le16(reason_code);
309 mgmt->
sa, initiator ?
"initiator" :
"recipient",
330 skb = dev_alloc_skb(27 + local->
hw.extra_tx_headroom);
334 skb_reserve(skb, local->
hw.extra_tx_headroom);
335 action_frame = (
void *)
skb_put(skb, 27);
348 action_frame->
u.action.u.ht_smps.smps_control =
352 action_frame->
u.action.u.ht_smps.smps_control =
356 action_frame->
u.action.u.ht_smps.smps_control =
363 ieee80211_tx_skb(sdata, skb);
372 u.mgd.request_smps_work);
390 sdata->
u.
mgd.driver_smps_mode = smps_mode;
393 &sdata->
u.
mgd.request_smps_work);