|
@@ -234,6 +234,22 @@ static void ieee80211_hw_roc_done(struct work_struct *work)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ /* was never transmitted */
|
|
|
+ if (local->hw_roc_skb) {
|
|
|
+ u64 cookie;
|
|
|
+
|
|
|
+ cookie = local->hw_roc_cookie ^ 2;
|
|
|
+
|
|
|
+ cfg80211_mgmt_tx_status(local->hw_roc_dev, cookie,
|
|
|
+ local->hw_roc_skb->data,
|
|
|
+ local->hw_roc_skb->len, false,
|
|
|
+ GFP_KERNEL);
|
|
|
+
|
|
|
+ kfree_skb(local->hw_roc_skb);
|
|
|
+ local->hw_roc_skb = NULL;
|
|
|
+ local->hw_roc_skb_for_status = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
if (!local->hw_roc_for_tx)
|
|
|
cfg80211_remain_on_channel_expired(local->hw_roc_dev,
|
|
|
local->hw_roc_cookie,
|