[dpdk-dev] [PATCH 4/4] net/virtio: improve offload check performance
Tiwei Bie
tiwei.bie at intel.com
Tue Jun 5 05:10:57 CEST 2018
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.
Best regards,
Tiwei Bie
More information about the dev
mailing list