From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx3-rdu2.redhat.com ([66.187.233.73]:48966 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754809AbeCHPQi (ORCPT ); Thu, 8 Mar 2018 10:16:38 -0500 Date: Thu, 8 Mar 2018 16:16:25 +0100 From: Jesper Dangaard Brouer To: =?UTF-8?B?QmrDtnJuVMO2cGVs?= , magnus.karlsson@intel.com, Jason Wang Cc: netdev@vger.kernel.org, eugenia@mellanox.com, John Fastabend , Eran Ben Elisha , Saeed Mahameed , galp@mellanox.com, Daniel Borkmann , Alexei Starovoitov , Tariq Toukan , brouer@redhat.com Subject: Re: [bpf-next V2 PATCH 06/15] tun: convert to use generic xdp_frame and xdp_return_frame API Message-ID: <20180308161625.4a397e3b@redhat.com> In-Reply-To: <152051449173.7018.11182092555803467523.stgit@firesoul> References: <152051439383.7018.11827926732878918934.stgit@firesoul> <152051449173.7018.11182092555803467523.stgit@firesoul> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: netdev-owner@vger.kernel.org List-ID: Hi Jason, Please see below FIXME, which is actually a question to you. On Thu, 08 Mar 2018 14:08:11 +0100 Jesper Dangaard Brouer wrote: > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index 475088f947bb..cd046cf31b77 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c [...] > @@ -1290,17 +1290,18 @@ static const struct net_device_ops tun_netdev_ops = { > static int tun_xdp_xmit(struct net_device *dev, struct xdp_buff *xdp) > { > struct tun_struct *tun = netdev_priv(dev); > - struct xdp_buff *buff = xdp->data_hard_start; > - int headroom = xdp->data - xdp->data_hard_start; > + struct xdp_frame *frame; > struct tun_file *tfile; > u32 numqueues; > int ret = 0; > > - /* Assure headroom is available and buff is properly aligned */ > - if (unlikely(headroom < sizeof(*xdp) || tun_is_xdp_buff(xdp))) > - return -ENOSPC; > + /* FIXME: Explain why this check is the needed! */ > + if (unlikely(tun_is_xdp_frame(xdp))) > + return -EBADRQC; > > - *buff = *xdp; > + frame = convert_to_xdp_frame(xdp); > + if (unlikely(!frame)) > + return -EOVERFLOW; To Jason, in the FIXME, I'm inheriting a check you put in, but I don't understand why this check was needed? -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer