| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- From: Felix Fietkau <[email protected]>
 
- 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 <[email protected]>
 
- ---
 
- --- a/include/net/mac80211.h
 
- +++ b/include/net/mac80211.h
 
- @@ -1095,12 +1095,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
 
- @@ -1051,7 +1051,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;
 
-  	}
 
-  
 
- @@ -1180,7 +1183,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);
 
-  
 
 
  |