* [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds @ 2021-12-30 1:27 Jakub Kicinski 2021-12-30 1:27 ` Jakub Kicinski ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Jakub Kicinski @ 2021-12-30 1:27 UTC (permalink / raw) To: ast, daniel; +Cc: bpf, netdev, Jakub Kicinski Last change in the bpf headers - disentangling BPF uapi from netdevice.h. Both linux/bpf.h and uapi/bpf.h changes should now rebuild ~1k objects down from the original ~18k. There's probably more that can be done but it's diminishing returns. Split into two patches for ease of review. Jakub Kicinski (2): net: add includes masked by netdevice.h including uapi/bpf.h bpf: invert the dependency between bpf-netns.h and netns/bpf.h drivers/net/ethernet/amazon/ena/ena_netdev.h | 1 + drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 1 + drivers/net/ethernet/microsoft/mana/mana_en.c | 2 ++ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 1 + drivers/net/ethernet/ti/cpsw_priv.h | 2 ++ include/linux/bpf-netns.h | 8 +------- include/net/ip6_fib.h | 1 + include/net/netns/bpf.h | 9 ++++++++- kernel/bpf/net_namespace.c | 1 + 9 files changed, 18 insertions(+), 8 deletions(-) -- 2.31.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 1/2] net: add includes masked by netdevice.h including uapi/bpf.h 2021-12-30 1:27 [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Jakub Kicinski @ 2021-12-30 1:27 ` Jakub Kicinski 2021-12-30 1:27 ` [PATCH bpf-next v2 2/2] bpf: invert the dependency between bpf-netns.h and netns/bpf.h Jakub Kicinski 2021-12-30 4:09 ` [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Alexei Starovoitov 2 siblings, 0 replies; 7+ messages in thread From: Jakub Kicinski @ 2021-12-30 1:27 UTC (permalink / raw) To: ast, daniel Cc: bpf, netdev, Jakub Kicinski, shayagr, akiyano, darinzon, ndagan, saeedb, sgoutham, kys, haiyangz, sthemmin, wei.liu, decui, peppe.cavallaro, alexandre.torgue, joabreu, mcoquelin.stm32, grygorii.strashko, sameehj, chenhao288, moyufeng, linux-arm-kernel, linux-hyperv, linux-stm32, linux-omap Add missing includes unmasked by the subsequent change. Mostly network drivers missing an include for XDP_PACKET_HEADROOM. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- v2: - fix buildbot's randconfig failure in ipv6 CC: shayagr@amazon.com CC: akiyano@amazon.com CC: darinzon@amazon.com CC: ndagan@amazon.com CC: saeedb@amazon.com CC: sgoutham@marvell.com CC: kys@microsoft.com CC: haiyangz@microsoft.com CC: sthemmin@microsoft.com CC: wei.liu@kernel.org CC: decui@microsoft.com CC: peppe.cavallaro@st.com CC: alexandre.torgue@foss.st.com CC: joabreu@synopsys.com CC: mcoquelin.stm32@gmail.com CC: grygorii.strashko@ti.com CC: sameehj@amazon.com CC: chenhao288@hisilicon.com CC: moyufeng@huawei.com CC: linux-arm-kernel@lists.infradead.org CC: linux-hyperv@vger.kernel.org CC: linux-stm32@st-md-mailman.stormreply.com CC: linux-omap@vger.kernel.org --- drivers/net/ethernet/amazon/ena/ena_netdev.h | 1 + drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 1 + drivers/net/ethernet/microsoft/mana/mana_en.c | 2 ++ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 1 + drivers/net/ethernet/ti/cpsw_priv.h | 2 ++ include/net/ip6_fib.h | 1 + kernel/bpf/net_namespace.c | 1 + 7 files changed, 9 insertions(+) diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h index 0c39fc2fa345..9391c7101fba 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h @@ -14,6 +14,7 @@ #include <linux/interrupt.h> #include <linux/netdevice.h> #include <linux/skbuff.h> +#include <uapi/linux/bpf.h> #include "ena_com.h" #include "ena_eth_com.h" diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c index 50bbe79fb93d..4367edbdd579 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c @@ -10,6 +10,7 @@ #include <linux/iommu.h> #include <net/ip.h> #include <net/tso.h> +#include <uapi/linux/bpf.h> #include "nic_reg.h" #include "nic.h" diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c index c1d5a374b967..2ece9e90dc50 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* Copyright (c) 2021, Microsoft Corporation. */ +#include <uapi/linux/bpf.h> + #include <linux/inetdevice.h> #include <linux/etherdevice.h> #include <linux/ethtool.h> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index 4f5292cadf54..d42b6af32d6e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -22,6 +22,7 @@ #include <linux/net_tstamp.h> #include <linux/reset.h> #include <net/page_pool.h> +#include <uapi/linux/bpf.h> struct stmmac_resources { void __iomem *addr; diff --git a/drivers/net/ethernet/ti/cpsw_priv.h b/drivers/net/ethernet/ti/cpsw_priv.h index f33c882eb70e..74555970730c 100644 --- a/drivers/net/ethernet/ti/cpsw_priv.h +++ b/drivers/net/ethernet/ti/cpsw_priv.h @@ -6,6 +6,8 @@ #ifndef DRIVERS_NET_ETHERNET_TI_CPSW_PRIV_H_ #define DRIVERS_NET_ETHERNET_TI_CPSW_PRIV_H_ +#include <uapi/linux/bpf.h> + #include "davinci_cpdma.h" #define CPSW_DEBUG (NETIF_MSG_HW | NETIF_MSG_WOL | \ diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 83b8070d1cc9..a9a4ccc0cdb5 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -20,6 +20,7 @@ #include <net/inetpeer.h> #include <net/fib_notifier.h> #include <linux/indirect_call_wrapper.h> +#include <uapi/linux/bpf.h> #ifdef CONFIG_IPV6_MULTIPLE_TABLES #define FIB6_TABLE_HASHSZ 256 diff --git a/kernel/bpf/net_namespace.c b/kernel/bpf/net_namespace.c index 542f275bf252..868cc2c43899 100644 --- a/kernel/bpf/net_namespace.c +++ b/kernel/bpf/net_namespace.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <linux/bpf.h> +#include <linux/bpf-netns.h> #include <linux/filter.h> #include <net/net_namespace.h> -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 1/2] net: add includes masked by netdevice.h including uapi/bpf.h @ 2021-12-30 1:27 ` Jakub Kicinski 0 siblings, 0 replies; 7+ messages in thread From: Jakub Kicinski @ 2021-12-30 1:27 UTC (permalink / raw) To: ast, daniel Cc: bpf, netdev, Jakub Kicinski, shayagr, akiyano, darinzon, ndagan, saeedb, sgoutham, kys, haiyangz, sthemmin, wei.liu, decui, peppe.cavallaro, alexandre.torgue, joabreu, mcoquelin.stm32, grygorii.strashko, sameehj, chenhao288, moyufeng, linux-arm-kernel, linux-hyperv, linux-stm32, linux-omap Add missing includes unmasked by the subsequent change. Mostly network drivers missing an include for XDP_PACKET_HEADROOM. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- v2: - fix buildbot's randconfig failure in ipv6 CC: shayagr@amazon.com CC: akiyano@amazon.com CC: darinzon@amazon.com CC: ndagan@amazon.com CC: saeedb@amazon.com CC: sgoutham@marvell.com CC: kys@microsoft.com CC: haiyangz@microsoft.com CC: sthemmin@microsoft.com CC: wei.liu@kernel.org CC: decui@microsoft.com CC: peppe.cavallaro@st.com CC: alexandre.torgue@foss.st.com CC: joabreu@synopsys.com CC: mcoquelin.stm32@gmail.com CC: grygorii.strashko@ti.com CC: sameehj@amazon.com CC: chenhao288@hisilicon.com CC: moyufeng@huawei.com CC: linux-arm-kernel@lists.infradead.org CC: linux-hyperv@vger.kernel.org CC: linux-stm32@st-md-mailman.stormreply.com CC: linux-omap@vger.kernel.org --- drivers/net/ethernet/amazon/ena/ena_netdev.h | 1 + drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 1 + drivers/net/ethernet/microsoft/mana/mana_en.c | 2 ++ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 1 + drivers/net/ethernet/ti/cpsw_priv.h | 2 ++ include/net/ip6_fib.h | 1 + kernel/bpf/net_namespace.c | 1 + 7 files changed, 9 insertions(+) diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h index 0c39fc2fa345..9391c7101fba 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h @@ -14,6 +14,7 @@ #include <linux/interrupt.h> #include <linux/netdevice.h> #include <linux/skbuff.h> +#include <uapi/linux/bpf.h> #include "ena_com.h" #include "ena_eth_com.h" diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c index 50bbe79fb93d..4367edbdd579 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c @@ -10,6 +10,7 @@ #include <linux/iommu.h> #include <net/ip.h> #include <net/tso.h> +#include <uapi/linux/bpf.h> #include "nic_reg.h" #include "nic.h" diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c index c1d5a374b967..2ece9e90dc50 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -1,6 +1,8 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* Copyright (c) 2021, Microsoft Corporation. */ +#include <uapi/linux/bpf.h> + #include <linux/inetdevice.h> #include <linux/etherdevice.h> #include <linux/ethtool.h> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index 4f5292cadf54..d42b6af32d6e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -22,6 +22,7 @@ #include <linux/net_tstamp.h> #include <linux/reset.h> #include <net/page_pool.h> +#include <uapi/linux/bpf.h> struct stmmac_resources { void __iomem *addr; diff --git a/drivers/net/ethernet/ti/cpsw_priv.h b/drivers/net/ethernet/ti/cpsw_priv.h index f33c882eb70e..74555970730c 100644 --- a/drivers/net/ethernet/ti/cpsw_priv.h +++ b/drivers/net/ethernet/ti/cpsw_priv.h @@ -6,6 +6,8 @@ #ifndef DRIVERS_NET_ETHERNET_TI_CPSW_PRIV_H_ #define DRIVERS_NET_ETHERNET_TI_CPSW_PRIV_H_ +#include <uapi/linux/bpf.h> + #include "davinci_cpdma.h" #define CPSW_DEBUG (NETIF_MSG_HW | NETIF_MSG_WOL | \ diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 83b8070d1cc9..a9a4ccc0cdb5 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h @@ -20,6 +20,7 @@ #include <net/inetpeer.h> #include <net/fib_notifier.h> #include <linux/indirect_call_wrapper.h> +#include <uapi/linux/bpf.h> #ifdef CONFIG_IPV6_MULTIPLE_TABLES #define FIB6_TABLE_HASHSZ 256 diff --git a/kernel/bpf/net_namespace.c b/kernel/bpf/net_namespace.c index 542f275bf252..868cc2c43899 100644 --- a/kernel/bpf/net_namespace.c +++ b/kernel/bpf/net_namespace.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include <linux/bpf.h> +#include <linux/bpf-netns.h> #include <linux/filter.h> #include <net/net_namespace.h> -- 2.31.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v2 1/2] net: add includes masked by netdevice.h including uapi/bpf.h 2021-12-30 1:27 ` Jakub Kicinski @ 2022-01-06 13:03 ` Wei Liu -1 siblings, 0 replies; 7+ messages in thread From: Wei Liu @ 2022-01-06 13:03 UTC (permalink / raw) To: Jakub Kicinski Cc: ast, daniel, bpf, netdev, shayagr, akiyano, darinzon, ndagan, saeedb, sgoutham, kys, haiyangz, sthemmin, wei.liu, decui, peppe.cavallaro, alexandre.torgue, joabreu, mcoquelin.stm32, grygorii.strashko, sameehj, chenhao288, moyufeng, linux-arm-kernel, linux-hyperv, linux-stm32, linux-omap On Wed, Dec 29, 2021 at 05:27:41PM -0800, Jakub Kicinski wrote: > Add missing includes unmasked by the subsequent change. > > Mostly network drivers missing an include for XDP_PACKET_HEADROOM. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> [...] > drivers/net/ethernet/microsoft/mana/mana_en.c | 2 ++ This seems trivially correct, so in case an ack is needed: Acked-by: Wei Liu <wei.liu@kernel.org> > diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c > index c1d5a374b967..2ece9e90dc50 100644 > --- a/drivers/net/ethernet/microsoft/mana/mana_en.c > +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c > @@ -1,6 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause > /* Copyright (c) 2021, Microsoft Corporation. */ > > +#include <uapi/linux/bpf.h> > + > #include <linux/inetdevice.h> > #include <linux/etherdevice.h> > #include <linux/ethtool.h> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v2 1/2] net: add includes masked by netdevice.h including uapi/bpf.h @ 2022-01-06 13:03 ` Wei Liu 0 siblings, 0 replies; 7+ messages in thread From: Wei Liu @ 2022-01-06 13:03 UTC (permalink / raw) To: Jakub Kicinski Cc: ast, daniel, bpf, netdev, shayagr, akiyano, darinzon, ndagan, saeedb, sgoutham, kys, haiyangz, sthemmin, wei.liu, decui, peppe.cavallaro, alexandre.torgue, joabreu, mcoquelin.stm32, grygorii.strashko, sameehj, chenhao288, moyufeng, linux-arm-kernel, linux-hyperv, linux-stm32, linux-omap On Wed, Dec 29, 2021 at 05:27:41PM -0800, Jakub Kicinski wrote: > Add missing includes unmasked by the subsequent change. > > Mostly network drivers missing an include for XDP_PACKET_HEADROOM. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> [...] > drivers/net/ethernet/microsoft/mana/mana_en.c | 2 ++ This seems trivially correct, so in case an ack is needed: Acked-by: Wei Liu <wei.liu@kernel.org> > diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c > index c1d5a374b967..2ece9e90dc50 100644 > --- a/drivers/net/ethernet/microsoft/mana/mana_en.c > +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c > @@ -1,6 +1,8 @@ > // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause > /* Copyright (c) 2021, Microsoft Corporation. */ > > +#include <uapi/linux/bpf.h> > + > #include <linux/inetdevice.h> > #include <linux/etherdevice.h> > #include <linux/ethtool.h> _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH bpf-next v2 2/2] bpf: invert the dependency between bpf-netns.h and netns/bpf.h 2021-12-30 1:27 [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Jakub Kicinski 2021-12-30 1:27 ` Jakub Kicinski @ 2021-12-30 1:27 ` Jakub Kicinski 2021-12-30 4:09 ` [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Alexei Starovoitov 2 siblings, 0 replies; 7+ messages in thread From: Jakub Kicinski @ 2021-12-30 1:27 UTC (permalink / raw) To: ast, daniel; +Cc: bpf, netdev, Jakub Kicinski netns/bpf.h gets included by netdevice.h (thru net_namespace.h) which in turn gets included in a lot of places. We should keep netns/bpf.h as light-weight as possible. bpf-netns.h seems to contain more implementation details than deserves to be included in a netns header. It needs to pull in uapi/bpf.h to get various enum types. Move enum netns_bpf_attach_type to netns/bpf.h and invert the dependency. This makes netns/bpf.h fit the mold of a struct definition header more clearly, and drops the number of objects rebuilt when uapi/bpf.h is touched from 7.7k to 1.1k. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- include/linux/bpf-netns.h | 8 +------- include/net/netns/bpf.h | 9 ++++++++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/linux/bpf-netns.h b/include/linux/bpf-netns.h index 722f799c1a2e..413cfa5e4b07 100644 --- a/include/linux/bpf-netns.h +++ b/include/linux/bpf-netns.h @@ -3,15 +3,9 @@ #define _BPF_NETNS_H #include <linux/mutex.h> +#include <net/netns/bpf.h> #include <uapi/linux/bpf.h> -enum netns_bpf_attach_type { - NETNS_BPF_INVALID = -1, - NETNS_BPF_FLOW_DISSECTOR = 0, - NETNS_BPF_SK_LOOKUP, - MAX_NETNS_BPF_ATTACH_TYPE -}; - static inline enum netns_bpf_attach_type to_netns_bpf_attach_type(enum bpf_attach_type attach_type) { diff --git a/include/net/netns/bpf.h b/include/net/netns/bpf.h index 0ca6a1b87185..2c01a278d1eb 100644 --- a/include/net/netns/bpf.h +++ b/include/net/netns/bpf.h @@ -6,11 +6,18 @@ #ifndef __NETNS_BPF_H__ #define __NETNS_BPF_H__ -#include <linux/bpf-netns.h> +#include <linux/list.h> struct bpf_prog; struct bpf_prog_array; +enum netns_bpf_attach_type { + NETNS_BPF_INVALID = -1, + NETNS_BPF_FLOW_DISSECTOR = 0, + NETNS_BPF_SK_LOOKUP, + MAX_NETNS_BPF_ATTACH_TYPE +}; + struct netns_bpf { /* Array of programs to run compiled from progs or links */ struct bpf_prog_array __rcu *run_array[MAX_NETNS_BPF_ATTACH_TYPE]; -- 2.31.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds 2021-12-30 1:27 [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Jakub Kicinski 2021-12-30 1:27 ` Jakub Kicinski 2021-12-30 1:27 ` [PATCH bpf-next v2 2/2] bpf: invert the dependency between bpf-netns.h and netns/bpf.h Jakub Kicinski @ 2021-12-30 4:09 ` Alexei Starovoitov 2 siblings, 0 replies; 7+ messages in thread From: Alexei Starovoitov @ 2021-12-30 4:09 UTC (permalink / raw) To: Jakub Kicinski Cc: Alexei Starovoitov, Daniel Borkmann, bpf, Network Development On Wed, Dec 29, 2021 at 5:27 PM Jakub Kicinski <kuba@kernel.org> wrote: > > Last change in the bpf headers - disentangling BPF uapi from > netdevice.h. Both linux/bpf.h and uapi/bpf.h changes should > now rebuild ~1k objects down from the original ~18k. There's > probably more that can be done but it's diminishing returns. > > Split into two patches for ease of review. Applied. Thanks ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-01-06 13:05 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-12-30 1:27 [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Jakub Kicinski 2021-12-30 1:27 ` [PATCH bpf-next v2 1/2] net: add includes masked by netdevice.h including uapi/bpf.h Jakub Kicinski 2021-12-30 1:27 ` Jakub Kicinski 2022-01-06 13:03 ` Wei Liu 2022-01-06 13:03 ` Wei Liu 2021-12-30 1:27 ` [PATCH bpf-next v2 2/2] bpf: invert the dependency between bpf-netns.h and netns/bpf.h Jakub Kicinski 2021-12-30 4:09 ` [PATCH bpf-next v2 0/2] lighten uapi/bpf.h rebuilds Alexei Starovoitov
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.