From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [PATCH net-next v7 3/4] net: vhost: factor out busy polling logic to vhost_net_busy_poll() Date: Fri, 3 Aug 2018 10:38:36 +0800 Message-ID: References: <1533092454-37196-1-git-send-email-xiangxia.m.yue@gmail.com> <1533092454-37196-4-git-send-email-xiangxia.m.yue@gmail.com> <30e62749-3cbd-ae88-6582-c20087884b20@redhat.com> <3272c3b4-a44c-8554-329e-8a5e1a59aafd@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: mst@redhat.com, virtualization@lists.linux-foundation.org, Linux Kernel Network Developers To: Toshiaki Makita , Tonghao Zhang Return-path: Received: from mx3-rdu2.redhat.com ([66.187.233.73]:56632 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726190AbeHCEcs (ORCPT ); Fri, 3 Aug 2018 00:32:48 -0400 In-Reply-To: Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 2018年08月02日 17:57, Toshiaki Makita wrote: > On 2018/08/02 18:23, Jason Wang wrote: >> On 2018年08月02日 16:41, Toshiaki Makita wrote: >>> On 2018/08/02 17:18, Jason Wang wrote: >>>> On 2018年08月01日 17:52, Tonghao Zhang wrote: >>>>>> +static void vhost_net_busy_poll_check(struct vhost_net *net, >>>>>> +                                   struct vhost_virtqueue *rvq, >>>>>> +                                   struct vhost_virtqueue *tvq, >>>>>> +                                   bool rx) >>>>>> +{ >>>>>> +     struct socket *sock = rvq->private_data; >>>>>> + >>>>>> +     if (rx) >>>>>> +             vhost_net_busy_poll_try_queue(net, tvq); >>>>>> +     else if (sock && sk_has_rx_data(sock->sk)) >>>>>> +             vhost_net_busy_poll_try_queue(net, rvq); >>>>>> +     else { >>>>>> +             /* On tx here, sock has no rx data, so we >>>>>> +              * will wait for sock wakeup for rx, and >>>>>> +              * vhost_enable_notify() is not needed. */ >>>>> A possible case is we do have rx data but guest does not refill the rx >>>>> queue. In this case we may lose notifications from guest. >>>> Yes, should consider this case. thanks. >>> I'm a bit confused. Isn't this covered by the previous >>> "else if (sock && sk_has_rx_data(...))" block? >> The problem is it does nothing if vhost_vq_avail_empty() is true and >> vhost_enble_notify() is false. > If vhost_enable_notify() is false, guest will eventually kicks vq, no? > Yes, you are right. Thanks