+++ /dev/null
-From: Felix Fietkau <nbd@nbd.name>
-Date: Fri, 21 Aug 2020 05:49:07 +0200
-Subject: [PATCH] mac80211: extend ieee80211_tx_status_ext to support bulk
- free
-
-Store processed skbs ready to be freed in a list so the driver bulk free them
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/include/net/mac80211.h
-+++ b/include/net/mac80211.h
-@@ -1092,12 +1092,14 @@ ieee80211_info_get_tx_time_est(struct ie
- * @info: Basic tx status information
- * @skb: Packet skb (can be NULL if not provided by the driver)
- * @rate: The TX rate that was used when sending the packet
-+ * @free_list: list where processed skbs are stored to be free'd by the driver
- */
- struct ieee80211_tx_status {
- struct ieee80211_sta *sta;
- struct ieee80211_tx_info *info;
- struct sk_buff *skb;
- struct rate_info *rate;
-+ struct list_head *free_list;
- };
-
- /**
---- a/net/mac80211/status.c
-+++ b/net/mac80211/status.c
-@@ -1053,7 +1053,10 @@ static void __ieee80211_tx_status(struct
- * with this test...
- */
- if (!local->monitors && (!send_to_cooked || !local->cooked_mntrs)) {
-- dev_kfree_skb(skb);
-+ if (status->free_list)
-+ list_add_tail(&skb->list, status->free_list);
-+ else
-+ dev_kfree_skb(skb);
- return;
- }
-
-@@ -1182,7 +1185,10 @@ free:
- return;
-
- ieee80211_report_used_skb(local, skb, false);
-- dev_kfree_skb(skb);
-+ if (status->free_list)
-+ list_add_tail(&skb->list, status->free_list);
-+ else
-+ dev_kfree_skb(skb);
- }
- EXPORT_SYMBOL(ieee80211_tx_status_ext);
-