From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by dpdk.org (Postfix) with ESMTP id C3F9E1B1A8 for ; Tue, 5 Jun 2018 11:43:14 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 050304075398; Tue, 5 Jun 2018 09:43:14 +0000 (UTC) Received: from [10.36.112.33] (ovpn-112-33.ams2.redhat.com [10.36.112.33]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3EC6D10FFE6F; Tue, 5 Jun 2018 09:43:12 +0000 (UTC) To: Tiwei Bie Cc: zhihong.wang@intel.com, dev@dpdk.org References: <20180601124758.22652-1-maxime.coquelin@redhat.com> <20180601124758.22652-5-maxime.coquelin@redhat.com> <20180604115507.GA21406@debian> <5b8d8122-5521-2f65-51e8-224f49f8fb57@redhat.com> <20180605031057.GA5404@debian> From: Maxime Coquelin Message-ID: Date: Tue, 5 Jun 2018 11:43:11 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180605031057.GA5404@debian> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Tue, 05 Jun 2018 09:43:14 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Tue, 05 Jun 2018 09:43:14 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'maxime.coquelin@redhat.com' RCPT:'' Subject: Re: [dpdk-dev] [PATCH 4/4] net/virtio: improve offload check performance X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jun 2018 09:43:15 -0000 On 06/05/2018 05:10 AM, Tiwei Bie wrote: > On Mon, Jun 04, 2018 at 04:29:56PM +0200, Maxime Coquelin wrote: >> On 06/04/2018 01:55 PM, Tiwei Bie wrote: >>> On Fri, Jun 01, 2018 at 02:47:58PM +0200, Maxime Coquelin wrote: > [...] >>>> @@ -253,13 +246,15 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie, >>>> struct virtio_net_hdr *hdr; >>>> int offload; >>>> - offload = tx_offload_enabled(vq->hw); >>>> head_idx = vq->vq_desc_head_idx; >>>> idx = head_idx; >>>> dxp = &vq->vq_descx[idx]; >>>> dxp->cookie = (void *)cookie; >>>> dxp->ndescs = needed; >>>> + offload = vq->hw->has_tx_offload && >>>> + (cookie->ol_flags & PKT_TX_OFFLOAD_MASK); >>> >>> If features aren't negotiated, I think there is no need to >>> check ol_flags and update the net header. >> >> Isn't what the code is doing? >> has_tx_offload will be false if none of the Tx offload features have >> been negotiated, so ol_flags won't be checked in that case. > > Hmm.. Somehow I treated 'and' as 'or'.. > > I have another question. When 'can_push' is false > and 'vq->hw->has_tx_offload' is true, there will > be a chance that virtio net hdr won't be zeroed > when ol_flags doesn't specify any Tx offloads. Right, good catch. It may be better to remove this small optimization. Indeed, with the series, if the application does not enable offloads, then the Virtio features are re-negotiated with the offload features. Thanks, Maxime > Best regards, > Tiwei Bie >