diff options
Diffstat (limited to 'package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch')
-rw-r--r-- | package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch deleted file mode 100644 index 84f2732b22..0000000000 --- a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch +++ /dev/null @@ -1,173 +0,0 @@ -From 5edb05afebba8f488a30db29550e55c42eea6d6a Mon Sep 17 00:00:00 2001 -From: Stanislaw Gruszka <sgruszka@redhat.com> -Date: Wed, 15 Feb 2017 10:25:06 +0100 -Subject: [PATCH 10/19] rt2x00: separte filling tx status from rt2x00lib_txdone - -This makes rt2x00lib_txdone a bit simpler and will allow to reuse code -in different variant of txdone which I'm preparing. - -Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> -Signed-off-by: Kalle Valo <kvalo@codeaurora.org> ---- - drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 141 +++++++++++++------------ - 1 file changed, 76 insertions(+), 65 deletions(-) - ---- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c -@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_s - return ret; - } - --void rt2x00lib_txdone(struct queue_entry *entry, -- struct txdone_entry_desc *txdesc) -+static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, -+ struct ieee80211_tx_info *tx_info, -+ struct skb_frame_desc *skbdesc, -+ struct txdone_entry_desc *txdesc, -+ bool success) - { -- struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -- struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); -- struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); -- unsigned int header_length, i; - u8 rate_idx, rate_flags, retry_rates; -- u8 skbdesc_flags = skbdesc->flags; -- bool success; -- -- /* -- * Unmap the skb. -- */ -- rt2x00queue_unmap_skb(entry); -- -- /* -- * Remove the extra tx headroom from the skb. -- */ -- skb_pull(entry->skb, rt2x00dev->extra_tx_headroom); -- -- /* -- * Signal that the TX descriptor is no longer in the skb. -- */ -- skbdesc->flags &= ~SKBDESC_DESC_IN_SKB; -- -- /* -- * Determine the length of 802.11 header. -- */ -- header_length = ieee80211_get_hdrlen_from_skb(entry->skb); -- -- /* -- * Remove L2 padding which was added during -- */ -- if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) -- rt2x00queue_remove_l2pad(entry->skb, header_length); -- -- /* -- * If the IV/EIV data was stripped from the frame before it was -- * passed to the hardware, we should now reinsert it again because -- * mac80211 will expect the same data to be present it the -- * frame as it was passed to us. -- */ -- if (rt2x00_has_cap_hw_crypto(rt2x00dev)) -- rt2x00crypto_tx_insert_iv(entry->skb, header_length); -- -- /* -- * Send frame to debugfs immediately, after this call is completed -- * we are going to overwrite the skb->cb array. -- */ -- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); -- -- /* -- * Determine if the frame has been successfully transmitted and -- * remove BARs from our check list while checking for their -- * TX status. -- */ -- success = -- rt2x00lib_txdone_bar_status(entry) || -- test_bit(TXDONE_SUCCESS, &txdesc->flags) || -- test_bit(TXDONE_UNKNOWN, &txdesc->flags); -- -- /* -- * Update TX statistics. -- */ -- rt2x00dev->link.qual.tx_success += success; -- rt2x00dev->link.qual.tx_failed += !success; -+ int i; - - rate_idx = skbdesc->tx_rate_idx; - rate_flags = skbdesc->tx_rate_flags; -@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry - else - rt2x00dev->low_level_stats.dot11RTSFailureCount++; - } -+} -+ -+void rt2x00lib_txdone(struct queue_entry *entry, -+ struct txdone_entry_desc *txdesc) -+{ -+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; -+ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb); -+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); -+ u8 skbdesc_flags = skbdesc->flags; -+ unsigned int header_length; -+ bool success; -+ -+ /* -+ * Unmap the skb. -+ */ -+ rt2x00queue_unmap_skb(entry); -+ -+ /* -+ * Remove the extra tx headroom from the skb. -+ */ -+ skb_pull(entry->skb, rt2x00dev->extra_tx_headroom); -+ -+ /* -+ * Signal that the TX descriptor is no longer in the skb. -+ */ -+ skbdesc->flags &= ~SKBDESC_DESC_IN_SKB; -+ -+ /* -+ * Determine the length of 802.11 header. -+ */ -+ header_length = ieee80211_get_hdrlen_from_skb(entry->skb); -+ -+ /* -+ * Remove L2 padding which was added during -+ */ -+ if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) -+ rt2x00queue_remove_l2pad(entry->skb, header_length); -+ -+ /* -+ * If the IV/EIV data was stripped from the frame before it was -+ * passed to the hardware, we should now reinsert it again because -+ * mac80211 will expect the same data to be present it the -+ * frame as it was passed to us. -+ */ -+ if (rt2x00_has_cap_hw_crypto(rt2x00dev)) -+ rt2x00crypto_tx_insert_iv(entry->skb, header_length); -+ -+ /* -+ * Send frame to debugfs immediately, after this call is completed -+ * we are going to overwrite the skb->cb array. -+ */ -+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); -+ -+ /* -+ * Determine if the frame has been successfully transmitted and -+ * remove BARs from our check list while checking for their -+ * TX status. -+ */ -+ success = -+ rt2x00lib_txdone_bar_status(entry) || -+ test_bit(TXDONE_SUCCESS, &txdesc->flags) || -+ test_bit(TXDONE_UNKNOWN, &txdesc->flags); -+ -+ /* -+ * Update TX statistics. -+ */ -+ rt2x00dev->link.qual.tx_success += success; -+ rt2x00dev->link.qual.tx_failed += !success; -+ -+ rt2x00lib_fill_tx_status(rt2x00dev, tx_info, skbdesc, txdesc, success); - - /* - * Only send the status report to mac80211 when it's a frame |