mirror of https://gitee.com/openkylin/linux.git
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:
parent
34b5321e4f
commit
97756fb1c3
|
@ -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);
|
||||||
|
|
|
@ -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];
|
||||||
|
|
Loading…
Reference in New Issue