Lines Matching defs:info
45 struct ieee80211_tx_info *info,
130 if (!iwl_mvm_has_new_tx_api(mvm) && info->control.hw_key &&
131 info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP40 &&
132 info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP104)
133 mh_len += info->control.hw_key->iv_len;
151 struct ieee80211_tx_info *info, u8 sta_id)
160 if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) ||
196 if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
208 tx_flags |= iwl_mvm_bt_coex_tx_prio(mvm, hdr, info, ac) <<
222 WARN_ON_ONCE(info->flags & IEEE80211_TX_CTL_AMPDU);
223 } else if (info->control.flags & IEEE80211_TX_CTRL_PORT_CTRL_PROTO) {
245 cpu_to_le16(iwl_mvm_tx_csum(mvm, skb, info, amsdu));
249 struct ieee80211_tx_info *info,
252 if (info->band == NL80211_BAND_2GHZ &&
266 struct ieee80211_tx_info *info,
276 info,
277 info->control.vif);
298 struct ieee80211_tx_info *info,
302 struct ieee80211_tx_rate *rate = &info->control.rates[0];
337 if (info->flags & IEEE80211_TX_CTL_LDPC)
339 if (u32_get_bits(info->flags, IEEE80211_TX_CTL_STBC))
345 int rate_idx = info->control.rates[0].idx;
347 result = iwl_mvm_convert_rate_idx(mvm, info, rate_idx);
350 if (info->control.antennas)
351 result |= u32_encode_bits(info->control.antennas,
354 result |= iwl_mvm_get_tx_ant(mvm, info, sta, fc);
360 struct ieee80211_tx_info *info,
366 /* info->control is only relevant for non HW rate control */
369 WARN_ONCE(info->control.rates[0].flags & IEEE80211_TX_RC_MCS &&
372 info->control.rates[0].flags,
373 info->control.rates[0].idx,
377 rate_idx = info->control.rates[0].idx;
382 if (info->band != NL80211_BAND_2GHZ ||
383 (info->flags & IEEE80211_TX_CTL_NO_CCK_RATE))
390 return iwl_mvm_convert_rate_idx(mvm, info, rate_idx);
394 struct ieee80211_tx_info *info,
397 if (unlikely(info->control.flags & IEEE80211_TX_CTRL_RATE_INJECT))
398 return iwl_mvm_get_inject_tx_rate(mvm, info, sta, fc);
400 return iwl_mvm_get_tx_rate(mvm, info, sta, fc) |
401 iwl_mvm_get_tx_ant(mvm, info, sta, fc);
408 struct ieee80211_tx_info *info,
426 * for data packets, rate info comes from the table inside the fw. This
431 !(info->control.flags & IEEE80211_TX_CTRL_RATE_INJECT))) {
446 cpu_to_le32(iwl_mvm_get_tx_rate_n_flags(mvm, info, sta, fc));
449 static inline void iwl_mvm_set_tx_cmd_pn(struct ieee80211_tx_info *info,
452 struct ieee80211_key_conf *keyconf = info->control.hw_key;
470 struct ieee80211_tx_info *info,
475 struct ieee80211_key_conf *keyconf = info->control.hw_key;
482 iwl_mvm_set_tx_cmd_ccmp(info, tx_cmd);
483 iwl_mvm_set_tx_cmd_pn(info, crypto_hdr);
516 iwl_mvm_set_tx_cmd_pn(info, crypto_hdr);
526 struct ieee80211_tx_info *info)
531 if (unlikely(info->control.flags & IEEE80211_TX_CTRL_RATE_INJECT))
563 struct ieee80211_tx_info *info, int hdrlen,
591 if (!info->control.hw_key)
595 * For data and mgmt packets rate info comes from the fw (for
600 if (unlikely(iwl_mvm_use_host_rate(mvm, mvmsta, hdr, info))) {
603 iwl_mvm_get_tx_rate_n_flags(mvm, info, sta,
615 info, amsdu);
630 info, amsdu);
648 if (info->control.hw_key)
649 iwl_mvm_set_tx_cmd_crypto(mvm, info, tx_cmd, skb, hdrlen);
651 iwl_mvm_set_tx_cmd(mvm, skb, tx_cmd, info, sta_id);
653 iwl_mvm_set_tx_cmd_rate(mvm, tx_cmd, info, sta, hdr->frame_control);
675 struct ieee80211_tx_info *info,
681 switch (info->control.vif->type) {
703 WARN_ONCE(info->control.vif->type != NL80211_IFTYPE_ADHOC,
721 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
723 iwl_mvm_vif_from_mac80211(info->control.vif);
782 struct ieee80211_tx_info info;
794 memcpy(&info, skb->cb, sizeof(info));
799 if (WARN_ON_ONCE(info.flags & IEEE80211_TX_CTL_AMPDU))
802 if (info.control.vif) {
804 iwl_mvm_vif_from_mac80211(info.control.vif);
807 if ((info.control.vif->type == NL80211_IFTYPE_P2P_DEVICE &&
809 (info.control.vif->type == NL80211_IFTYPE_STATION &&
825 } else if (info.control.vif->type ==
827 info.control.vif->type == NL80211_IFTYPE_AP ||
828 info.control.vif->type == NL80211_IFTYPE_ADHOC) {
829 u32 link_id = u32_get_bits(info.control.flags,
834 if (info.control.vif->active_links)
835 link_id = ffs(info.control.vif->active_links) - 1;
849 queue = iwl_mvm_get_ctrl_vif_queue(mvm, link, &info,
851 } else if (info.control.vif->type == NL80211_IFTYPE_MONITOR) {
867 dev_cmd = iwl_mvm_set_tx_params(mvm, skb, &info, hdrlen, NULL, sta_id,
872 /* From now on, we cannot access info->control */
1014 struct ieee80211_tx_info *info,
1052 if ((info->flags & IEEE80211_TX_CTL_AMPDU &&
1069 if (info->flags & IEEE80211_TX_CTL_AMPDU &&
1118 struct ieee80211_tx_info *info,
1192 struct ieee80211_tx_info *info,
1225 dev_cmd = iwl_mvm_set_tx_params(mvm, skb, info, hdrlen,
1236 info->flags &= ~IEEE80211_TX_STATUS_EOSP;
1249 is_ampdu = info->flags & IEEE80211_TX_CTL_AMPDU;
1274 WARN_ON_ONCE(info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM);
1279 "skb %p { len %u } info %p sta %p (if you see this please "
1281 fc, tid, txq_id, mvm, skb, skb->len, info, sta);
1312 /* From now on, we cannot access info->control */
1322 info->control.hw_key &&
1324 info->control.hw_key->iv_len : 0);
1353 struct ieee80211_tx_info info;
1367 memcpy(&info, skb->cb, sizeof(info));
1370 return iwl_mvm_tx_mpdu(mvm, skb, &info, sta, NULL);
1376 return iwl_mvm_tx_mpdu(mvm, skb, &info, sta, NULL);
1380 vif = info.control.vif;
1384 ret = iwl_mvm_tx_tso(mvm, skb, &info, sta, &mpdus_skbs);
1421 ret = iwl_mvm_tx_mpdu(mvm, skb, &info, sta,
1616 struct ieee80211_tx_info *info)
1618 struct ieee80211_tx_rate *r = &info->status.rates[0];
1624 info->status.antenna =
1627 info->band, r);
1729 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
1735 iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]);
1737 memset(&info->status, 0, sizeof(info->status));
1738 info->flags &= ~(IEEE80211_TX_STAT_ACK | IEEE80211_TX_STAT_TX_FILTERED);
1744 info->flags |= IEEE80211_TX_STAT_ACK;
1757 info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
1773 info->flags |= IEEE80211_TX_STAT_ACK;
1777 info->status.rates[0].count = tx_resp->failure_frame + 1;
1781 info);
1786 info->status.status_driver_data[1] =
1790 if (info->flags & IEEE80211_TX_CTL_AMPDU &&
1791 !(info->flags & IEEE80211_TX_STAT_ACK) &&
1792 !(info->flags & IEEE80211_TX_STAT_TX_FILTERED) && !flushed)
1793 info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
1794 info->flags &= ~IEEE80211_TX_CTL_AMPDU;
1818 info->status.tx_time =
1820 BUILD_BUG_ON(ARRAY_SIZE(info->status.status_driver_data) < 1);
1822 info->status.status_driver_data[0] =
2081 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
2083 iwl_trans_free_tx_cmd(mvm->trans, info->driver_data[1]);
2085 memset(&info->status, 0, sizeof(info->status));
2091 info->flags |= IEEE80211_TX_STAT_ACK;
2093 info->flags &= ~IEEE80211_TX_STAT_ACK;
2134 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
2146 info->flags |= IEEE80211_TX_STAT_AMPDU;
2147 memcpy(&info->status, &tx_info->status,
2149 iwl_mvm_hwrate_to_tx_status(mvm->fw, rate, info);