From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: Re: [bpf-next V3 PATCH 13/14] bpf: finally expose xdp_rxq_info to XDP bpf-programs Date: Tue, 2 Jan 2018 10:47:01 -0700 Message-ID: References: <151471801977.30703.3258796879718706203.stgit@firesoul> <151471812024.30703.13086182080575474605.stgit@firesoul> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, gospo@broadcom.com, bjorn.topel@intel.com, michael.chan@broadcom.com To: Jesper Dangaard Brouer , Daniel Borkmann , Alexei Starovoitov Return-path: Received: from mail-pg0-f68.google.com ([74.125.83.68]:46198 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751211AbeABRrD (ORCPT ); Tue, 2 Jan 2018 12:47:03 -0500 Received: by mail-pg0-f68.google.com with SMTP id r2so9168479pgq.13 for ; Tue, 02 Jan 2018 09:47:03 -0800 (PST) In-Reply-To: <151471812024.30703.13086182080575474605.stgit@firesoul> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 12/31/17 4:02 AM, Jesper Dangaard Brouer wrote: > Now all XDP driver have been updated to setup xdp_rxq_info and assign > this to xdp_buff->rxq. Thus, it is now safe to enable access to some > of the xdp_rxq_info struct members. > > This patch extend xdp_md and expose UAPI to userspace for > ingress_ifindex and rx_queue_index. Access happens via bpf > instruction rewrite, that load data directly from struct xdp_rxq_info. > > * ingress_ifindex map to xdp_rxq_info->dev->ifindex > * rx_queue_index map to xdp_rxq_info->queue_index > > Signed-off-by: Jesper Dangaard Brouer > --- > include/uapi/linux/bpf.h | 3 +++ > net/core/filter.c | 19 +++++++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index 69eabfcb9bdb..a6000a95d40e 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -899,6 +899,9 @@ struct xdp_md { > __u32 data; > __u32 data_end; > __u32 data_meta; > + /* Below access go though struct xdp_rxq_info */ > + __u32 ingress_ifindex; /* rxq->dev->ifindex */ > + __u32 rx_queue_index; /* rxq->queue_index */ > }; > > enum sk_action { At some point we need to tackle the network namespace context for the ifindex.