From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 889E3C433EF for ; Wed, 20 Jul 2022 15:11:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241006AbiGTPLN (ORCPT ); Wed, 20 Jul 2022 11:11:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233075AbiGTPLM (ORCPT ); Wed, 20 Jul 2022 11:11:12 -0400 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A75C43AB11 for ; Wed, 20 Jul 2022 08:11:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658329871; x=1689865871; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qK6uRz3wuRC45P86wgP2+w2eANZ5MSchI67ZwRxkB/w=; b=DKSEx9esf8I/awHCQBHww5VzLfzbndMwDi7Zp2p9W5eaLVO2ITULtSY7 NHsg1ZDDXxu7uOrkEI8d4D2o4/uQCX1tuGXMuu0pnUkbH2IzwgUAK3Btq IKeg1z8jDKxs8i/9bVFhVfng8bmgUmWLou/90l+AEmeH4dUpX9kQW+2w5 4DnnwjJkPoPymbc+LiC1dG9u24wHBEUkXXOSuhJFgWs9rnBpq3Jbxbalt RK5UcQ9XzJEWhvv+cXc3BD+91SZK7TP4/1CN9cgbo3FTDQptrLVoUQ1Q1 lkfwDnD5uXKShaw8Q2Hr+qHv6x9S7AS/ssjZqzFJ1F8w4pMUVgH9G5snR w==; X-IronPort-AV: E=McAfee;i="6400,9594,10414"; a="373103824" X-IronPort-AV: E=Sophos;i="5.92,286,1650956400"; d="scan'208";a="373103824" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jul 2022 08:10:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.92,286,1650956400"; d="scan'208";a="665899527" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga004.fm.intel.com with ESMTP; 20 Jul 2022 08:10:48 -0700 Received: from newjersey.igk.intel.com (newjersey.igk.intel.com [10.102.20.203]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 26KFAkRi027439; Wed, 20 Jul 2022 16:10:46 +0100 From: Alexander Lobakin To: "shenjian (K)" Cc: Alexander Lobakin , davem@davemloft.net, kuba@kernel.org, andrew@lunn.ch, ecree.xilinx@gmail.com, hkallweit1@gmail.com, saeed@kernel.org, leon@kernel.org, netdev@vger.kernel.org, linuxarm@openeuler.org, lipeng321@huawei.com, Maciej Fijalkowski , Michal Swiatkowski Subject: Re: [RFCv6 PATCH net-next 02/19] net: replace general features macroes with global netdev_features variables Date: Wed, 20 Jul 2022 17:09:57 +0200 Message-Id: <20220720150957.3875487-1-alexandr.lobakin@intel.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <0cec0cac-dae7-cce7-ccf2-92e5d7086642@huawei.com> References: <0cec0cac-dae7-cce7-ccf2-92e5d7086642@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: shenjian (K) Date: Wed, 20 Apr 2022 17:54:13 +0800 > 在 2022/4/19 22:49, Alexander Lobakin 写道: > > From: Jian Shen > > Date: Tue, 19 Apr 2022 10:21:49 +0800 > > > >> There are many netdev_features bits group used in kernel. The definition > >> will be illegal when using feature bit more than 64. Replace these macroes > >> with global netdev_features variables, initialize them when netdev module > >> init. > >> > >> Signed-off-by: Jian Shen > >> --- > >> drivers/net/wireguard/device.c | 10 +- > >> include/linux/netdev_features.h | 102 +++++++++----- > >> net/core/Makefile | 2 +- > >> net/core/dev.c | 87 ++++++++++++ > >> net/core/netdev_features.c | 241 ++++++++++++++++++++++++++++++++ > >> 5 files changed, 400 insertions(+), 42 deletions(-) > >> create mode 100644 net/core/netdev_features.c > >> > > --- 8< --- > > > >> diff --git a/net/core/dev.c b/net/core/dev.c > >> index 4d6b57752eee..85bb418e8ef1 100644 > >> --- a/net/core/dev.c > >> +++ b/net/core/dev.c > >> @@ -146,6 +146,7 @@ > >> #include > >> #include > >> #include > >> +#include > >> #include > >> #include > >> #include > >> @@ -11255,6 +11256,90 @@ static struct pernet_operations __net_initdata default_device_ops = { > >> .exit_batch = default_device_exit_batch, > >> }; > >> > >> +static void netdev_features_init(void) > > It is an initialization function, so it must be marked as __init. > right, I will add it, thanks! > > >> +{ > >> + netdev_features_t features; > >> + > >> + netdev_features_set_array(&netif_f_never_change_feature_set, > >> + &netdev_never_change_features); > >> + > >> + netdev_features_set_array(&netif_f_gso_feature_set_mask, > > I'm not sure it does make sense to have an empty newline between > > each call. I'd leave newlines only between the "regular" blocks > > and the "multi-call" blocks, I mean, stuff like VLAN, GSO and > > @netdev_ethtool_features. > At first, I added empty newline per call for the it used three lines. > Now the new call just use two lines, I will remove some unnecessary > blank lines. > > Thanks! I see no news regarding the conversion since the end of April, maybe I could pick it and finish if nobody objects? I'll preserve the original authorship for sure. > > >> + &netdev_gso_features_mask); > >> + > >> + netdev_features_set_array(&netif_f_ip_csum_feature_set, > >> + &netdev_ip_csum_features); > >> + > >> + netdev_features_set_array(&netif_f_csum_feature_set_mask, > >> + &netdev_csum_features_mask); > >> + > >> + netdev_features_set_array(&netif_f_general_tso_feature_set, > >> + &netdev_general_tso_features); > >> + > >> + netdev_features_set_array(&netif_f_all_tso_feature_set, > >> + &netdev_all_tso_features); > >> + > >> + netdev_features_set_array(&netif_f_tso_ecn_feature_set, > >> + &netdev_tso_ecn_features); > >> + > >> + netdev_features_set_array(&netif_f_all_fcoe_feature_set, > >> + &netdev_all_fcoe_features); > >> + > >> + netdev_features_set_array(&netif_f_gso_soft_feature_set, > >> + &netdev_gso_software_features); > >> + > >> + netdev_features_set_array(&netif_f_one_for_all_feature_set, > >> + &netdev_one_for_all_features); > >> + > >> + netdev_features_set_array(&netif_f_all_for_all_feature_set, > >> + &netdev_all_for_all_features); > >> + > >> + netdev_features_set_array(&netif_f_upper_disables_feature_set, > >> + &netdev_upper_disable_features); > >> + > >> + netdev_features_set_array(&netif_f_soft_feature_set, > >> + &netdev_soft_features); > >> + > >> + netdev_features_set_array(&netif_f_soft_off_feature_set, > >> + &netdev_soft_off_features); > >> + > >> + netdev_features_set_array(&netif_f_rx_vlan_feature_set, > >> + &netdev_rx_vlan_features); > >> + > >> + netdev_features_set_array(&netif_f_tx_vlan_feature_set, > >> + &netdev_tx_vlan_features); > >> + > >> + netdev_features_set_array(&netif_f_vlan_filter_feature_set, > >> + &netdev_vlan_filter_features); > >> + > >> + netdev_all_vlan_features = netdev_rx_vlan_features; > >> + netdev_features_set(&netdev_all_vlan_features, netdev_tx_vlan_features); > >> + netdev_features_set(&netdev_all_vlan_features, > >> + netdev_vlan_filter_features); > >> + > >> + netdev_features_set_array(&netif_f_ctag_vlan_feature_set, > >> + &netdev_ctag_vlan_features); > >> + > >> + netdev_features_set_array(&netif_f_stag_vlan_feature_set, > >> + &netdev_stag_vlan_features); > >> + > >> + netdev_features_set_array(&netif_f_gso_encap_feature_set, > >> + &netdev_gso_encap_all_features); > >> + > >> + netdev_features_set_array(&netif_f_xfrm_feature_set, > >> + &netdev_xfrm_features); > >> + > >> + netdev_features_set_array(&netif_f_tls_feature_set, > >> + &netdev_tls_features); > >> + > >> + netdev_csum_gso_features_mask = > >> + netdev_features_or(netdev_gso_software_features, > >> + netdev_csum_features_mask); > >> + > >> + netdev_features_fill(&features); > >> + netdev_ethtool_features = > >> + netdev_features_andnot(features, netdev_never_change_features); > >> +} > >> + > >> /* > >> * Initialize the DEV module. At boot time this walks the device list and > >> * unhooks any devices that fail to initialise (normally hardware not > > --- 8< --- > > > >> -- > >> 2.33.0 > > Thanks, > > Al > > > > . > > Thanks, Olek