On 11/08/14 11:11, Wei Liu wrote:
quoted hunk ↗ jump to hunk
@@ -1525,10 +1537,13 @@ static int xenvif_handle_frag_list(struct xenvif_queue *queue, struct sk_buff *s
/* remove traces of mapped pages and frag_list */
skb_frag_list_init(skb);
uarg = skb_shinfo(skb)->destructor_arg;
+ /* See comment on set_skb_zerocopy */
+ if (uarg->callback == xenvif_zerocopy_callback)
This condition is not necessary: uarg->callback shouldn't be anything
else but this xenvif_zerocopy_callback at this point, unless something
terribly went wrong. In that case we are doomed anyway :)
+ xenvif_inc_inflight_packets(queue);
uarg->callback(uarg, true);
skb_shinfo(skb)->destructor_arg = NULL;
- skb_shinfo(nskb)->tx_flags |= SKBTX_DEV_ZEROCOPY;
+ set_skb_zerocopy(queue, nskb);
kfree_skb(nskb);
return 0;