diff options
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index ca4db40e75b8..2f6babd5a570 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -3168,6 +3168,26 @@ void skb_tstamp_tx(struct sk_buff *orig_skb, | |||
3168 | } | 3168 | } |
3169 | EXPORT_SYMBOL_GPL(skb_tstamp_tx); | 3169 | EXPORT_SYMBOL_GPL(skb_tstamp_tx); |
3170 | 3170 | ||
3171 | void skb_complete_wifi_ack(struct sk_buff *skb, bool acked) | ||
3172 | { | ||
3173 | struct sock *sk = skb->sk; | ||
3174 | struct sock_exterr_skb *serr; | ||
3175 | int err; | ||
3176 | |||
3177 | skb->wifi_acked_valid = 1; | ||
3178 | skb->wifi_acked = acked; | ||
3179 | |||
3180 | serr = SKB_EXT_ERR(skb); | ||
3181 | memset(serr, 0, sizeof(*serr)); | ||
3182 | serr->ee.ee_errno = ENOMSG; | ||
3183 | serr->ee.ee_origin = SO_EE_ORIGIN_TXSTATUS; | ||
3184 | |||
3185 | err = sock_queue_err_skb(sk, skb); | ||
3186 | if (err) | ||
3187 | kfree_skb(skb); | ||
3188 | } | ||
3189 | EXPORT_SYMBOL_GPL(skb_complete_wifi_ack); | ||
3190 | |||
3171 | 3191 | ||
3172 | /** | 3192 | /** |
3173 | * skb_partial_csum_set - set up and verify partial csum values for packet | 3193 | * skb_partial_csum_set - set up and verify partial csum values for packet |