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

net: Use netif_threaded_enable instead of netif_set_threaded in drivers

Prepare for adding an enum type for NAPI threaded states by adding
netif_threaded_enable API. De-export the existing netif_set_threaded API
and only use it internally. Update existing drivers to use
netif_threaded_enable instead of the de-exported netif_set_threaded.

Note that dev_set_threaded used by mt76 debugfs file is unchanged.

Signed-off-by: Samiullah Khawaja <skhawaja@google.com>
Link: https://patch.msgid.link/20250723013031.2911384-3-skhawaja@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Samiullah Khawaja and committed by
Jakub Kicinski
78afdada 71c52411

+25 -7
+1 -1
drivers/net/ethernet/atheros/atl1c/atl1c_main.c
··· 2688 2688 adapter->mii.mdio_write = atl1c_mdio_write; 2689 2689 adapter->mii.phy_id_mask = 0x1f; 2690 2690 adapter->mii.reg_num_mask = MDIO_CTRL_REG_MASK; 2691 - netif_set_threaded(netdev, true); 2691 + netif_threaded_enable(netdev); 2692 2692 for (i = 0; i < adapter->rx_queue_count; ++i) 2693 2693 netif_napi_add(netdev, &adapter->rrd_ring[i].napi, 2694 2694 atl1c_clean_rx);
+1 -1
drivers/net/ethernet/mellanox/mlxsw/pci.c
··· 156 156 } 157 157 strscpy(mlxsw_pci->napi_dev_rx->name, "mlxsw_rx", 158 158 sizeof(mlxsw_pci->napi_dev_rx->name)); 159 - netif_set_threaded(mlxsw_pci->napi_dev_rx, true); 159 + netif_threaded_enable(mlxsw_pci->napi_dev_rx); 160 160 161 161 return 0; 162 162
+1 -1
drivers/net/ethernet/renesas/ravb_main.c
··· 3075 3075 if (info->coalesce_irqs) { 3076 3076 netdev_sw_irq_coalesce_default_on(ndev); 3077 3077 if (num_present_cpus() == 1) 3078 - netif_set_threaded(ndev, true); 3078 + netif_threaded_enable(ndev); 3079 3079 } 3080 3080 3081 3081 /* Network device register */
+1 -1
drivers/net/wireguard/device.c
··· 366 366 if (ret < 0) 367 367 goto err_free_handshake_queue; 368 368 369 - netif_set_threaded(dev, true); 369 + netif_threaded_enable(dev); 370 370 ret = register_netdevice(dev); 371 371 if (ret < 0) 372 372 goto err_uninit_ratelimiter;
+1 -1
drivers/net/wireless/ath/ath10k/snoc.c
··· 936 936 937 937 bitmap_clear(ar_snoc->pending_ce_irqs, 0, CE_COUNT_MAX); 938 938 939 - netif_set_threaded(ar->napi_dev, true); 939 + netif_threaded_enable(ar->napi_dev); 940 940 ath10k_core_napi_enable(ar); 941 941 /* IRQs are left enabled when we restart due to a firmware crash */ 942 942 if (!test_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags))
+1 -1
include/linux/netdevice.h
··· 589 589 return napi_complete_done(n, 0); 590 590 } 591 591 592 - int netif_set_threaded(struct net_device *dev, bool threaded); 592 + void netif_threaded_enable(struct net_device *dev); 593 593 int dev_set_threaded(struct net_device *dev, bool threaded); 594 594 595 595 void napi_disable(struct napi_struct *n);
+17 -1
net/core/dev.c
··· 7029 7029 7030 7030 return err; 7031 7031 } 7032 - EXPORT_SYMBOL(netif_set_threaded); 7032 + 7033 + /** 7034 + * netif_threaded_enable() - enable threaded NAPIs 7035 + * @dev: net_device instance 7036 + * 7037 + * Enable threaded mode for the NAPI instances of the device. This may be useful 7038 + * for devices where multiple NAPI instances get scheduled by a single 7039 + * interrupt. Threaded NAPI allows moving the NAPI processing to cores other 7040 + * than the core where IRQ is mapped. 7041 + * 7042 + * This function should be called before @dev is registered. 7043 + */ 7044 + void netif_threaded_enable(struct net_device *dev) 7045 + { 7046 + WARN_ON_ONCE(netif_set_threaded(dev, true)); 7047 + } 7048 + EXPORT_SYMBOL(netif_threaded_enable); 7033 7049 7034 7050 /** 7035 7051 * netif_queue_set_napi - Associate queue with the napi
+2
net/core/dev.h
··· 322 322 323 323 int napi_set_threaded(struct napi_struct *n, bool threaded); 324 324 325 + int netif_set_threaded(struct net_device *dev, bool threaded); 326 + 325 327 int rps_cpumask_housekeeping(struct cpumask *mask); 326 328 327 329 #if defined(CONFIG_DEBUG_NET) && defined(CONFIG_BPF_SYSCALL)