aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch')
-rw-r--r--package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch159
1 files changed, 0 insertions, 159 deletions
diff --git a/package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch b/package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch
deleted file mode 100644
index 62bb917184..0000000000
--- a/package/kernel/mac80211/patches/subsys/323-mac80211-unify-802.3-offload-and-802.11-tx-status-co.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Mon, 17 Aug 2020 13:54:19 +0200
-Subject: [PATCH] mac80211: unify 802.3 (offload) and 802.11 tx status
- codepath
-
-Make ieee80211_tx_status_8023 call ieee80211_tx_status_ext, similar to
-ieee80211_tx_status.
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/net/mac80211/status.c
-+++ b/net/mac80211/status.c
-@@ -901,7 +901,6 @@ static void __ieee80211_tx_status(struct
- struct ieee80211_bar *bar;
- int shift = 0;
- int tid = IEEE80211_NUM_TIDS;
-- u16 tx_time_est;
-
- sband = local->hw.wiphy->bands[info->band];
- fc = hdr->frame_control;
-@@ -994,17 +993,6 @@ static void __ieee80211_tx_status(struct
- ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
- ieee80211_sta_tx_notify(sta->sdata, (void *) skb->data,
- acked, info->status.tx_time);
--
-- if ((tx_time_est = ieee80211_info_get_tx_time_est(info)) > 0) {
-- /* Do this here to avoid the expensive lookup of the sta
-- * in ieee80211_report_used_skb().
-- */
-- ieee80211_sta_update_pending_airtime(local, sta,
-- skb_get_queue_mapping(skb),
-- tx_time_est,
-- true);
-- ieee80211_info_set_tx_time_est(info, 0);
-- }
- }
-
- /* SNMP counters
-@@ -1100,9 +1088,11 @@ void ieee80211_tx_status_ext(struct ieee
- struct ieee80211_tx_info *info = status->info;
- struct ieee80211_sta *pubsta = status->sta;
- struct ieee80211_supported_band *sband;
-- struct sta_info *sta;
-+ struct sk_buff *skb = status->skb;
-+ struct sta_info *sta = NULL;
- int rates_idx, retry_count;
- bool acked, noack_success;
-+ u16 tx_time_est;
-
- if (pubsta) {
- sta = container_of(pubsta, struct sta_info, sta);
-@@ -1154,7 +1144,18 @@ void ieee80211_tx_status_ext(struct ieee
- ieee80211s_update_metric(local, sta, status);
- }
-
-- if (status->skb)
-+ if (skb && (tx_time_est = ieee80211_info_get_tx_time_est(info)) > 0) {
-+ /* Do this here to avoid the expensive lookup of the sta
-+ * in ieee80211_report_used_skb().
-+ */
-+ ieee80211_sta_update_pending_airtime(local, sta,
-+ skb_get_queue_mapping(skb),
-+ tx_time_est,
-+ true);
-+ ieee80211_info_set_tx_time_est(info, 0);
-+ }
-+
-+ if (skb && !(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP))
- return __ieee80211_tx_status(hw, status, rates_idx,
- retry_count);
-
-@@ -1169,6 +1170,12 @@ void ieee80211_tx_status_ext(struct ieee
- } else {
- I802_DEBUG_INC(local->dot11FailedCount);
- }
-+
-+ if (!skb)
-+ return;
-+
-+ ieee80211_report_used_skb(local, skb, false);
-+ dev_kfree_skb(skb);
- }
- EXPORT_SYMBOL(ieee80211_tx_status_ext);
-
-@@ -1195,66 +1202,23 @@ void ieee80211_tx_status_8023(struct iee
- struct ieee80211_vif *vif,
- struct sk_buff *skb)
- {
-- struct ieee80211_local *local = hw_to_local(hw);
- struct ieee80211_sub_if_data *sdata;
-- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
-+ struct ieee80211_tx_status status = {
-+ .skb = skb,
-+ .info = IEEE80211_SKB_CB(skb),
-+ };
- struct sta_info *sta;
-- int retry_count;
-- int rates_idx;
-- bool acked;
-
- sdata = vif_to_sdata(vif);
-
-- acked = info->flags & IEEE80211_TX_STAT_ACK;
-- rates_idx = ieee80211_tx_get_rates(hw, info, &retry_count);
--
- rcu_read_lock();
-
-- if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
-- goto counters_update;
--
-- if (IS_ERR(sta))
-- goto counters_update;
--
-- if (!acked)
-- sta->status_stats.retry_failed++;
--
-- if (rates_idx != -1)
-- sta->tx_stats.last_rate = info->status.rates[rates_idx];
--
-- sta->status_stats.retry_count += retry_count;
--
-- if (ieee80211_hw_check(hw, REPORTS_TX_ACK_STATUS)) {
-- sta->status_stats.last_ack = jiffies;
-- if (info->flags & IEEE80211_TX_STAT_ACK) {
-- if (sta->status_stats.lost_packets)
-- sta->status_stats.lost_packets = 0;
-+ if (!ieee80211_lookup_ra_sta(sdata, skb, &sta) && !IS_ERR(sta))
-+ status.sta = &sta->sta;
-
-- sta->status_stats.last_pkt_time = jiffies;
-- } else {
-- ieee80211_lost_packet(sta, info);
-- }
-- }
-+ ieee80211_tx_status_ext(hw, &status);
-
--counters_update:
- rcu_read_unlock();
-- ieee80211_led_tx(local);
--
-- if (!(info->flags & IEEE80211_TX_STAT_ACK) &&
-- !(info->flags & IEEE80211_TX_STAT_NOACK_TRANSMITTED))
-- goto skip_stats_update;
--
-- I802_DEBUG_INC(local->dot11TransmittedFrameCount);
-- if (is_multicast_ether_addr(skb->data))
-- I802_DEBUG_INC(local->dot11MulticastTransmittedFrameCount);
-- if (retry_count > 0)
-- I802_DEBUG_INC(local->dot11RetryCount);
-- if (retry_count > 1)
-- I802_DEBUG_INC(local->dot11MultipleRetryCount);
--
--skip_stats_update:
-- ieee80211_report_used_skb(local, skb, false);
-- dev_kfree_skb(skb);
- }
- EXPORT_SYMBOL(ieee80211_tx_status_8023);
-