> -----Original Message----- > From: linux-hyperv-owner@xxxxxxxxxxxxxxx <linux-hyperv- > owner@xxxxxxxxxxxxxxx> On Behalf Of David Miller > Sent: Tuesday, January 21, 2020 5:05 AM > To: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > Cc: sashal@xxxxxxxxxx; linux-hyperv@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; > KY Srinivasan <kys@xxxxxxxxxxxxx>; Stephen Hemminger > <sthemmin@xxxxxxxxxxxxx>; olaf@xxxxxxxxx; vkuznets > <vkuznets@xxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx > Subject: Re: [PATCH V2,net-next, 1/2] hv_netvsc: Add XDP support > > From: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > Date: Mon, 20 Jan 2020 14:22:36 -0800 > > > +u32 netvsc_run_xdp(struct net_device *ndev, struct netvsc_channel *nvchan, > > + struct xdp_buff *xdp) > > +{ > > + struct page *page = NULL; > > + void *data = nvchan->rsc.data[0]; > > + u32 len = nvchan->rsc.len[0]; > > + struct bpf_prog *prog; > > + u32 act = XDP_PASS; > > Please use reverse christmas tree ordering of local variables. > > > + xdp->data_hard_start = page_address(page); > > + xdp->data = xdp->data_hard_start + NETVSC_XDP_HDRM; > > + xdp_set_data_meta_invalid(xdp); > > + xdp->data_end = xdp->data + len; > > + xdp->rxq = &nvchan->xdp_rxq; > > + xdp->handle = 0; > > + > > + memcpy(xdp->data, data, len); > > Why can't the program run directly on nvchan->rsc.data[0]? > > This data copy defeats the whole performance gain of using XDP. Sure I will update this, and the var order. Thanks - Haiyang