linux/drivers/net/ethernet/intel/iavf
Jakub Kicinski 1105ef941c net: ethtool: keep rtnl_lock for ops using ethtool_op_get_link()
Breno reports following splats on mlx5:

  RTNL: assertion failed at net/core/dev.c (2241)
  WARNING: net/core/dev.c:2241 at netif_state_change+0xed/0x130, CPU#5: ethtool/1335
  RIP: 0010:netif_state_change+0xf9/0x130
  Call Trace:
    <TASK>
     __linkwatch_sync_dev+0xea/0x120
     ethtool_op_get_link+0xe/0x20
     __ethtool_get_link+0x26/0x40
     linkstate_prepare_data+0x51/0x200
     ethnl_default_doit+0x213/0x470
     genl_family_rcv_msg_doit+0xdd/0x110

Looks like I missed ethtool_op_get_link() trying to sync linkwatch,
which needs rtnl_lock. Not all drivers do this - bnxt doesn't,
it just returns the link state, so add an opt-in bit.

Reported-by: Breno Leitao <leitao@debian.org>
Fixes: 45079e0013 ("net: ethtool: optionally skip rtnl_lock on Netlink path for GET ops")
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Breno Leitao <leitao@debian.org>
Acked-by: Harshitha Ramamurthy <hramamurthy@google.com>
Link: https://patch.msgid.link/20260624190439.2521219-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-06-25 10:18:34 -07:00
..
iavf_adminq_cmd.h iavf: use libie adminq descriptors 2025-07-24 09:28:26 -07:00
iavf_adminq.c iavf: use libie adminq descriptors 2025-07-24 09:28:26 -07:00
iavf_adminq.h net/intel: Replace manual array size calculation with ARRAY_SIZE 2026-06-13 16:43:47 -07:00
iavf_adv_rss.c iavf: add RSS support for GTP protocol via ethtool 2025-11-06 14:19:43 -08:00
iavf_adv_rss.h iavf: add RSS support for GTP protocol via ethtool 2025-11-06 14:19:43 -08:00
iavf_alloc.h iavf: remove some unused functions and pointless wrappers 2023-06-22 09:26:55 -07:00
iavf_common.c iavf: use libie_aq_str 2025-07-24 09:43:40 -07:00
iavf_devids.h
iavf_ethtool.c net: ethtool: keep rtnl_lock for ops using ethtool_op_get_link() 2026-06-25 10:18:34 -07:00
iavf_fdir.c iavf: add support for offloading tc U32 cls filters 2024-08-13 14:51:29 -07:00
iavf_fdir.h iavf: add support for offloading tc U32 cls filters 2024-08-13 14:51:29 -07:00
iavf_main.c net: change ndo_set_rx_mode_async return type to int 2026-06-09 18:15:29 -07:00
iavf_osdep.h iavf: remove some unused functions and pointless wrappers 2023-06-22 09:26:55 -07:00
iavf_prototype.h iavf: use libie_aq_str 2025-07-24 09:43:40 -07:00
iavf_ptp.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
iavf_ptp.h iavf: add support for Rx timestamps to hotpath 2025-02-14 10:58:08 -08:00
iavf_register.h iavf: remove mask from iavf_irq_enable_queues() 2023-06-10 00:09:54 -07:00
iavf_status.h virtchnl: i40e/iavf: rename iwarp to rdma 2023-01-25 08:55:19 -08:00
iavf_trace.h iavf: define Rx descriptors as qwords 2025-02-14 10:58:08 -08:00
iavf_txrx.c iavf: access ->pp through netmem_desc instead of page 2025-07-23 17:46:55 -07:00
iavf_txrx.h net: intel: move RSS packet classifier types to libie 2025-06-09 09:56:18 -07:00
iavf_type.h iavf: fix wrong VLAN mask for legacy Rx descriptors L2TAG2 2026-04-18 12:01:35 -07:00
iavf_types.h iavf: negotiate PTP capabilities 2025-02-14 10:58:07 -08:00
iavf_virtchnl.c iavf: iavf_virtchnl_completion: drop duplicate ether_addr_equal() test 2026-06-13 16:43:46 -07:00
iavf.h iavf: wait for PF confirmation before removing VLAN filters 2026-04-30 11:37:38 +02:00
Makefile iavf: add initial framework for registering PTP clock 2025-02-14 10:58:07 -08:00