iwlwifi: transport layer shouldn't access the AGG SM

This is another step towards the move of tid_data from the shared
area.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
Emmanuel Grumbach 2011-11-23 10:52:20 +02:00 committed by Wey-Yi Guy
parent 34b5321e4f
commit 97756fb1c3
2 changed files with 16 additions and 21 deletions

View File

@ -377,6 +377,17 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
goto drop_unlock_sta; goto drop_unlock_sta;
tid_data = &priv->shrd->tid_data[sta_id][tid]; tid_data = &priv->shrd->tid_data[sta_id][tid];
/* aggregation is on for this <sta,tid> */
if (info->flags & IEEE80211_TX_CTL_AMPDU &&
tid_data->agg.state != IWL_AGG_ON) {
IWL_ERR(priv, "TX_CTL_AMPDU while not in AGG:"
" Tx flags = 0x%08x, agg.state = %d",
info->flags, tid_data->agg.state);
IWL_ERR(priv, "sta_id = %d, tid = %d seq_num = %d",
sta_id, tid, SEQ_TO_SN(tid_data->seq_number));
goto drop_unlock_sta;
}
seq_number = tid_data->seq_number; seq_number = tid_data->seq_number;
seq_number &= IEEE80211_SCTL_SEQ; seq_number &= IEEE80211_SCTL_SEQ;
hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG); hdr->seq_ctrl &= cpu_to_le16(IEEE80211_SCTL_FRAG);

View File

@ -1058,7 +1058,6 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
dma_addr_t txcmd_phys; dma_addr_t txcmd_phys;
dma_addr_t scratch_phys; dma_addr_t scratch_phys;
u16 len, firstlen, secondlen; u16 len, firstlen, secondlen;
u16 seq_number = 0;
u8 wait_write_ptr = 0; u8 wait_write_ptr = 0;
u8 txq_id; u8 txq_id;
bool is_agg = false; bool is_agg = false;
@ -1084,26 +1083,11 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
txq_id = txq_id =
trans_pcie->ac_to_queue[ctx][skb_get_queue_mapping(skb)]; trans_pcie->ac_to_queue[ctx][skb_get_queue_mapping(skb)];
if (ieee80211_is_data_qos(fc) && !ieee80211_is_qos_nullfunc(fc)) { /* aggregation is on for this <sta,tid> */
struct iwl_tid_data *tid_data; if (info->flags & IEEE80211_TX_CTL_AMPDU) {
tid_data = &trans->shrd->tid_data[sta_id][tid]; WARN_ON(tid >= IWL_MAX_TID_COUNT);
if (WARN_ON_ONCE(tid >= IWL_MAX_TID_COUNT)) txq_id = trans_pcie->agg_txq[sta_id][tid];
return -1; is_agg = true;
/* aggregation is on for this <sta,tid> */
if (info->flags & IEEE80211_TX_CTL_AMPDU) {
if (WARN_ON_ONCE(tid_data->agg.state != IWL_AGG_ON)) {
IWL_ERR(trans, "TX_CTL_AMPDU while not in AGG:"
" Tx flags = 0x%08x, agg.state = %d",
info->flags, tid_data->agg.state);
IWL_ERR(trans, "sta_id = %d, tid = %d "
"txq_id = %d, seq_num = %d", sta_id,
tid, trans_pcie->agg_txq[sta_id][tid],
SEQ_TO_SN(seq_number));
}
txq_id = trans_pcie->agg_txq[sta_id][tid];
is_agg = true;
}
} }
txq = &trans_pcie->txq[txq_id]; txq = &trans_pcie->txq[txq_id];