Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: don't include ethtool.h from netdevice.h

linux/netdevice.h is included in very many places, touching any
of its dependecies causes large incremental builds.

Drop the linux/ethtool.h include, linux/netdevice.h just needs
a forward declaration of struct ethtool_ops.

Fix all the places which made use of this implicit include.

Acked-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Shannon Nelson <snelson@pensando.io>
Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Link: https://lore.kernel.org/r/20201120225052.1427503-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+51 -1
+1
drivers/isdn/capi/capi.c
··· 11 11 12 12 #include <linux/compiler.h> 13 13 #include <linux/module.h> 14 + #include <linux/ethtool.h> 14 15 #include <linux/errno.h> 15 16 #include <linux/kernel.h> 16 17 #include <linux/major.h>
+1
drivers/media/pci/ttpci/av7110_av.c
··· 11 11 * the project's page is at https://linuxtv.org 12 12 */ 13 13 14 + #include <linux/ethtool.h> 14 15 #include <linux/types.h> 15 16 #include <linux/kernel.h> 16 17 #include <linux/string.h>
+1
drivers/net/bonding/bond_procfs.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 #include <linux/proc_fs.h> 3 + #include <linux/ethtool.h> 3 4 #include <linux/export.h> 4 5 #include <net/net_namespace.h> 5 6 #include <net/netns/generic.h>
+1
drivers/net/can/usb/gs_usb.c
··· 9 9 * Many thanks to all socketcan devs! 10 10 */ 11 11 12 + #include <linux/ethtool.h> 12 13 #include <linux/init.h> 13 14 #include <linux/signal.h> 14 15 #include <linux/module.h>
+1
drivers/net/ethernet/amazon/ena/ena_ethtool.c
··· 3 3 * Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All rights reserved. 4 4 */ 5 5 6 + #include <linux/ethtool.h> 6 7 #include <linux/pci.h> 7 8 8 9 #include "ena_netdev.h"
+2
drivers/net/ethernet/aquantia/atlantic/aq_nic.h
··· 10 10 #ifndef AQ_NIC_H 11 11 #define AQ_NIC_H 12 12 13 + #include <linux/ethtool.h> 14 + 13 15 #include "aq_common.h" 14 16 #include "aq_rss.h" 15 17 #include "aq_hw.h"
+1
drivers/net/ethernet/broadcom/bnxt/bnxt.h
··· 20 20 #define DRV_VER_MIN 10 21 21 #define DRV_VER_UPD 1 22 22 23 + #include <linux/ethtool.h> 23 24 #include <linux/interrupt.h> 24 25 #include <linux/rhashtable.h> 25 26 #include <linux/crash_dump.h>
+1
drivers/net/ethernet/broadcom/bnxt/bnxt_sriov.c
··· 8 8 * the Free Software Foundation. 9 9 */ 10 10 11 + #include <linux/ethtool.h> 11 12 #include <linux/module.h> 12 13 #include <linux/pci.h> 13 14 #include <linux/netdevice.h>
+1
drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
··· 15 15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or 16 16 * NONINFRINGEMENT. See the GNU General Public License for more details. 17 17 ***********************************************************************/ 18 + #include <linux/ethtool.h> 18 19 #include <linux/netdevice.h> 19 20 #include <linux/net_tstamp.h> 20 21 #include <linux/pci.h>
+1
drivers/net/ethernet/cavium/thunder/nicvf_ethtool.c
··· 5 5 6 6 /* ETHTOOL Support for VNIC_VF Device*/ 7 7 8 + #include <linux/ethtool.h> 8 9 #include <linux/pci.h> 9 10 #include <linux/net_tstamp.h> 10 11
+1
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
··· 39 39 40 40 #include <linux/bitops.h> 41 41 #include <linux/cache.h> 42 + #include <linux/ethtool.h> 42 43 #include <linux/interrupt.h> 43 44 #include <linux/list.h> 44 45 #include <linux/netdevice.h>
+1
drivers/net/ethernet/chelsio/cxgb4vf/t4vf_hw.c
··· 33 33 * SOFTWARE. 34 34 */ 35 35 36 + #include <linux/ethtool.h> 36 37 #include <linux/pci.h> 37 38 38 39 #include "t4vf_common.h"
+1
drivers/net/ethernet/google/gve/gve_ethtool.c
··· 4 4 * Copyright (C) 2015-2019 Google, Inc. 5 5 */ 6 6 7 + #include <linux/ethtool.h> 7 8 #include <linux/rtnetlink.h> 8 9 #include "gve.h" 9 10 #include "gve_adminq.h"
+1
drivers/net/ethernet/hisilicon/hns3/hnae3.h
··· 25 25 #include <linux/dcbnl.h> 26 26 #include <linux/delay.h> 27 27 #include <linux/device.h> 28 + #include <linux/ethtool.h> 28 29 #include <linux/module.h> 29 30 #include <linux/netdevice.h> 30 31 #include <linux/pci.h>
+1
drivers/net/ethernet/huawei/hinic/hinic_port.h
··· 8 8 #define HINIC_PORT_H 9 9 10 10 #include <linux/types.h> 11 + #include <linux/ethtool.h> 11 12 #include <linux/etherdevice.h> 12 13 #include <linux/bitops.h> 13 14
+1
drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* Copyright(c) 2013 - 2019 Intel Corporation. */ 3 3 4 + #include <linux/ethtool.h> 4 5 #include <linux/vmalloc.h> 5 6 6 7 #include "fm10k.h"
+1
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
··· 11 11 #ifndef OTX2_COMMON_H 12 12 #define OTX2_COMMON_H 13 13 14 + #include <linux/ethtool.h> 14 15 #include <linux/pci.h> 15 16 #include <linux/iommu.h> 16 17 #include <linux/net_tstamp.h>
+1
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
··· 36 36 37 37 #include <linux/bitops.h> 38 38 #include <linux/compiler.h> 39 + #include <linux/ethtool.h> 39 40 #include <linux/list.h> 40 41 #include <linux/mutex.h> 41 42 #include <linux/netdevice.h>
+3
drivers/net/ethernet/mellanox/mlxsw/core_env.h
··· 4 4 #ifndef _MLXSW_CORE_ENV_H 5 5 #define _MLXSW_CORE_ENV_H 6 6 7 + struct ethtool_modinfo; 8 + struct ethtool_eeprom; 9 + 7 10 int mlxsw_env_module_temp_thresholds_get(struct mlxsw_core *core, int module, 8 11 int off, int *temp); 9 12
+1
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
··· 4 4 #ifndef _MLXSW_SPECTRUM_H 5 5 #define _MLXSW_SPECTRUM_H 6 6 7 + #include <linux/ethtool.h> 7 8 #include <linux/types.h> 8 9 #include <linux/netdevice.h> 9 10 #include <linux/rhashtable.h>
+1
drivers/net/ethernet/mellanox/mlxsw/switchx2.c
··· 6 6 #include <linux/types.h> 7 7 #include <linux/pci.h> 8 8 #include <linux/netdevice.h> 9 + #include <linux/ethtool.h> 9 10 #include <linux/etherdevice.h> 10 11 #include <linux/slab.h> 11 12 #include <linux/device.h>
+1
drivers/net/ethernet/pensando/ionic/ionic_lif.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* Copyright(c) 2017 - 2019 Pensando Systems, Inc */ 3 3 4 + #include <linux/ethtool.h> 4 5 #include <linux/printk.h> 5 6 #include <linux/dynamic_debug.h> 6 7 #include <linux/netdevice.h>
+1
drivers/net/ethernet/pensando/ionic/ionic_stats.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* Copyright(c) 2017 - 2019 Pensando Systems, Inc */ 3 3 4 + #include <linux/ethtool.h> 4 5 #include <linux/kernel.h> 5 6 #include <linux/mutex.h> 6 7 #include <linux/netdevice.h>
+1
drivers/net/ethernet/qualcomm/rmnet/rmnet_vnd.c
··· 5 5 */ 6 6 7 7 #include <linux/etherdevice.h> 8 + #include <linux/ethtool.h> 8 9 #include <linux/if_arp.h> 9 10 #include <net/pkt_sched.h> 10 11 #include "rmnet_config.h"
+1
drivers/net/geneve.c
··· 7 7 8 8 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 9 9 10 + #include <linux/ethtool.h> 10 11 #include <linux/kernel.h> 11 12 #include <linux/module.h> 12 13 #include <linux/etherdevice.h>
+1
drivers/net/hyperv/netvsc_drv.c
··· 10 10 11 11 #include <linux/init.h> 12 12 #include <linux/atomic.h> 13 + #include <linux/ethtool.h> 13 14 #include <linux/module.h> 14 15 #include <linux/highmem.h> 15 16 #include <linux/device.h>
+1
drivers/net/hyperv/rndis_filter.c
··· 6 6 * Haiyang Zhang <haiyangz@microsoft.com> 7 7 * Hank Janssen <hjanssen@microsoft.com> 8 8 */ 9 + #include <linux/ethtool.h> 9 10 #include <linux/kernel.h> 10 11 #include <linux/sched.h> 11 12 #include <linux/wait.h>
+2
drivers/net/ipvlan/ipvlan_main.c
··· 2 2 /* Copyright (c) 2014 Mahesh Bandewar <maheshb@google.com> 3 3 */ 4 4 5 + #include <linux/ethtool.h> 6 + 5 7 #include "ipvlan.h" 6 8 7 9 static int ipvlan_set_port_mode(struct ipvl_port *port, u16 nval,
+1
drivers/net/nlmon.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 + #include <linux/ethtool.h> 2 3 #include <linux/module.h> 3 4 #include <linux/kernel.h> 4 5 #include <linux/netdevice.h>
+1
drivers/net/team/team.c
··· 4 4 * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com> 5 5 */ 6 6 7 + #include <linux/ethtool.h> 7 8 #include <linux/kernel.h> 8 9 #include <linux/types.h> 9 10 #include <linux/module.h>
+1
drivers/net/vrf.c
··· 9 9 * Based on dummy, team and ipvlan drivers 10 10 */ 11 11 12 + #include <linux/ethtool.h> 12 13 #include <linux/module.h> 13 14 #include <linux/kernel.h> 14 15 #include <linux/netdevice.h>
+1
drivers/net/vsockmon.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 + #include <linux/ethtool.h> 2 3 #include <linux/module.h> 3 4 #include <linux/kernel.h> 4 5 #include <linux/if_arp.h>
+2
drivers/scsi/bnx2fc/bnx2fc_fcoe.c
··· 16 16 17 17 #include "bnx2fc.h" 18 18 19 + #include <linux/ethtool.h> 20 + 19 21 static struct list_head adapter_list; 20 22 static struct list_head if_list; 21 23 static u32 adapter_count;
+1
drivers/scsi/fcoe/fcoe_transport.c
··· 10 10 #include <linux/kernel.h> 11 11 #include <linux/list.h> 12 12 #include <linux/netdevice.h> 13 + #include <linux/ethtool.h> 13 14 #include <linux/errno.h> 14 15 #include <linux/crc32.h> 15 16 #include <scsi/libfcoe.h>
+2
drivers/staging/fsl-dpaa2/ethsw/ethsw-ethtool.c
··· 7 7 * 8 8 */ 9 9 10 + #include <linux/ethtool.h> 11 + 10 12 #include "ethsw.h" 11 13 12 14 static struct {
+1
drivers/staging/wimax/i2400m/usb.c
··· 51 51 #include "i2400m-usb.h" 52 52 #include "linux-wimax-i2400m.h" 53 53 #include <linux/debugfs.h> 54 + #include <linux/ethtool.h> 54 55 #include <linux/slab.h> 55 56 #include <linux/module.h> 56 57
+1 -1
include/linux/netdevice.h
··· 34 34 #include <linux/workqueue.h> 35 35 #include <linux/dynamic_queue_limits.h> 36 36 37 - #include <linux/ethtool.h> 38 37 #include <net/net_namespace.h> 39 38 #ifdef CONFIG_DCB 40 39 #include <net/dcbnl.h> ··· 50 51 51 52 struct netpoll_info; 52 53 struct device; 54 + struct ethtool_ops; 53 55 struct phy_device; 54 56 struct dsa_port; 55 57 struct ip_tunnel_parm;
+1
include/linux/qed/qed_if.h
··· 7 7 #ifndef _QED_IF_H 8 8 #define _QED_IF_H 9 9 10 + #include <linux/ethtool.h> 10 11 #include <linux/types.h> 11 12 #include <linux/interrupt.h> 12 13 #include <linux/netdevice.h>
+1
include/net/cfg80211.h
··· 10 10 * Copyright (C) 2018-2020 Intel Corporation 11 11 */ 12 12 13 + #include <linux/ethtool.h> 13 14 #include <linux/netdevice.h> 14 15 #include <linux/debugfs.h> 15 16 #include <linux/list.h>
+1
include/rdma/ib_addr.h
··· 7 7 #ifndef IB_ADDR_H 8 8 #define IB_ADDR_H 9 9 10 + #include <linux/ethtool.h> 10 11 #include <linux/in.h> 11 12 #include <linux/in6.h> 12 13 #include <linux/if_arp.h>
+1
include/rdma/ib_verbs.h
··· 12 12 #ifndef IB_VERBS_H 13 13 #define IB_VERBS_H 14 14 15 + #include <linux/ethtool.h> 15 16 #include <linux/types.h> 16 17 #include <linux/device.h> 17 18 #include <linux/dma-mapping.h>
+1
net/packet/af_packet.c
··· 46 46 * Copyright (C) 2011, <lokec@ccs.neu.edu> 47 47 */ 48 48 49 + #include <linux/ethtool.h> 49 50 #include <linux/types.h> 50 51 #include <linux/mm.h> 51 52 #include <linux/capability.h>
+1
net/sched/sch_cbs.c
··· 50 50 * locredit = max_frame_size * (sendslope / port_transmit_rate) 51 51 */ 52 52 53 + #include <linux/ethtool.h> 53 54 #include <linux/module.h> 54 55 #include <linux/types.h> 55 56 #include <linux/kernel.h>
+1
net/sched/sch_taprio.c
··· 6 6 * 7 7 */ 8 8 9 + #include <linux/ethtool.h> 9 10 #include <linux/types.h> 10 11 #include <linux/slab.h> 11 12 #include <linux/kernel.h>
+1
net/socket.c
··· 52 52 * Based upon Swansea University Computer Society NET3.039 53 53 */ 54 54 55 + #include <linux/ethtool.h> 55 56 #include <linux/mm.h> 56 57 #include <linux/socket.h> 57 58 #include <linux/file.h>