From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:52132) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUd3m-0002ed-M2 for qemu-devel@nongnu.org; Tue, 23 Apr 2013 09:15:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UUd3l-0005O5-3s for qemu-devel@nongnu.org; Tue, 23 Apr 2013 09:15:02 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:58498) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUd3k-0005Mq-UA for qemu-devel@nongnu.org; Tue, 23 Apr 2013 09:15:01 -0400 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MLP0079EM2F2MC0@mailout1.w1.samsung.com> for qemu-devel@nongnu.org; Tue, 23 Apr 2013 14:14:56 +0100 (BST) Message-id: <5176894E.2010405@samsung.com> Date: Tue, 23 Apr 2013 17:14:54 +0400 From: Fedorov Sergey MIME-version: 1.0 References: <1366284715-10107-1-git-send-email-s.fedorov@samsung.com> <20130422114711.GA21317@stefanha-thinkpad.redhat.com> <51752C68.6030408@samsung.com> <20130422145749.GA28049@stefanha-thinkpad.redhat.com> <517556D9.2080809@samsung.com> <20130423065841.GA6447@stefanha-thinkpad.redhat.com> <51763B36.1000701@samsung.com> <20130423120021.GC2431@stefanha-thinkpad.redhat.com> In-reply-to: <20130423120021.GC2431@stefanha-thinkpad.redhat.com> Content-type: text/plain; charset=ISO-8859-1; format=flowed Content-transfer-encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] net/hub: remove can_receive handler List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: aliguori@us.ibm.com, a.basov@samsung.com, qemu-devel@nongnu.org, Stefan Hajnoczi On 04/23/2013 04:00 PM, Stefan Hajnoczi wrote: > On Tue, Apr 23, 2013 at 11:41:42AM +0400, Fedorov Sergey wrote: >>> Beyond that, we also want to avoid growing net queues indefinitely. If >>> the hub does not implement .can_receive() then it relies on growing >>> queues (keeping packets buffered in memory). >> No, net_hub_receive() calls qemu_send_packet(). If the destination >> queue cannot receive the packet qemu_net_queue_append() will take >> care of queue->nq_maxlen. > You are right, sorry. We do discard packets at nq_maxlen. > > The problem with ignoring .can_receive() on the hub is that it breaks > flow control. For example, net/tap.c is designed to avoid reading more > packets if its peer cannot receive (see tap_can_send()). > > If the hub claims it can always receive we waste cycles reading packets > from the tap device only to discard them. > > Since qemu.git already has a fix which preserves flow control, I am not > going to merge your patch. > > Stefan > OK, I see. Thanks for attention. -- Best regards, Sergey Fedorov, Junior Software Engineer, Samsung R&D Institute Rus. E-mail: s.fedorov@samsung.com