提交 8d5e0d58 编写于 作者: R Ron Rindjunsky 提交者: John W. Linville

mac80211: do not fragment while aggregation is in use

This patch denies the use of framentation while ampdu is used.
Signed-off-by: NRon Rindjunsky <ron.rindjunsky@intel.com>
Acked-by: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 58d0f361
...@@ -660,9 +660,8 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx) ...@@ -660,9 +660,8 @@ ieee80211_tx_h_fragment(struct ieee80211_tx_data *tx)
/* /*
* Warn when submitting a fragmented A-MPDU frame and drop it. * Warn when submitting a fragmented A-MPDU frame and drop it.
* This is an error and needs to be fixed elsewhere, but when * This scenario is handled in __ieee80211_tx_prepare but extra
* done needs to take care of monitor interfaces (injection) * caution taken here as fragmented ampdu may cause Tx stop.
* etc.
*/ */
if (WARN_ON(tx->flags & IEEE80211_TX_CTL_AMPDU || if (WARN_ON(tx->flags & IEEE80211_TX_CTL_AMPDU ||
skb_get_queue_mapping(tx->skb) >= skb_get_queue_mapping(tx->skb) >=
...@@ -981,7 +980,8 @@ __ieee80211_tx_prepare(struct ieee80211_tx_data *tx, ...@@ -981,7 +980,8 @@ __ieee80211_tx_prepare(struct ieee80211_tx_data *tx,
if (tx->flags & IEEE80211_TX_FRAGMENTED) { if (tx->flags & IEEE80211_TX_FRAGMENTED) {
if ((tx->flags & IEEE80211_TX_UNICAST) && if ((tx->flags & IEEE80211_TX_UNICAST) &&
skb->len + FCS_LEN > local->fragmentation_threshold && skb->len + FCS_LEN > local->fragmentation_threshold &&
!local->ops->set_frag_threshold) !local->ops->set_frag_threshold &&
!(info->flags & IEEE80211_TX_CTL_AMPDU))
tx->flags |= IEEE80211_TX_FRAGMENTED; tx->flags |= IEEE80211_TX_FRAGMENTED;
else else
tx->flags &= ~IEEE80211_TX_FRAGMENTED; tx->flags &= ~IEEE80211_TX_FRAGMENTED;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册