Re: [PATCH net 2/7] virtio_net: Don't call free_old_xmit_skbs for xdp_frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2019/01/17 21:39, Jason Wang wrote:
> On 2019/1/17 下午7:20, Toshiaki Makita wrote:
>> When napi_tx is enabled, virtnet_poll_cleantx() called
>> free_old_xmit_skbs() even for xdp send queue.
>> This is bogus since the queue has xdp_frames, not sk_buffs, thus mangled
>> device tx bytes counters because skb->len is meaningless value, and even
>> triggered oops due to general protection fault on freeing them.
>>
>> Since xdp send queues do not aquire locks, old xdp_frames should be
>> freed only in virtnet_xdp_xmit(), so just skip free_old_xmit_skbs() for
>> xdp send queues.
>>
>> Similarly virtnet_poll_tx() called free_old_xmit_skbs(). This NAPI
>> handler is called even without calling start_xmit() because cb for tx is
>> by default enabled. Once the handler is called, it enabled the cb again,
>> and then the handler would be called again. We don't need this handler
>> for XDP, so don't enable cb as well as not calling free_old_xmit_skbs().
>>
>> Also, we need to disable tx NAPI when disabling XDP, so
>> virtnet_poll_tx() can safely access curr_queue_pairs and
>> xdp_queue_pairs, which are not atomically updated while disabling XDP.
> 
> 
> I suggest to split this into another patch or squash this part to patch 1.

This part is for invocation of is_xdp_raw_buffer_queue() from
virtnet_poll_tx(), which is added in this patch, so I'm thinking it's
more natural to keep this hunk in this patch.

-- 
Toshiaki Makita

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization




[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux