mac80211: set wifi_acked[_valid] bits for transmitted SKBs
authorJohannes Berg <johannes.berg@intel.com>
Wed, 19 Oct 2016 13:02:32 +0000 (15:02 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 12 Jan 2017 09:15:19 +0000 (10:15 +0100)
There may be situations in which the in-kernel originator of an
SKB cares about its wifi transmission status. To have that, set
the wifi_acked[_valid] bits before freeing/orphaning the SKB if
the destructor is set. The originator can then use it in there.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/status.c

index f7c5ae5976398dc5e267073dfbb04f5203fd15fe..d6a1bfaa7a817f0511fca16262f2c132ff5432f2 100644 (file)
@@ -541,6 +541,11 @@ static void ieee80211_report_used_skb(struct ieee80211_local *local,
        } else if (info->ack_frame_id) {
                ieee80211_report_ack_skb(local, info, acked, dropped);
        }
+
+       if (!dropped && skb->destructor) {
+               skb->wifi_acked_valid = 1;
+               skb->wifi_acked = acked;
+       }
 }
 
 /*