Message ID | c9e132c3f08c456ad0462342bb0a104f0f8c0b24.1683622992.git.lorenzo@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 5e316a818e75c585dc7b601e8b51823a4059d408 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: veth: make PAGE_POOL_STATS optional | expand |
On Tue, May 09, 2023 at 11:05:16AM +0200, Lorenzo Bianconi wrote: > Since veth is very likely to be enabled and there are some drivers > (e.g. mlx5) where CONFIG_PAGE_POOL_STATS is optional, make > CONFIG_PAGE_POOL_STATS optional for veth too in order to keep it > optional when required. > > Suggested-by: Jiri Benc <jbenc@redhat.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Reviewed-by: Simon Horman <simon.horman@corigine.com>
On 09/05/2023 11.05, Lorenzo Bianconi wrote: > Since veth is very likely to be enabled and there are some drivers > (e.g. mlx5) where CONFIG_PAGE_POOL_STATS is optional, make > CONFIG_PAGE_POOL_STATS optional for veth too in order to keep it > optional when required. > > Suggested-by: Jiri Benc <jbenc@redhat.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > drivers/net/Kconfig | 1 - > drivers/net/veth.c | 24 +++++++++++++++++------- > 2 files changed, 17 insertions(+), 8 deletions(-) Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
Lorenzo Bianconi <lorenzo@kernel.org> writes: > Since veth is very likely to be enabled and there are some drivers > (e.g. mlx5) where CONFIG_PAGE_POOL_STATS is optional, make > CONFIG_PAGE_POOL_STATS optional for veth too in order to keep it > optional when required. s/when/instead of/ ? Other than that: Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Hello: This patch was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Tue, 9 May 2023 11:05:16 +0200 you wrote: > Since veth is very likely to be enabled and there are some drivers > (e.g. mlx5) where CONFIG_PAGE_POOL_STATS is optional, make > CONFIG_PAGE_POOL_STATS optional for veth too in order to keep it > optional when required. > > Suggested-by: Jiri Benc <jbenc@redhat.com> > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > > [...] Here is the summary with links: - [net-next] net: veth: make PAGE_POOL_STATS optional https://git.kernel.org/netdev/net-next/c/5e316a818e75 You are awesome, thank you!
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index d0a1ed216d15..368c6f5b327e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -403,7 +403,6 @@ config TUN_VNET_CROSS_LE config VETH tristate "Virtual ethernet pair device" select PAGE_POOL - select PAGE_POOL_STATS help This device is a local ethernet tunnel. Devices are created in pairs. When one end receives the packet it appears on its pair and vice diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 3ae496011640..614f3e3efab0 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -176,12 +176,27 @@ static int veth_get_sset_count(struct net_device *dev, int sset) } } +static void veth_get_page_pool_stats(struct net_device *dev, u64 *data) +{ +#ifdef CONFIG_PAGE_POOL_STATS + struct veth_priv *priv = netdev_priv(dev); + struct page_pool_stats pp_stats = {}; + int i; + + for (i = 0; i < dev->real_num_rx_queues; i++) { + if (!priv->rq[i].page_pool) + continue; + page_pool_get_stats(priv->rq[i].page_pool, &pp_stats); + } + page_pool_ethtool_stats_get(data, &pp_stats); +#endif /* CONFIG_PAGE_POOL_STATS */ +} + static void veth_get_ethtool_stats(struct net_device *dev, struct ethtool_stats *stats, u64 *data) { struct veth_priv *rcv_priv, *priv = netdev_priv(dev); struct net_device *peer = rtnl_dereference(priv->peer); - struct page_pool_stats pp_stats = {}; int i, j, idx, pp_idx; data[0] = peer ? peer->ifindex : 0; @@ -225,12 +240,7 @@ static void veth_get_ethtool_stats(struct net_device *dev, } page_pool_stats: - for (i = 0; i < dev->real_num_rx_queues; i++) { - if (!priv->rq[i].page_pool) - continue; - page_pool_get_stats(priv->rq[i].page_pool, &pp_stats); - } - page_pool_ethtool_stats_get(&data[pp_idx], &pp_stats); + veth_get_page_pool_stats(dev, &data[pp_idx]); } static void veth_get_channels(struct net_device *dev,
Since veth is very likely to be enabled and there are some drivers (e.g. mlx5) where CONFIG_PAGE_POOL_STATS is optional, make CONFIG_PAGE_POOL_STATS optional for veth too in order to keep it optional when required. Suggested-by: Jiri Benc <jbenc@redhat.com> Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- drivers/net/Kconfig | 1 - drivers/net/veth.c | 24 +++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-)