[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220920131059.7626a665@kernel.org>
Date: Tue, 20 Sep 2022 13:10:59 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Jian Shen <shenjian15@...wei.com>
Cc: <davem@...emloft.net>, <ecree.xilinx@...il.com>, <andrew@...n.ch>,
<hkallweit1@...il.com>, <alexandr.lobakin@...el.com>,
<saeed@...nel.org>, <leon@...nel.org>, <netdev@...r.kernel.org>,
<linuxarm@...wei.com>
Subject: Re: [RFCv8 PATCH net-next 01/55] net: introduce operation helpers
for netdev features
On Sun, 18 Sep 2022 09:42:42 +0000 Jian Shen wrote:
> Introduce a set of bitmap operation helpers for netdev features,
> then we can use them to replace the logical operation with them.
>
> The implementation of these helpers are based on the old prototype
> of netdev_features_t is still u64. These helpers will be rewritten
> on the last patch, follow the prototype changes. For the new type
> netdev_features_t maybe large than 8 bytes, use netdev_features_t
> pointer as parameter.
>
> To avoid interdependencies between netdev_features_helper.h and
> netdevice.h, put the helpers for testing feature in the netdevice.h,
> and move advandced helpers like netdev_get_wanted_features() and
> netdev_intersect_features() to netdev_features_helper.h.
> diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
> index 8b77582bdfa0..8023a3f0d43b 100644
> --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
> +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
> @@ -4,6 +4,7 @@
> #include <linux/etherdevice.h>
> #include <linux/io-64-nonatomic-hi-lo.h>
> #include <linux/lockdep.h>
> +#include <linux/netdev_feature_helpers.h>
> #include <net/dst_metadata.h>
>
> #include "nfpcore/nfp_cpp.h"
We need to start breaking upstreamable chunks out of this mega-series
otherwise we won't make any progress..
Please make a patch which will move netdev_intersect_features() and
netdev_get_wanted_features() to the new linux/netdev_feature_helpers.h
header, and add the missing includes. Post it separately as soon as
possible.
> diff --git a/include/linux/netdev_feature_helpers.h b/include/linux/netdev_feature_helpers.h
> new file mode 100644
> index 000000000000..4bb5de61e4e9
> --- /dev/null
> +++ b/include/linux/netdev_feature_helpers.h
> @@ -0,0 +1,607 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Network device features helpers.
> + */
> +#ifndef _LINUX_NETDEV_FEATURES_HELPER_H
> +#define _LINUX_NETDEV_FEATURES_HELPER_H
> +
> +#include <linux/netdevice.h>
> +
> +static inline void __netdev_features_zero(netdev_features_t *dst)
> +{
> + *dst = 0;
> +}
> +
> +#define netdev_features_zero(features) __netdev_features_zero(&(features))
> +
> +/* active_feature prefer to netdev->features */
> +#define netdev_active_features_zero(ndev) \
> + netdev_features_zero((ndev)->features)
> +
No need for empty lines between the defines of the same category, IMHO.
> +#define netdev_hw_features_zero(ndev) \
> + netdev_features_zero((ndev)->hw_features)
Powered by blists - more mailing lists