Lines Matching refs:priv

51 static void iwlagn_tx_cmd_protection(struct iwl_priv *priv,  in iwlagn_tx_cmd_protection()  argument
64 static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv, in iwlagn_tx_cmd_build_basic() argument
85 priv->lib->bt_params && in iwlagn_tx_cmd_build_basic()
86 priv->lib->bt_params->advanced_bt_coexist && in iwlagn_tx_cmd_build_basic()
109 iwlagn_tx_cmd_protection(priv, info, fc, &tx_flags); in iwlagn_tx_cmd_build_basic()
126 static void iwlagn_tx_cmd_build_rate(struct iwl_priv *priv, in iwlagn_tx_cmd_build_rate() argument
138 if (priv->wowlan) { in iwlagn_tx_cmd_build_rate()
178 &priv->nvm_data->bands[info->band], sta); in iwlagn_tx_cmd_build_rate()
192 if (priv->lib->bt_params && in iwlagn_tx_cmd_build_rate()
193 priv->lib->bt_params->advanced_bt_coexist && in iwlagn_tx_cmd_build_rate()
194 priv->bt_full_concurrent) { in iwlagn_tx_cmd_build_rate()
196 priv->mgmt_tx_ant = iwl_toggle_tx_ant(priv, priv->mgmt_tx_ant, in iwlagn_tx_cmd_build_rate()
197 first_antenna(priv->nvm_data->valid_tx_ant)); in iwlagn_tx_cmd_build_rate()
199 priv->mgmt_tx_ant = iwl_toggle_tx_ant( in iwlagn_tx_cmd_build_rate()
200 priv, priv->mgmt_tx_ant, in iwlagn_tx_cmd_build_rate()
201 priv->nvm_data->valid_tx_ant); in iwlagn_tx_cmd_build_rate()
202 rate_flags |= iwl_ant_idx_to_flags(priv->mgmt_tx_ant); in iwlagn_tx_cmd_build_rate()
208 static void iwlagn_tx_cmd_build_hwcrypto(struct iwl_priv *priv, in iwlagn_tx_cmd_build_hwcrypto() argument
237 IWL_DEBUG_TX(priv, "Configuring packet for WEP encryption " in iwlagn_tx_cmd_build_hwcrypto()
242 IWL_ERR(priv, "Unknown encode cipher %x\n", keyconf->cipher); in iwlagn_tx_cmd_build_hwcrypto()
279 int iwlagn_tx_skb(struct iwl_priv *priv, in iwlagn_tx_skb() argument
286 struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; in iwlagn_tx_skb()
299 if (iwl_is_rfkill(priv)) { in iwlagn_tx_skb()
300 IWL_DEBUG_DROP(priv, "Dropping - RF KILL\n"); in iwlagn_tx_skb()
308 IWL_DEBUG_TX(priv, "Sending AUTH frame\n"); in iwlagn_tx_skb()
310 IWL_DEBUG_TX(priv, "Sending ASSOC frame\n"); in iwlagn_tx_skb()
312 IWL_DEBUG_TX(priv, "Sending REASSOC frame\n"); in iwlagn_tx_skb()
317 rcu_dereference(priv->noa_data); in iwlagn_tx_skb()
337 IWL_DEBUG_DROP(priv, "Dropping - INVALID STATION: %pM\n", in iwlagn_tx_skb()
361 iwl_sta_modify_sleep_tx_count(priv, sta_id, 1); in iwlagn_tx_skb()
364 dev_cmd = iwl_trans_alloc_tx_cmd(priv->trans); in iwlagn_tx_skb()
378 iwlagn_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb); in iwlagn_tx_skb()
381 iwlagn_tx_cmd_build_basic(priv, skb, tx_cmd, info, hdr, sta_id); in iwlagn_tx_skb()
383 iwlagn_tx_cmd_build_rate(priv, tx_cmd, info, sta, fc); in iwlagn_tx_skb()
391 spin_lock(&priv->sta_lock); in iwlagn_tx_skb()
400 tid_data = &priv->tid_data[sta_id][tid]; in iwlagn_tx_skb()
405 IWL_ERR(priv, in iwlagn_tx_skb()
408 IWL_ERR(priv, "sta_id = %d, tid = %d seq_num = %d\n", in iwlagn_tx_skb()
439 txq_id = priv->tid_data[sta_id][tid].agg.txq_id; in iwlagn_tx_skb()
450 priv->queue_to_mac80211[txq_id] != info->hw_queue); in iwlagn_tx_skb()
452 IWL_DEBUG_TX(priv, "TX to [%d|%d] Q:%d - seq: 0x%x\n", sta_id, tid, in iwlagn_tx_skb()
455 if (iwl_trans_tx(priv->trans, skb, dev_cmd, txq_id)) in iwlagn_tx_skb()
459 priv->tid_data[sta_id][tid].seq_number = seq_number; in iwlagn_tx_skb()
461 spin_unlock(&priv->sta_lock); in iwlagn_tx_skb()
477 iwl_trans_free_tx_cmd(priv->trans, dev_cmd); in iwlagn_tx_skb()
478 spin_unlock(&priv->sta_lock); in iwlagn_tx_skb()
483 static int iwlagn_alloc_agg_txq(struct iwl_priv *priv, int mq) in iwlagn_alloc_agg_txq() argument
488 q < priv->cfg->base_params->num_of_queues; q++) { in iwlagn_alloc_agg_txq()
489 if (!test_and_set_bit(q, priv->agg_q_alloc)) { in iwlagn_alloc_agg_txq()
490 priv->queue_to_mac80211[q] = mq; in iwlagn_alloc_agg_txq()
498 static void iwlagn_dealloc_agg_txq(struct iwl_priv *priv, int q) in iwlagn_dealloc_agg_txq() argument
500 clear_bit(q, priv->agg_q_alloc); in iwlagn_dealloc_agg_txq()
501 priv->queue_to_mac80211[q] = IWL_INVALID_MAC80211_QUEUE; in iwlagn_dealloc_agg_txq()
504 int iwlagn_tx_agg_stop(struct iwl_priv *priv, struct ieee80211_vif *vif, in iwlagn_tx_agg_stop() argument
514 IWL_ERR(priv, "Invalid station for AGG tid %d\n", tid); in iwlagn_tx_agg_stop()
518 spin_lock_bh(&priv->sta_lock); in iwlagn_tx_agg_stop()
520 tid_data = &priv->tid_data[sta_id][tid]; in iwlagn_tx_agg_stop()
531 IWL_DEBUG_HT(priv, "AGG stop before setup done\n"); in iwlagn_tx_agg_stop()
538 IWL_DEBUG_HT(priv, "AGG stop before AGG became operational\n"); in iwlagn_tx_agg_stop()
543 IWL_WARN(priv, in iwlagn_tx_agg_stop()
546 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_stop()
553 if (!test_bit(txq_id, priv->agg_q_alloc)) { in iwlagn_tx_agg_stop()
554 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_tx_agg_stop()
558 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_tx_agg_stop()
563 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_stop()
567 IWL_DEBUG_TX_QUEUES(priv, "Can proceed: ssn = next_recl = %d\n", in iwlagn_tx_agg_stop()
573 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_stop()
575 if (test_bit(txq_id, priv->agg_q_alloc)) { in iwlagn_tx_agg_stop()
583 iwl_trans_txq_disable(priv->trans, txq_id, true); in iwlagn_tx_agg_stop()
585 IWL_DEBUG_TX_QUEUES(priv, "Don't disable tx agg: %d\n", in iwlagn_tx_agg_stop()
587 iwlagn_dealloc_agg_txq(priv, txq_id); in iwlagn_tx_agg_stop()
595 int iwlagn_tx_agg_start(struct iwl_priv *priv, struct ieee80211_vif *vif, in iwlagn_tx_agg_start() argument
602 IWL_DEBUG_HT(priv, "TX AGG request on ra = %pM tid = %d\n", in iwlagn_tx_agg_start()
607 IWL_ERR(priv, "Start AGG on invalid station\n"); in iwlagn_tx_agg_start()
613 if (priv->tid_data[sta_id][tid].agg.state != IWL_AGG_OFF) { in iwlagn_tx_agg_start()
614 IWL_ERR(priv, "Start AGG when state is not IWL_AGG_OFF !\n"); in iwlagn_tx_agg_start()
618 txq_id = iwlagn_alloc_agg_txq(priv, ctx->ac_to_queue[tid_to_ac[tid]]); in iwlagn_tx_agg_start()
620 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_tx_agg_start()
626 ret = iwl_sta_tx_modify_enable_tid(priv, sta_id, tid); in iwlagn_tx_agg_start()
630 spin_lock_bh(&priv->sta_lock); in iwlagn_tx_agg_start()
631 tid_data = &priv->tid_data[sta_id][tid]; in iwlagn_tx_agg_start()
638 IWL_DEBUG_TX_QUEUES(priv, "Can proceed: ssn = next_recl = %d\n", in iwlagn_tx_agg_start()
643 IWL_DEBUG_TX_QUEUES(priv, "Can't proceed: ssn %d, " in iwlagn_tx_agg_start()
649 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_start()
654 int iwlagn_tx_agg_flush(struct iwl_priv *priv, struct ieee80211_vif *vif, in iwlagn_tx_agg_flush() argument
666 spin_lock_bh(&priv->sta_lock); in iwlagn_tx_agg_flush()
668 tid_data = &priv->tid_data[sta_id][tid]; in iwlagn_tx_agg_flush()
671 IWL_DEBUG_TX_QUEUES(priv, "Flush AGG: sta %d tid %d q %d state %d\n", in iwlagn_tx_agg_flush()
676 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_flush()
678 if (iwlagn_txfifo_flush(priv, BIT(txq_id))) in iwlagn_tx_agg_flush()
679 IWL_ERR(priv, "Couldn't flush the AGG queue\n"); in iwlagn_tx_agg_flush()
681 if (test_bit(txq_id, priv->agg_q_alloc)) { in iwlagn_tx_agg_flush()
689 iwl_trans_txq_disable(priv->trans, txq_id, true); in iwlagn_tx_agg_flush()
691 IWL_DEBUG_TX_QUEUES(priv, "Don't disable tx agg: %d\n", in iwlagn_tx_agg_flush()
693 iwlagn_dealloc_agg_txq(priv, txq_id); in iwlagn_tx_agg_flush()
699 int iwlagn_tx_agg_oper(struct iwl_priv *priv, struct ieee80211_vif *vif, in iwlagn_tx_agg_oper() argument
709 spin_lock_bh(&priv->sta_lock); in iwlagn_tx_agg_oper()
710 ssn = priv->tid_data[sta_priv->sta_id][tid].agg.ssn; in iwlagn_tx_agg_oper()
711 q = priv->tid_data[sta_priv->sta_id][tid].agg.txq_id; in iwlagn_tx_agg_oper()
712 priv->tid_data[sta_priv->sta_id][tid].agg.state = IWL_AGG_ON; in iwlagn_tx_agg_oper()
713 spin_unlock_bh(&priv->sta_lock); in iwlagn_tx_agg_oper()
717 iwl_trans_txq_enable(priv->trans, q, fifo, sta_priv->sta_id, tid, in iwlagn_tx_agg_oper()
740 if (priv->hw_params.use_rts_for_aggregation) { in iwlagn_tx_agg_oper()
749 priv->agg_tids_count++; in iwlagn_tx_agg_oper()
750 IWL_DEBUG_HT(priv, "priv->agg_tids_count = %u\n", in iwlagn_tx_agg_oper()
751 priv->agg_tids_count); in iwlagn_tx_agg_oper()
756 IWL_DEBUG_HT(priv, "Tx aggregation enabled on ra = %pM tid = %d\n", in iwlagn_tx_agg_oper()
759 return iwl_send_lq_cmd(priv, ctx, in iwlagn_tx_agg_oper()
763 static void iwlagn_check_ratid_empty(struct iwl_priv *priv, int sta_id, u8 tid) in iwlagn_check_ratid_empty() argument
765 struct iwl_tid_data *tid_data = &priv->tid_data[sta_id][tid]; in iwlagn_check_ratid_empty()
770 lockdep_assert_held(&priv->sta_lock); in iwlagn_check_ratid_empty()
772 addr = priv->stations[sta_id].sta.sta.addr; in iwlagn_check_ratid_empty()
773 ctx = priv->stations[sta_id].ctxid; in iwlagn_check_ratid_empty()
774 vif = priv->contexts[ctx].vif; in iwlagn_check_ratid_empty()
776 switch (priv->tid_data[sta_id][tid].agg.state) { in iwlagn_check_ratid_empty()
780 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_check_ratid_empty()
783 iwl_trans_txq_disable(priv->trans, in iwlagn_check_ratid_empty()
785 iwlagn_dealloc_agg_txq(priv, tid_data->agg.txq_id); in iwlagn_check_ratid_empty()
793 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_check_ratid_empty()
805 static void iwlagn_non_agg_tx_status(struct iwl_priv *priv, in iwlagn_non_agg_tx_status() argument
819 ieee80211_sta_block_awake(priv->hw, sta, false); in iwlagn_non_agg_tx_status()
827 static void iwlagn_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags, in iwlagn_hwrate_to_tx_control() argument
887 static void iwlagn_count_agg_tx_err_status(struct iwl_priv *priv, u16 status) in iwlagn_count_agg_tx_err_status() argument
893 priv->reply_agg_tx_stats.underrun++; in iwlagn_count_agg_tx_err_status()
896 priv->reply_agg_tx_stats.bt_prio++; in iwlagn_count_agg_tx_err_status()
899 priv->reply_agg_tx_stats.few_bytes++; in iwlagn_count_agg_tx_err_status()
902 priv->reply_agg_tx_stats.abort++; in iwlagn_count_agg_tx_err_status()
905 priv->reply_agg_tx_stats.last_sent_ttl++; in iwlagn_count_agg_tx_err_status()
908 priv->reply_agg_tx_stats.last_sent_try++; in iwlagn_count_agg_tx_err_status()
911 priv->reply_agg_tx_stats.last_sent_bt_kill++; in iwlagn_count_agg_tx_err_status()
914 priv->reply_agg_tx_stats.scd_query++; in iwlagn_count_agg_tx_err_status()
917 priv->reply_agg_tx_stats.bad_crc32++; in iwlagn_count_agg_tx_err_status()
920 priv->reply_agg_tx_stats.response++; in iwlagn_count_agg_tx_err_status()
923 priv->reply_agg_tx_stats.dump_tx++; in iwlagn_count_agg_tx_err_status()
926 priv->reply_agg_tx_stats.delay_tx++; in iwlagn_count_agg_tx_err_status()
929 priv->reply_agg_tx_stats.unknown++; in iwlagn_count_agg_tx_err_status()
940 static void iwl_rx_reply_tx_agg(struct iwl_priv *priv, in iwl_rx_reply_tx_agg() argument
948 struct iwl_ht_agg *agg = &priv->tid_data[sta_id][tid].agg; in iwl_rx_reply_tx_agg()
955 IWL_DEBUG_TX_REPLY(priv, in iwl_rx_reply_tx_agg()
966 priv->lib->bt_params && in iwl_rx_reply_tx_agg()
967 priv->lib->bt_params->advanced_bt_coexist) { in iwl_rx_reply_tx_agg()
968 IWL_DEBUG_COEX(priv, "receive reply tx w/ bt_kill\n"); in iwl_rx_reply_tx_agg()
974 IWL_DEBUG_TX_REPLY(priv, "TXQ %d initial_rate 0x%x ssn %d frm_cnt %d\n", in iwl_rx_reply_tx_agg()
985 iwlagn_count_agg_tx_err_status(priv, fstatus); in iwl_rx_reply_tx_agg()
992 IWL_DEBUG_TX_REPLY(priv, in iwl_rx_reply_tx_agg()
1028 static void iwlagn_count_tx_err_status(struct iwl_priv *priv, u16 status) in iwlagn_count_tx_err_status() argument
1034 priv->reply_tx_stats.pp_delay++; in iwlagn_count_tx_err_status()
1037 priv->reply_tx_stats.pp_few_bytes++; in iwlagn_count_tx_err_status()
1040 priv->reply_tx_stats.pp_bt_prio++; in iwlagn_count_tx_err_status()
1043 priv->reply_tx_stats.pp_quiet_period++; in iwlagn_count_tx_err_status()
1046 priv->reply_tx_stats.pp_calc_ttak++; in iwlagn_count_tx_err_status()
1049 priv->reply_tx_stats.int_crossed_retry++; in iwlagn_count_tx_err_status()
1052 priv->reply_tx_stats.short_limit++; in iwlagn_count_tx_err_status()
1055 priv->reply_tx_stats.long_limit++; in iwlagn_count_tx_err_status()
1058 priv->reply_tx_stats.fifo_underrun++; in iwlagn_count_tx_err_status()
1061 priv->reply_tx_stats.drain_flow++; in iwlagn_count_tx_err_status()
1064 priv->reply_tx_stats.rfkill_flush++; in iwlagn_count_tx_err_status()
1067 priv->reply_tx_stats.life_expire++; in iwlagn_count_tx_err_status()
1070 priv->reply_tx_stats.dest_ps++; in iwlagn_count_tx_err_status()
1073 priv->reply_tx_stats.host_abort++; in iwlagn_count_tx_err_status()
1076 priv->reply_tx_stats.bt_retry++; in iwlagn_count_tx_err_status()
1079 priv->reply_tx_stats.sta_invalid++; in iwlagn_count_tx_err_status()
1082 priv->reply_tx_stats.frag_drop++; in iwlagn_count_tx_err_status()
1085 priv->reply_tx_stats.tid_disable++; in iwlagn_count_tx_err_status()
1088 priv->reply_tx_stats.fifo_flush++; in iwlagn_count_tx_err_status()
1091 priv->reply_tx_stats.insuff_cf_poll++; in iwlagn_count_tx_err_status()
1094 priv->reply_tx_stats.fail_hw_drop++; in iwlagn_count_tx_err_status()
1097 priv->reply_tx_stats.sta_color_mismatch++; in iwlagn_count_tx_err_status()
1100 priv->reply_tx_stats.unknown++; in iwlagn_count_tx_err_status()
1105 static void iwlagn_set_tx_status(struct iwl_priv *priv, in iwlagn_set_tx_status() argument
1115 iwlagn_hwrate_to_tx_control(priv, le32_to_cpu(tx_resp->rate_n_flags), in iwlagn_set_tx_status()
1118 iwlagn_count_tx_err_status(priv, status); in iwlagn_set_tx_status()
1121 static void iwl_check_abort_status(struct iwl_priv *priv, in iwl_check_abort_status() argument
1125 IWL_ERR(priv, "Tx flush command to flush out all frames\n"); in iwl_check_abort_status()
1126 if (!test_bit(STATUS_EXIT_PENDING, &priv->status)) in iwl_check_abort_status()
1127 queue_work(priv->workqueue, &priv->tx_flush); in iwl_check_abort_status()
1131 void iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb) in iwlagn_rx_reply_tx() argument
1155 spin_lock_bh(&priv->sta_lock); in iwlagn_rx_reply_tx()
1160 if (txq_id != priv->tid_data[sta_id][tid].agg.txq_id) in iwlagn_rx_reply_tx()
1161 IWL_ERR(priv, "txq_id mismatch: %d %d\n", txq_id, in iwlagn_rx_reply_tx()
1162 priv->tid_data[sta_id][tid].agg.txq_id); in iwlagn_rx_reply_tx()
1163 iwl_rx_reply_tx_agg(priv, tx_resp); in iwlagn_rx_reply_tx()
1188 priv->tid_data[sta_id][tid].next_reclaimed = in iwlagn_rx_reply_tx()
1190 IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", in iwlagn_rx_reply_tx()
1194 iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs); in iwlagn_rx_reply_tx()
1196 iwlagn_check_ratid_empty(priv, sta_id, tid); in iwlagn_rx_reply_tx()
1204 priv->last_seq_ctl = tx_resp->seq_ctl; in iwlagn_rx_reply_tx()
1208 iwl_trans_free_tx_cmd(priv->trans, in iwlagn_rx_reply_tx()
1217 priv->passive_no_rx = true; in iwlagn_rx_reply_tx()
1218 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_rx_reply_tx()
1220 ieee80211_stop_queues(priv->hw); in iwlagn_rx_reply_tx()
1222 IWL_DEBUG_TX_REPLY(priv, in iwlagn_rx_reply_tx()
1231 IWL_DEBUG_TX_REPLY(priv, in iwlagn_rx_reply_tx()
1239 iwlagn_set_tx_status(priv, IEEE80211_SKB_CB(skb), in iwlagn_rx_reply_tx()
1242 iwlagn_non_agg_tx_status(priv, ctx, hdr->addr1); in iwlagn_rx_reply_tx()
1248 priv->tid_data[sta_id][tid].next_reclaimed = in iwlagn_rx_reply_tx()
1250 IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", in iwlagn_rx_reply_tx()
1255 IWL_ERR(priv, "Q: %d, freed %d\n", txq_id, freed); in iwlagn_rx_reply_tx()
1257 IWL_DEBUG_TX_REPLY(priv, "TXQ %d status %s (0x%08x)\n", txq_id, in iwlagn_rx_reply_tx()
1260 IWL_DEBUG_TX_REPLY(priv, in iwlagn_rx_reply_tx()
1268 iwl_check_abort_status(priv, tx_resp->frame_count, status); in iwlagn_rx_reply_tx()
1269 spin_unlock_bh(&priv->sta_lock); in iwlagn_rx_reply_tx()
1273 ieee80211_tx_status(priv->hw, skb); in iwlagn_rx_reply_tx()
1283 void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv, in iwlagn_rx_reply_compressed_ba() argument
1302 if (scd_flow >= priv->cfg->base_params->num_of_queues) { in iwlagn_rx_reply_compressed_ba()
1303 IWL_ERR(priv, in iwlagn_rx_reply_compressed_ba()
1310 agg = &priv->tid_data[sta_id][tid].agg; in iwlagn_rx_reply_compressed_ba()
1312 spin_lock_bh(&priv->sta_lock); in iwlagn_rx_reply_compressed_ba()
1316 IWL_ERR(priv, "Received BA when not expected\n"); in iwlagn_rx_reply_compressed_ba()
1317 spin_unlock_bh(&priv->sta_lock); in iwlagn_rx_reply_compressed_ba()
1328 IWL_DEBUG_TX_QUEUES(priv, in iwlagn_rx_reply_compressed_ba()
1331 spin_unlock_bh(&priv->sta_lock); in iwlagn_rx_reply_compressed_ba()
1340 iwl_trans_reclaim(priv->trans, scd_flow, ba_resp_scd_ssn, in iwlagn_rx_reply_compressed_ba()
1343 IWL_DEBUG_TX_REPLY(priv, "REPLY_COMPRESSED_BA [%d] Received from %pM, " in iwlagn_rx_reply_compressed_ba()
1348 IWL_DEBUG_TX_REPLY(priv, "TID = %d, SeqCtl = %d, bitmap = 0x%llx, " in iwlagn_rx_reply_compressed_ba()
1360 IWL_DEBUG_TX_REPLY(priv, in iwlagn_rx_reply_compressed_ba()
1370 priv->tid_data[sta_id][tid].next_reclaimed = ba_resp_scd_ssn; in iwlagn_rx_reply_compressed_ba()
1372 iwlagn_check_ratid_empty(priv, sta_id, tid); in iwlagn_rx_reply_compressed_ba()
1384 iwl_trans_free_tx_cmd(priv->trans, info->driver_data[1]); in iwlagn_rx_reply_compressed_ba()
1401 iwlagn_hwrate_to_tx_control(priv, agg->rate_n_flags, in iwlagn_rx_reply_compressed_ba()
1406 spin_unlock_bh(&priv->sta_lock); in iwlagn_rx_reply_compressed_ba()
1410 ieee80211_tx_status(priv->hw, skb); in iwlagn_rx_reply_compressed_ba()