* [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics
@ 2025-06-30 16:42 Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 1/8] net: s/dev_get_stats/netif_get_stats/ Stanislav Fomichev
` (7 more replies)
0 siblings, 8 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate. We care only
about driver-visible APIs, don't touch stack-internal routines.
This is part 1, I'm considering following up with these (haven't looked
deep, maybe the ones that are frequently used are fine to keep):
* dev_get_tstats64 dev_fetch_sw_netstats
* dev_xdp_prog_count,
* dev_add_pack dev_remove_pack dev_remove_pack
* dev_get_iflink
* dev_fill_forward_path
* dev_getbyhwaddr_rcu dev_getbyhwaddr dev_getfirstbyhwtype
* dev_valid_name dev_valid_name
* dev_forward dev_forward_skb
* dev_queue_xmit_nit dev_nit_active_rcu
* dev_pick_tx_zero
Sending this out to get a sense of direction :-)
v2:
- move a bunch of symbols into NETDEV_INTERNAL (Willem)
- netif_close_many
- __netif_set_mtu
- netif_pre_changeaddr_notify
- netif_get_mac_address
- keep more info in the individual patches' commit message (Willem)
Stanislav Fomichev (8):
net: s/dev_get_stats/netif_get_stats/
net: s/dev_get_port_parent_id/netif_get_port_parent_id/
net: s/dev_get_mac_address/netif_get_mac_address/
net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
net: s/__dev_set_mtu/__netif_set_mtu/
net: s/dev_get_flags/netif_get_flags/
net: s/dev_set_threaded/netif_set_threaded/
net: s/dev_close_many/netif_close_many/
.../networking/net_cachelines/net_device.rst | 2 +-
arch/s390/appldata/appldata_net_sum.c | 2 +-
drivers/infiniband/sw/rxe/rxe_verbs.c | 2 +-
drivers/leds/trigger/ledtrig-netdev.c | 2 +-
drivers/net/bonding/bond_main.c | 10 +-
.../ethernet/apm/xgene/xgene_enet_ethtool.c | 2 +-
.../net/ethernet/atheros/atl1c/atl1c_main.c | 2 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 2 +-
.../net/ethernet/hisilicon/hns/hns_ethtool.c | 2 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 2 +-
.../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 2 +-
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 +-
.../net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/ipvlan/ipvlan_main.c | 8 +-
drivers/net/net_failover.c | 12 +--
drivers/net/netdevsim/netdev.c | 6 +-
drivers/net/tap.c | 6 +-
drivers/net/tun.c | 4 +-
drivers/net/wireguard/device.c | 2 +-
drivers/net/wireless/ath/ath10k/snoc.c | 2 +-
drivers/scsi/fcoe/fcoe_transport.c | 2 +-
drivers/usb/gadget/function/rndis.c | 2 +-
fs/smb/server/smb2pdu.c | 2 +-
include/linux/netdevice.h | 23 ++---
net/8021q/vlan.c | 6 +-
net/8021q/vlanproc.c | 2 +-
net/bridge/br.c | 6 +-
net/bridge/br_if.c | 3 +-
net/bridge/br_netlink.c | 2 +-
net/bridge/br_switchdev.c | 2 +-
net/core/dev.c | 97 +++++++++----------
net/core/dev_addr_lists.c | 2 +-
net/core/dev_api.c | 12 +++
net/core/dev_ioctl.c | 5 +-
net/core/net-procfs.c | 2 +-
net/core/net-sysfs.c | 9 +-
net/core/rtnetlink.c | 10 +-
net/dsa/dsa.c | 4 +-
net/dsa/user.c | 4 +-
net/ipv4/fib_frontend.c | 2 +-
net/ipv4/fib_semantics.c | 2 +-
net/ipv4/ipmr.c | 2 +-
net/ipv4/nexthop.c | 2 +-
net/ipv6/addrconf.c | 2 +-
net/mpls/af_mpls.c | 6 +-
net/openvswitch/vport.c | 2 +-
net/wireless/wext-core.c | 2 +-
50 files changed, 164 insertions(+), 133 deletions(-)
--
2.49.0
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH net-next v2 1/8] net: s/dev_get_stats/netif_get_stats/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 2/8] net: s/dev_get_port_parent_id/netif_get_port_parent_id/ Stanislav Fomichev
` (6 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
arch/s390/appldata/appldata_net_sum.c | 2 +-
drivers/leds/trigger/ledtrig-netdev.c | 2 +-
drivers/net/bonding/bond_main.c | 4 ++--
.../ethernet/apm/xgene/xgene_enet_ethtool.c | 2 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 2 +-
.../net/ethernet/hisilicon/hns/hns_ethtool.c | 2 +-
drivers/net/ethernet/intel/e1000e/ethtool.c | 2 +-
.../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +-
drivers/net/ethernet/intel/ixgbevf/ethtool.c | 2 +-
drivers/net/net_failover.c | 12 +++++------
drivers/net/netdevsim/netdev.c | 6 +++---
drivers/scsi/fcoe/fcoe_transport.c | 2 +-
drivers/usb/gadget/function/rndis.c | 2 +-
include/linux/netdevice.h | 6 +++---
net/8021q/vlanproc.c | 2 +-
net/core/dev.c | 20 +++++++++----------
net/core/net-procfs.c | 2 +-
net/core/net-sysfs.c | 3 ++-
net/core/rtnetlink.c | 4 ++--
net/openvswitch/vport.c | 2 +-
20 files changed, 41 insertions(+), 40 deletions(-)
diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c
index 59c282ca002f..47609e5f9d5d 100644
--- a/arch/s390/appldata/appldata_net_sum.c
+++ b/arch/s390/appldata/appldata_net_sum.c
@@ -83,7 +83,7 @@ static void appldata_get_net_sum_data(void *data)
const struct rtnl_link_stats64 *stats;
struct rtnl_link_stats64 temp;
- stats = dev_get_stats(dev, &temp);
+ stats = netif_get_stats(dev, &temp);
rx_packets += stats->rx_packets;
tx_packets += stats->tx_packets;
rx_bytes += stats->rx_bytes;
diff --git a/drivers/leds/trigger/ledtrig-netdev.c b/drivers/leds/trigger/ledtrig-netdev.c
index 4e048e08c4fd..da4a09b1335c 100644
--- a/drivers/leds/trigger/ledtrig-netdev.c
+++ b/drivers/leds/trigger/ledtrig-netdev.c
@@ -657,7 +657,7 @@ static void netdev_trig_work(struct work_struct *work)
!test_bit(TRIGGER_NETDEV_RX_ERR, &trigger_data->mode))
return;
- dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
+ dev_stats = netif_get_stats(trigger_data->net_dev, &temp);
new_activity =
(test_bit(TRIGGER_NETDEV_TX, &trigger_data->mode) ?
dev_stats->tx_packets : 0) +
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index c4d53e8e7c15..43a580a444af 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2145,7 +2145,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
slave_dev->priv_flags |= IFF_BONDING;
/* initialize slave stats */
- dev_get_stats(new_slave->dev, &new_slave->slave_stats);
+ netif_get_stats(new_slave->dev, &new_slave->slave_stats);
if (bond_is_lb(bond)) {
/* bond_alb_init_slave() must be called before all other stages since
@@ -4581,7 +4581,7 @@ static void bond_get_stats(struct net_device *bond_dev,
bond_for_each_slave_rcu(bond, slave, iter) {
const struct rtnl_link_stats64 *new =
- dev_get_stats(slave->dev, &temp);
+ netif_get_stats(slave->dev, &temp);
bond_fold_stats(stats, new, &slave->slave_stats);
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
index ada70425b48c..4dcd4035f2a9 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c
@@ -268,7 +268,7 @@ static void xgene_get_ethtool_stats(struct net_device *ndev,
struct rtnl_link_stats64 stats;
int i;
- dev_get_stats(ndev, &stats);
+ netif_get_stats(ndev, &stats);
for (i = 0; i < XGENE_STATS_LEN; i++)
data[i] = *(u64 *)((char *)&stats + gstrings_stats[i].offset);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 4f40f6afe88f..751e2dd6b827 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1314,7 +1314,7 @@ static void bcmgenet_get_ethtool_stats(struct net_device *dev,
if (netif_running(dev))
bcmgenet_update_mib_counters(priv);
- dev_get_stats(dev, &stats64);
+ netif_get_stats(dev, &stats64);
for (i = 0; i < BCMGENET_STATS_LEN; i++) {
const struct bcmgenet_stats *s;
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
index 60a586a951a0..d401fb4b1609 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ethtool.c
@@ -857,7 +857,7 @@ static void hns_get_ethtool_stats(struct net_device *netdev,
h->dev->ops->update_stats(h, &netdev->stats);
- net_stats = dev_get_stats(netdev, &temp);
+ net_stats = netif_get_stats(netdev, &temp);
/* get netdev statistics */
p[0] = net_stats->rx_packets;
diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c
index c0bbb12eed2e..971356281afe 100644
--- a/drivers/net/ethernet/intel/e1000e/ethtool.c
+++ b/drivers/net/ethernet/intel/e1000e/ethtool.c
@@ -2050,7 +2050,7 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,
int i;
char *p = NULL;
- dev_get_stats(netdev, &net_stats);
+ netif_get_stats(netdev, &net_stats);
for (i = 0; i < E1000_GLOBAL_STATS_LEN; i++) {
switch (e1000_gstrings_stats[i].type) {
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index 25c3a09ad7f1..317d79f0ff8f 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -1406,7 +1406,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
char *p = NULL;
ixgbe_update_stats(adapter);
- net_stats = dev_get_stats(netdev, &temp);
+ net_stats = netif_get_stats(netdev, &temp);
for (i = 0; i < IXGBE_GLOBAL_STATS_LEN; i++) {
switch (ixgbe_gstrings_stats[i].type) {
case NETDEV_STATS:
diff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c
index 7ac53171b041..52eedfef9797 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c
@@ -428,7 +428,7 @@ static void ixgbevf_get_ethtool_stats(struct net_device *netdev,
char *p;
ixgbevf_update_stats(adapter);
- net_stats = dev_get_stats(netdev, &temp);
+ net_stats = netif_get_stats(netdev, &temp);
for (i = 0; i < IXGBEVF_GLOBAL_STATS_LEN; i++) {
switch (ixgbevf_gstrings_stats[i].type) {
case NETDEV_STATS:
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 5b50d9186f12..ac18dd861f52 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -190,14 +190,14 @@ static void net_failover_get_stats(struct net_device *dev,
slave_dev = rcu_dereference(nfo_info->primary_dev);
if (slave_dev) {
- new = dev_get_stats(slave_dev, &temp);
+ new = netif_get_stats(slave_dev, &temp);
net_failover_fold_stats(stats, new, &nfo_info->primary_stats);
memcpy(&nfo_info->primary_stats, new, sizeof(*new));
}
slave_dev = rcu_dereference(nfo_info->standby_dev);
if (slave_dev) {
- new = dev_get_stats(slave_dev, &temp);
+ new = netif_get_stats(slave_dev, &temp);
net_failover_fold_stats(stats, new, &nfo_info->standby_stats);
memcpy(&nfo_info->standby_stats, new, sizeof(*new));
}
@@ -540,11 +540,11 @@ static int net_failover_slave_register(struct net_device *slave_dev,
if (slave_is_standby) {
rcu_assign_pointer(nfo_info->standby_dev, slave_dev);
standby_dev = slave_dev;
- dev_get_stats(standby_dev, &nfo_info->standby_stats);
+ netif_get_stats(standby_dev, &nfo_info->standby_stats);
} else {
rcu_assign_pointer(nfo_info->primary_dev, slave_dev);
primary_dev = slave_dev;
- dev_get_stats(primary_dev, &nfo_info->primary_stats);
+ netif_get_stats(primary_dev, &nfo_info->primary_stats);
failover_dev->min_mtu = slave_dev->min_mtu;
failover_dev->max_mtu = slave_dev->max_mtu;
}
@@ -606,7 +606,7 @@ static int net_failover_slave_unregister(struct net_device *slave_dev,
dev_close(slave_dev);
nfo_info = netdev_priv(failover_dev);
- dev_get_stats(failover_dev, &nfo_info->failover_stats);
+ netif_get_stats(failover_dev, &nfo_info->failover_stats);
slave_is_standby = slave_dev->dev.parent == failover_dev->dev.parent;
if (slave_is_standby) {
@@ -648,7 +648,7 @@ static int net_failover_slave_link_change(struct net_device *slave_dev,
netif_carrier_on(failover_dev);
netif_tx_wake_all_queues(failover_dev);
} else {
- dev_get_stats(failover_dev, &nfo_info->failover_stats);
+ netif_get_stats(failover_dev, &nfo_info->failover_stats);
netif_carrier_off(failover_dev);
netif_tx_stop_all_queues(failover_dev);
}
diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
index e36d3e846c2d..55d93c8c6050 100644
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -581,7 +581,7 @@ static void nsim_get_queue_stats_rx(struct net_device *dev, int idx,
struct rtnl_link_stats64 rtstats = {};
if (!idx)
- dev_get_stats(dev, &rtstats);
+ netif_get_stats(dev, &rtstats);
stats->packets = rtstats.rx_packets - !!rtstats.rx_packets;
stats->bytes = rtstats.rx_bytes;
@@ -593,7 +593,7 @@ static void nsim_get_queue_stats_tx(struct net_device *dev, int idx,
struct rtnl_link_stats64 rtstats = {};
if (!idx)
- dev_get_stats(dev, &rtstats);
+ netif_get_stats(dev, &rtstats);
stats->packets = rtstats.tx_packets - !!rtstats.tx_packets;
stats->bytes = rtstats.tx_bytes;
@@ -605,7 +605,7 @@ static void nsim_get_base_stats(struct net_device *dev,
{
struct rtnl_link_stats64 rtstats = {};
- dev_get_stats(dev, &rtstats);
+ netif_get_stats(dev, &rtstats);
rx->packets = !!rtstats.rx_packets;
rx->bytes = 0;
diff --git a/drivers/scsi/fcoe/fcoe_transport.c b/drivers/scsi/fcoe/fcoe_transport.c
index 2f478426f16e..91ea25f7c5b6 100644
--- a/drivers/scsi/fcoe/fcoe_transport.c
+++ b/drivers/scsi/fcoe/fcoe_transport.c
@@ -191,7 +191,7 @@ void __fcoe_get_lesb(struct fc_lport *lport,
lesb->lesb_vlink_fail = htonl(vlfc);
lesb->lesb_miss_fka = htonl(mdac);
lesb->lesb_fcs_error =
- htonl(dev_get_stats(netdev, &temp)->rx_crc_errors);
+ htonl(netif_get_stats(netdev, &temp)->rx_crc_errors);
}
EXPORT_SYMBOL_GPL(__fcoe_get_lesb);
diff --git a/drivers/usb/gadget/function/rndis.c b/drivers/usb/gadget/function/rndis.c
index afd75d72412c..0cdb72f2d9ff 100644
--- a/drivers/usb/gadget/function/rndis.c
+++ b/drivers/usb/gadget/function/rndis.c
@@ -199,7 +199,7 @@ static int gen_ndis_query_resp(struct rndis_params *params, u32 OID, u8 *buf,
resp->InformationBufferOffset = cpu_to_le32(16);
net = params->dev;
- stats = dev_get_stats(net, &temp);
+ stats = netif_get_stats(net, &temp);
switch (OID) {
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 5847c20994d3..eff09d110e25 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -218,7 +218,7 @@ struct net_device_stats {
#undef NET_DEV_STAT
/* per-cpu stats, allocated on demand.
- * Try to fit them in a single cache line, for dev_get_stats() sake.
+ * Try to fit them in a single cache line, for netif_get_stats() sake.
*/
struct net_device_core_stats {
unsigned long rx_dropped;
@@ -4997,8 +4997,8 @@ void netdev_notify_peers(struct net_device *dev);
void netdev_features_change(struct net_device *dev);
/* Load a device via the kmod */
void dev_load(struct net *net, const char *name);
-struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
- struct rtnl_link_stats64 *storage);
+struct rtnl_link_stats64 *netif_get_stats(struct net_device *dev,
+ struct rtnl_link_stats64 *storage);
void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
const struct net_device_stats *netdev_stats);
void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
diff --git a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c
index fa67374bda49..bcdcbf419e09 100644
--- a/net/8021q/vlanproc.c
+++ b/net/8021q/vlanproc.c
@@ -236,7 +236,7 @@ static int vlandev_seq_show(struct seq_file *seq, void *offset)
if (!is_vlan_dev(vlandev))
return 0;
- stats = dev_get_stats(vlandev, &temp);
+ stats = netif_get_stats(vlandev, &temp);
seq_printf(seq,
"%s VID: %d REORDER_HDR: %i dev->priv_flags: %x\n",
vlandev->name, vlan->vlan_id,
diff --git a/net/core/dev.c b/net/core/dev.c
index 7ee808eb068e..7198a833f697 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -11558,17 +11558,17 @@ noinline void netdev_core_stats_inc(struct net_device *dev, u32 offset)
EXPORT_SYMBOL_GPL(netdev_core_stats_inc);
/**
- * dev_get_stats - get network device statistics
- * @dev: device to get statistics from
- * @storage: place to store stats
+ * netif_get_stats() - get network device statistics
+ * @dev: device to get statistics from
+ * @storage: place to store stats
*
- * Get network statistics from device. Return @storage.
- * The device driver may provide its own method by setting
- * dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats;
- * otherwise the internal statistics structure is used.
+ * Get network statistics from device. Return @storage.
+ * The device driver may provide its own method by setting
+ * dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats;
+ * otherwise the internal statistics structure is used.
*/
-struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
- struct rtnl_link_stats64 *storage)
+struct rtnl_link_stats64 *netif_get_stats(struct net_device *dev,
+ struct rtnl_link_stats64 *storage)
{
const struct net_device_ops *ops = dev->netdev_ops;
const struct net_device_core_stats __percpu *p;
@@ -11616,7 +11616,7 @@ struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
}
return storage;
}
-EXPORT_SYMBOL(dev_get_stats);
+EXPORT_SYMBOL(netif_get_stats);
/**
* dev_fetch_sw_netstats - get per-cpu network device statistics
diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c
index 4f0f0709a1cb..14b8bebacefd 100644
--- a/net/core/net-procfs.c
+++ b/net/core/net-procfs.c
@@ -44,7 +44,7 @@ static void dev_seq_stop(struct seq_file *seq, void *v)
static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
{
struct rtnl_link_stats64 temp;
- const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
+ const struct rtnl_link_stats64 *stats = netif_get_stats(dev, &temp);
seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
"%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index c9b969386399..69109584efef 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -818,7 +818,8 @@ static ssize_t netstat_show(const struct device *d,
rcu_read_lock();
if (dev_isalive(dev)) {
struct rtnl_link_stats64 temp;
- const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
+ const struct rtnl_link_stats64 *stats = netif_get_stats(dev,
+ &temp);
ret = sysfs_emit(buf, fmt_u64, *(u64 *)(((u8 *)stats) + offset));
}
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index c57692eb8da9..6d75030aa70f 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1471,7 +1471,7 @@ static noinline_for_stack int rtnl_fill_stats(struct sk_buff *skb,
return -EMSGSIZE;
sp = nla_data(attr);
- dev_get_stats(dev, sp);
+ netif_get_stats(dev, sp);
attr = nla_reserve(skb, IFLA_STATS,
sizeof(struct rtnl_link_stats));
@@ -5935,7 +5935,7 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
}
sp = nla_data(attr);
- dev_get_stats(dev, sp);
+ netif_get_stats(dev, sp);
}
if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_XSTATS, *idxattr)) {
diff --git a/net/openvswitch/vport.c b/net/openvswitch/vport.c
index 8732f6e51ae5..33049a860287 100644
--- a/net/openvswitch/vport.c
+++ b/net/openvswitch/vport.c
@@ -286,7 +286,7 @@ void ovs_vport_get_stats(struct vport *vport, struct ovs_vport_stats *stats)
const struct rtnl_link_stats64 *dev_stats;
struct rtnl_link_stats64 temp;
- dev_stats = dev_get_stats(vport->dev, &temp);
+ dev_stats = netif_get_stats(vport->dev, &temp);
stats->rx_errors = dev_stats->rx_errors;
stats->tx_errors = dev_stats->tx_errors;
stats->tx_dropped = dev_stats->tx_dropped;
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 2/8] net: s/dev_get_port_parent_id/netif_get_port_parent_id/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 1/8] net: s/dev_get_stats/netif_get_stats/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/ Stanislav Fomichev
` (5 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
.../net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
include/linux/netdevice.h | 4 ++--
net/bridge/br_switchdev.c | 2 +-
net/core/dev.c | 23 +++++++++----------
net/core/net-sysfs.c | 2 +-
net/core/rtnetlink.c | 2 +-
net/ipv4/ipmr.c | 2 +-
7 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index fef418e1ed1a..32c07a8b03d1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -5446,7 +5446,7 @@ int mlx5e_tc_esw_init(struct mlx5_rep_uplink_priv *uplink_priv)
goto err_action_counter;
}
- err = dev_get_port_parent_id(priv->netdev, &ppid, false);
+ err = netif_get_port_parent_id(priv->netdev, &ppid, false);
if (!err) {
memcpy(&key, &ppid.id, sizeof(key));
mlx5_esw_offloads_devcom_init(esw, key);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index eff09d110e25..ac6b9e68e858 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4222,8 +4222,8 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
int dev_set_mac_address_user(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack);
int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
-int dev_get_port_parent_id(struct net_device *dev,
- struct netdev_phys_item_id *ppid, bool recurse);
+int netif_get_port_parent_id(struct net_device *dev,
+ struct netdev_phys_item_id *ppid, bool recurse);
bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b);
struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again);
diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c
index 95d7355a0407..1385ff604bbd 100644
--- a/net/bridge/br_switchdev.c
+++ b/net/bridge/br_switchdev.c
@@ -834,7 +834,7 @@ int br_switchdev_port_offload(struct net_bridge_port *p,
struct netdev_phys_item_id ppid;
int err;
- err = dev_get_port_parent_id(dev, &ppid, false);
+ err = netif_get_port_parent_id(dev, &ppid, false);
if (err)
return err;
diff --git a/net/core/dev.c b/net/core/dev.c
index 7198a833f697..7d38d080efe0 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9816,16 +9816,15 @@ int dev_get_phys_port_name(struct net_device *dev,
}
/**
- * dev_get_port_parent_id - Get the device's port parent identifier
- * @dev: network device
- * @ppid: pointer to a storage for the port's parent identifier
- * @recurse: allow/disallow recursion to lower devices
+ * netif_get_port_parent_id() - Get the device's port parent identifier
+ * @dev: network device
+ * @ppid: pointer to a storage for the port's parent identifier
+ * @recurse: allow/disallow recursion to lower devices
*
- * Get the devices's port parent identifier
+ * Get the devices's port parent identifier
*/
-int dev_get_port_parent_id(struct net_device *dev,
- struct netdev_phys_item_id *ppid,
- bool recurse)
+int netif_get_port_parent_id(struct net_device *dev,
+ struct netdev_phys_item_id *ppid, bool recurse)
{
const struct net_device_ops *ops = dev->netdev_ops;
struct netdev_phys_item_id first = { };
@@ -9844,7 +9843,7 @@ int dev_get_port_parent_id(struct net_device *dev,
return err;
netdev_for_each_lower_dev(dev, lower_dev, iter) {
- err = dev_get_port_parent_id(lower_dev, ppid, true);
+ err = netif_get_port_parent_id(lower_dev, ppid, true);
if (err)
break;
if (!first.id_len)
@@ -9855,7 +9854,7 @@ int dev_get_port_parent_id(struct net_device *dev,
return err;
}
-EXPORT_SYMBOL(dev_get_port_parent_id);
+EXPORT_SYMBOL(netif_get_port_parent_id);
/**
* netdev_port_same_parent_id - Indicate if two network devices have
@@ -9868,8 +9867,8 @@ bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b)
struct netdev_phys_item_id a_id = { };
struct netdev_phys_item_id b_id = { };
- if (dev_get_port_parent_id(a, &a_id, true) ||
- dev_get_port_parent_id(b, &b_id, true))
+ if (netif_get_port_parent_id(a, &a_id, true) ||
+ netif_get_port_parent_id(b, &b_id, true))
return false;
return netdev_phys_item_id_same(&a_id, &b_id);
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 69109584efef..ebb5a6a11bb8 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -687,7 +687,7 @@ static ssize_t phys_switch_id_show(struct device *dev,
if (ret)
return ret;
- ret = dev_get_port_parent_id(netdev, &ppid, false);
+ ret = netif_get_port_parent_id(netdev, &ppid, false);
if (!ret)
ret = sysfs_emit(buf, "%*phN\n", ppid.id_len, ppid.id);
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 6d75030aa70f..94c449bad59e 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1446,7 +1446,7 @@ static int rtnl_phys_switch_id_fill(struct sk_buff *skb, struct net_device *dev)
struct netdev_phys_item_id ppid = { };
int err;
- err = dev_get_port_parent_id(dev, &ppid, false);
+ err = netif_get_port_parent_id(dev, &ppid, false);
if (err) {
if (err == -EOPNOTSUPP)
return 0;
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 3a2044e6033d..e86a8a862c41 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -901,7 +901,7 @@ static int vif_add(struct net *net, struct mr_table *mrt,
vifc->vifc_flags | (!mrtsock ? VIFF_STATIC : 0),
(VIFF_TUNNEL | VIFF_REGISTER));
- err = dev_get_port_parent_id(dev, &ppid, true);
+ err = netif_get_port_parent_id(dev, &ppid, true);
if (err == 0) {
memcpy(v->dev_parent_id.id, ppid.id, ppid.id_len);
v->dev_parent_id.id_len = ppid.id_len;
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 1/8] net: s/dev_get_stats/netif_get_stats/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 2/8] net: s/dev_get_port_parent_id/netif_get_port_parent_id/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 21:00 ` Willem de Bruijn
2025-06-30 16:42 ` [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/ Stanislav Fomichev
` (4 subsequent siblings)
7 siblings, 1 reply; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
netif_get_mac_address is used only by tun/tap, so move it into
NETDEV_INTERNAL namespace.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/net/tap.c | 6 ++++--
drivers/net/tun.c | 4 +++-
include/linux/netdevice.h | 2 +-
net/core/dev.c | 4 ++--
net/core/dev_ioctl.c | 3 ++-
net/core/net-sysfs.c | 2 +-
6 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/drivers/net/tap.c b/drivers/net/tap.c
index bdf0788d8e66..4c85770c809b 100644
--- a/drivers/net/tap.c
+++ b/drivers/net/tap.c
@@ -28,6 +28,8 @@
#include "tun_vnet.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
#define TAP_IFFEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
static struct proto tap_proto = {
@@ -1000,8 +1002,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
return -ENOLINK;
}
ret = 0;
- dev_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
- tap->dev->name);
+ netif_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
+ tap->dev->name);
if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
copy_to_user(&ifr->ifr_hwaddr, &ss, sizeof(ifr->ifr_hwaddr)))
ret = -EFAULT;
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index f8c5e2fd04df..4509ae68decf 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -85,6 +85,8 @@
#include "tun_vnet.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
static void tun_default_link_ksettings(struct net_device *dev,
struct ethtool_link_ksettings *cmd);
@@ -3186,7 +3188,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd,
case SIOCGIFHWADDR:
/* Get hw address */
- dev_get_mac_address(&ifr.ifr_hwaddr, net, tun->dev->name);
+ netif_get_mac_address(&ifr.ifr_hwaddr, net, tun->dev->name);
if (copy_to_user(argp, &ifr, ifreq_len))
ret = -EFAULT;
break;
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ac6b9e68e858..2f3fba5c67c2 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4221,7 +4221,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack);
int dev_set_mac_address_user(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack);
-int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
+int netif_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name);
int netif_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid, bool recurse);
bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b);
diff --git a/net/core/dev.c b/net/core/dev.c
index 7d38d080efe0..ff7fde1a1ac9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9737,7 +9737,7 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
DECLARE_RWSEM(dev_addr_sem);
/* "sa" is a true struct sockaddr with limited "sa_data" member. */
-int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
+int netif_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
{
size_t size = sizeof(sa->sa_data_min);
struct net_device *dev;
@@ -9763,7 +9763,7 @@ int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
up_read(&dev_addr_sem);
return ret;
}
-EXPORT_SYMBOL(dev_get_mac_address);
+EXPORT_SYMBOL_NS_GPL(netif_get_mac_address, "NETDEV_INTERNAL");
int netif_change_carrier(struct net_device *dev, bool new_carrier)
{
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
index 616479e71466..ceb2d63a818a 100644
--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -728,7 +728,8 @@ int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr,
switch (cmd) {
case SIOCGIFHWADDR:
dev_load(net, ifr->ifr_name);
- ret = dev_get_mac_address(&ifr->ifr_hwaddr, net, ifr->ifr_name);
+ ret = netif_get_mac_address(&ifr->ifr_hwaddr, net,
+ ifr->ifr_name);
if (colon)
*colon = ':';
return ret;
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index ebb5a6a11bb8..c2783323b589 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -256,7 +256,7 @@ static ssize_t name_assign_type_show(struct device *dev,
}
static DEVICE_ATTR_RO(name_assign_type);
-/* use same locking rules as GIFHWADDR ioctl's (dev_get_mac_address()) */
+/* use same locking rules as GIFHWADDR ioctl's (netif_get_mac_address()) */
static ssize_t address_show(struct device *dev, struct device_attribute *attr,
char *buf)
{
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
` (2 preceding siblings ...)
2025-06-30 16:42 ` [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-07-02 6:54 ` kernel test robot
2025-07-02 22:21 ` kernel test robot
2025-06-30 16:42 ` [PATCH net-next v2 5/8] net: s/__dev_set_mtu/__netif_set_mtu/ Stanislav Fomichev
` (3 subsequent siblings)
7 siblings, 2 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
netif_pre_changeaddr_notify is used only by ipvlan/bond, so move it into
NETDEV_INTERNAL namespace.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/net/bonding/bond_main.c | 4 +++-
drivers/net/ipvlan/ipvlan_main.c | 8 +++++---
include/linux/netdevice.h | 4 ++--
net/bridge/br.c | 6 +++---
net/bridge/br_if.c | 3 ++-
net/core/dev.c | 16 ++++++++--------
net/core/dev_addr_lists.c | 2 +-
7 files changed, 24 insertions(+), 19 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 43a580a444af..805e50eee979 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -95,6 +95,8 @@
#include "bonding_priv.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
/*---------------------------- Module parameters ----------------------------*/
/* monitor all links that often (in milliseconds). <=0 disables monitoring */
@@ -1038,7 +1040,7 @@ static int bond_set_dev_addr(struct net_device *bond_dev,
slave_dbg(bond_dev, slave_dev, "bond_dev=%p slave_dev=%p slave_dev->addr_len=%d\n",
bond_dev, slave_dev, slave_dev->addr_len);
- err = dev_pre_changeaddr_notify(bond_dev, slave_dev->dev_addr, NULL);
+ err = netif_pre_changeaddr_notify(bond_dev, slave_dev->dev_addr, NULL);
if (err)
return err;
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index 0ed2fd833a5d..c951f0ee3cf9 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -7,6 +7,8 @@
#include "ipvlan.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
static int ipvlan_set_port_mode(struct ipvl_port *port, u16 nval,
struct netlink_ext_ack *extack)
{
@@ -784,9 +786,9 @@ static int ipvlan_device_event(struct notifier_block *unused,
case NETDEV_PRE_CHANGEADDR:
prechaddr_info = ptr;
list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
- err = dev_pre_changeaddr_notify(ipvlan->dev,
- prechaddr_info->dev_addr,
- extack);
+ err = netif_pre_changeaddr_notify(ipvlan->dev,
+ prechaddr_info->dev_addr,
+ extack);
if (err)
return notifier_from_errno(err);
}
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 2f3fba5c67c2..85c0dec0177e 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4213,8 +4213,8 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net,
int __dev_set_mtu(struct net_device *, int);
int netif_set_mtu(struct net_device *dev, int new_mtu);
int dev_set_mtu(struct net_device *, int);
-int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
- struct netlink_ext_ack *extack);
+int netif_pre_changeaddr_notify(struct net_device *dev, const char *addr,
+ struct netlink_ext_ack *extack);
int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack);
int dev_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
diff --git a/net/bridge/br.c b/net/bridge/br.c
index 0adeafe11a36..9d3748396795 100644
--- a/net/bridge/br.c
+++ b/net/bridge/br.c
@@ -74,9 +74,9 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
if (br->dev->addr_assign_type == NET_ADDR_SET)
break;
prechaddr_info = ptr;
- err = dev_pre_changeaddr_notify(br->dev,
- prechaddr_info->dev_addr,
- extack);
+ err = netif_pre_changeaddr_notify(br->dev,
+ prechaddr_info->dev_addr,
+ extack);
if (err)
return notifier_from_errno(err);
break;
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
index 2450690f98cf..98c5b9c3145f 100644
--- a/net/bridge/br_if.c
+++ b/net/bridge/br_if.c
@@ -668,7 +668,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev,
/* Ask for permission to use this MAC address now, even if we
* don't end up choosing it below.
*/
- err = dev_pre_changeaddr_notify(br->dev, dev->dev_addr, extack);
+ err = netif_pre_changeaddr_notify(br->dev, dev->dev_addr,
+ extack);
if (err)
goto err6;
}
diff --git a/net/core/dev.c b/net/core/dev.c
index ff7fde1a1ac9..fc3720d11267 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9688,13 +9688,13 @@ void netif_set_group(struct net_device *dev, int new_group)
}
/**
- * dev_pre_changeaddr_notify - Call NETDEV_PRE_CHANGEADDR.
- * @dev: device
- * @addr: new address
- * @extack: netlink extended ack
+ * netif_pre_changeaddr_notify() - Call NETDEV_PRE_CHANGEADDR.
+ * @dev: device
+ * @addr: new address
+ * @extack: netlink extended ack
*/
-int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
- struct netlink_ext_ack *extack)
+int netif_pre_changeaddr_notify(struct net_device *dev, const char *addr,
+ struct netlink_ext_ack *extack)
{
struct netdev_notifier_pre_changeaddr_info info = {
.info.dev = dev,
@@ -9706,7 +9706,7 @@ int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
rc = call_netdevice_notifiers_info(NETDEV_PRE_CHANGEADDR, &info.info);
return notifier_to_errno(rc);
}
-EXPORT_SYMBOL(dev_pre_changeaddr_notify);
+EXPORT_SYMBOL_NS_GPL(netif_pre_changeaddr_notify, "NETDEV_INTERNAL");
int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
struct netlink_ext_ack *extack)
@@ -9720,7 +9720,7 @@ int netif_set_mac_address(struct net_device *dev, struct sockaddr_storage *ss,
return -EINVAL;
if (!netif_device_present(dev))
return -ENODEV;
- err = dev_pre_changeaddr_notify(dev, ss->__data, extack);
+ err = netif_pre_changeaddr_notify(dev, ss->__data, extack);
if (err)
return err;
if (memcmp(dev->dev_addr, ss->__data, dev->addr_len)) {
diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c
index 90716bd736f3..76c91f224886 100644
--- a/net/core/dev_addr_lists.c
+++ b/net/core/dev_addr_lists.c
@@ -603,7 +603,7 @@ int dev_addr_add(struct net_device *dev, const unsigned char *addr,
ASSERT_RTNL();
- err = dev_pre_changeaddr_notify(dev, addr, NULL);
+ err = netif_pre_changeaddr_notify(dev, addr, NULL);
if (err)
return err;
err = __hw_addr_add(&dev->dev_addrs, addr, dev->addr_len, addr_type);
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 5/8] net: s/__dev_set_mtu/__netif_set_mtu/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
` (3 preceding siblings ...)
2025-06-30 16:42 ` [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 6/8] net: s/dev_get_flags/netif_get_flags/ Stanislav Fomichev
` (2 subsequent siblings)
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
__netif_set_mtu is used only by bond, so move it into
NETDEV_INTERNAL namespace.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/net/bonding/bond_main.c | 2 +-
include/linux/netdevice.h | 2 +-
net/core/dev.c | 8 ++++----
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 805e50eee979..d9788677b42a 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -2654,7 +2654,7 @@ static int __bond_release_one(struct net_device *bond_dev,
if (unregister) {
netdev_lock_ops(slave_dev);
- __dev_set_mtu(slave_dev, slave->original_mtu);
+ __netif_set_mtu(slave_dev, slave->original_mtu);
netdev_unlock_ops(slave_dev);
} else {
dev_set_mtu(slave_dev, slave->original_mtu);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 85c0dec0177e..454cf4bb513b 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4210,7 +4210,7 @@ int __dev_change_net_namespace(struct net_device *dev, struct net *net,
struct netlink_ext_ack *extack);
int dev_change_net_namespace(struct net_device *dev, struct net *net,
const char *pat);
-int __dev_set_mtu(struct net_device *, int);
+int __netif_set_mtu(struct net_device *dev, int new_mtu);
int netif_set_mtu(struct net_device *dev, int new_mtu);
int dev_set_mtu(struct net_device *, int);
int netif_pre_changeaddr_notify(struct net_device *dev, const char *addr,
diff --git a/net/core/dev.c b/net/core/dev.c
index fc3720d11267..250b64810733 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9566,7 +9566,7 @@ int netif_change_flags(struct net_device *dev, unsigned int flags,
return ret;
}
-int __dev_set_mtu(struct net_device *dev, int new_mtu)
+int __netif_set_mtu(struct net_device *dev, int new_mtu)
{
const struct net_device_ops *ops = dev->netdev_ops;
@@ -9577,7 +9577,7 @@ int __dev_set_mtu(struct net_device *dev, int new_mtu)
WRITE_ONCE(dev->mtu, new_mtu);
return 0;
}
-EXPORT_SYMBOL(__dev_set_mtu);
+EXPORT_SYMBOL_NS_GPL(__netif_set_mtu, "NETDEV_INTERNAL");
int dev_validate_mtu(struct net_device *dev, int new_mtu,
struct netlink_ext_ack *extack)
@@ -9624,7 +9624,7 @@ int netif_set_mtu_ext(struct net_device *dev, int new_mtu,
return err;
orig_mtu = dev->mtu;
- err = __dev_set_mtu(dev, new_mtu);
+ err = __netif_set_mtu(dev, new_mtu);
if (!err) {
err = call_netdevice_notifiers_mtu(NETDEV_CHANGEMTU, dev,
@@ -9634,7 +9634,7 @@ int netif_set_mtu_ext(struct net_device *dev, int new_mtu,
/* setting mtu back and notifying everyone again,
* so that they have a chance to revert changes.
*/
- __dev_set_mtu(dev, orig_mtu);
+ __netif_set_mtu(dev, orig_mtu);
call_netdevice_notifiers_mtu(NETDEV_CHANGEMTU, dev,
new_mtu);
}
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 6/8] net: s/dev_get_flags/netif_get_flags/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
` (4 preceding siblings ...)
2025-06-30 16:42 ` [PATCH net-next v2 5/8] net: s/__dev_set_mtu/__netif_set_mtu/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 7/8] net: s/dev_set_threaded/netif_set_threaded/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 8/8] net: s/dev_close_many/netif_close_many/ Stanislav Fomichev
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/infiniband/sw/rxe/rxe_verbs.c | 2 +-
fs/smb/server/smb2pdu.c | 2 +-
include/linux/netdevice.h | 2 +-
net/8021q/vlan.c | 2 +-
net/bridge/br_netlink.c | 2 +-
net/core/dev.c | 10 +++++-----
net/core/dev_ioctl.c | 2 +-
net/core/rtnetlink.c | 4 ++--
net/ipv4/fib_frontend.c | 2 +-
net/ipv4/fib_semantics.c | 2 +-
net/ipv4/nexthop.c | 2 +-
net/ipv6/addrconf.c | 2 +-
net/mpls/af_mpls.c | 6 +++---
net/wireless/wext-core.c | 2 +-
14 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index 2331e698a65b..4f86b56fee26 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -65,7 +65,7 @@ static int rxe_query_port(struct ib_device *ibdev,
attr->state = ib_get_curr_port_state(ndev);
if (attr->state == IB_PORT_ACTIVE)
attr->phys_state = IB_PORT_PHYS_STATE_LINK_UP;
- else if (dev_get_flags(ndev) & IFF_UP)
+ else if (netif_get_flags(ndev) & IFF_UP)
attr->phys_state = IB_PORT_PHYS_STATE_POLLING;
else
attr->phys_state = IB_PORT_PHYS_STATE_DISABLED;
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index fafa86273f12..b837535d2bfc 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -7847,7 +7847,7 @@ static int fsctl_query_iface_info_ioctl(struct ksmbd_conn *conn,
if (!ksmbd_find_netdev_name_iface_list(netdev->name))
continue;
- flags = dev_get_flags(netdev);
+ flags = netif_get_flags(netdev);
if (!(flags & IFF_RUNNING))
continue;
ipv6_retry:
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 454cf4bb513b..184e2e80ec2a 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -4195,7 +4195,7 @@ int generic_hwtstamp_set_lower(struct net_device *dev,
struct kernel_hwtstamp_config *kernel_cfg,
struct netlink_ext_ack *extack);
int dev_ethtool(struct net *net, struct ifreq *ifr, void __user *userdata);
-unsigned int dev_get_flags(const struct net_device *);
+unsigned int netif_get_flags(const struct net_device *dev);
int __dev_change_flags(struct net_device *dev, unsigned int flags,
struct netlink_ext_ack *extack);
int netif_change_flags(struct net_device *dev, unsigned int flags,
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 06908e37c3d9..df19a9c0c9d9 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -459,7 +459,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
case NETDEV_UP:
/* Put all VLANs for this dev in the up state too. */
vlan_group_for_each_dev(grp, i, vlandev) {
- flgs = dev_get_flags(vlandev);
+ flgs = netif_get_flags(vlandev);
if (flgs & IFF_UP)
continue;
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
index 6e337937d0d7..4e2d53b27221 100644
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -479,7 +479,7 @@ static int br_fill_ifinfo(struct sk_buff *skb,
hdr->__ifi_pad = 0;
hdr->ifi_type = dev->type;
hdr->ifi_index = dev->ifindex;
- hdr->ifi_flags = dev_get_flags(dev);
+ hdr->ifi_flags = netif_get_flags(dev);
hdr->ifi_change = 0;
if (nla_put_string(skb, IFLA_IFNAME, dev->name) ||
diff --git a/net/core/dev.c b/net/core/dev.c
index 250b64810733..3b804f49872a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -9426,12 +9426,12 @@ void dev_set_rx_mode(struct net_device *dev)
}
/**
- * dev_get_flags - get flags reported to userspace
- * @dev: device
+ * netif_get_flags() - get flags reported to userspace
+ * @dev: device
*
- * Get the combination of flag bits exported through APIs to userspace.
+ * Get the combination of flag bits exported through APIs to userspace.
*/
-unsigned int dev_get_flags(const struct net_device *dev)
+unsigned int netif_get_flags(const struct net_device *dev)
{
unsigned int flags;
@@ -9454,7 +9454,7 @@ unsigned int dev_get_flags(const struct net_device *dev)
return flags;
}
-EXPORT_SYMBOL(dev_get_flags);
+EXPORT_SYMBOL(netif_get_flags);
int __dev_change_flags(struct net_device *dev, unsigned int flags,
struct netlink_ext_ack *extack)
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
index ceb2d63a818a..9c0ad7f4b5d8 100644
--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -147,7 +147,7 @@ static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cm
switch (cmd) {
case SIOCGIFFLAGS: /* Get interface flags */
- ifr->ifr_flags = (short) dev_get_flags(dev);
+ ifr->ifr_flags = (short)netif_get_flags(dev);
return 0;
case SIOCGIFMETRIC: /* Get the metric on the interface
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 94c449bad59e..776a25562dea 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -2036,7 +2036,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb,
ifm->__ifi_pad = 0;
ifm->ifi_type = READ_ONCE(dev->type);
ifm->ifi_index = READ_ONCE(dev->ifindex);
- ifm->ifi_flags = dev_get_flags(dev);
+ ifm->ifi_flags = netif_get_flags(dev);
ifm->ifi_change = change;
if (tgt_netnsid >= 0 && nla_put_s32(skb, IFLA_TARGET_NETNSID, tgt_netnsid))
@@ -5225,7 +5225,7 @@ int ndo_dflt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
ifm->__ifi_pad = 0;
ifm->ifi_type = dev->type;
ifm->ifi_index = dev->ifindex;
- ifm->ifi_flags = dev_get_flags(dev);
+ ifm->ifi_flags = netif_get_flags(dev);
ifm->ifi_change = 0;
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index fd1e1507a224..6e1b94796f67 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -1524,7 +1524,7 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
fib_disable_ip(dev, event, false);
break;
case NETDEV_CHANGE:
- flags = dev_get_flags(dev);
+ flags = netif_get_flags(dev);
if (flags & (IFF_RUNNING | IFF_LOWER_UP))
fib_sync_up(dev, RTNH_F_LINKDOWN);
else
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index a2f04992f579..a5f3c8459758 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -2087,7 +2087,7 @@ int fib_sync_up(struct net_device *dev, unsigned char nh_flags)
return 0;
if (nh_flags & RTNH_F_DEAD) {
- unsigned int flags = dev_get_flags(dev);
+ unsigned int flags = netif_get_flags(dev);
if (flags & (IFF_RUNNING | IFF_LOWER_UP))
nh_flags |= RTNH_F_LINKDOWN;
diff --git a/net/ipv4/nexthop.c b/net/ipv4/nexthop.c
index e808801ab9b8..29118c43ebf5 100644
--- a/net/ipv4/nexthop.c
+++ b/net/ipv4/nexthop.c
@@ -3884,7 +3884,7 @@ static int nh_netdev_event(struct notifier_block *this,
nexthop_flush_dev(dev, event);
break;
case NETDEV_CHANGE:
- if (!(dev_get_flags(dev) & (IFF_RUNNING | IFF_LOWER_UP)))
+ if (!(netif_get_flags(dev) & (IFF_RUNNING | IFF_LOWER_UP)))
nexthop_flush_dev(dev, event);
break;
case NETDEV_CHANGEMTU:
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 9c297974d3a6..7087e9912f11 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -6081,7 +6081,7 @@ static int inet6_fill_ifinfo(struct sk_buff *skb, struct inet6_dev *idev,
hdr->ifi_type = dev->type;
ifindex = READ_ONCE(dev->ifindex);
hdr->ifi_index = ifindex;
- hdr->ifi_flags = dev_get_flags(dev);
+ hdr->ifi_flags = netif_get_flags(dev);
hdr->ifi_change = 0;
iflink = dev_get_iflink(dev);
diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
index 47d7dfd9ad09..25c88cba5c48 100644
--- a/net/mpls/af_mpls.c
+++ b/net/mpls/af_mpls.c
@@ -706,7 +706,7 @@ static int mpls_nh_assign_dev(struct net *net, struct mpls_route *rt,
} else {
unsigned int flags;
- flags = dev_get_flags(dev);
+ flags = netif_get_flags(dev);
if (!(flags & (IFF_RUNNING | IFF_LOWER_UP)))
nh->nh_flags |= RTNH_F_LINKDOWN;
}
@@ -1616,14 +1616,14 @@ static int mpls_dev_notify(struct notifier_block *this, unsigned long event,
return notifier_from_errno(err);
break;
case NETDEV_UP:
- flags = dev_get_flags(dev);
+ flags = netif_get_flags(dev);
if (flags & (IFF_RUNNING | IFF_LOWER_UP))
mpls_ifup(dev, RTNH_F_DEAD | RTNH_F_LINKDOWN);
else
mpls_ifup(dev, RTNH_F_DEAD);
break;
case NETDEV_CHANGE:
- flags = dev_get_flags(dev);
+ flags = netif_get_flags(dev);
if (flags & (IFF_RUNNING | IFF_LOWER_UP)) {
mpls_ifup(dev, RTNH_F_DEAD | RTNH_F_LINKDOWN);
} else {
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
index bea70eb6f034..c32a7c6903d5 100644
--- a/net/wireless/wext-core.c
+++ b/net/wireless/wext-core.c
@@ -431,7 +431,7 @@ static struct nlmsghdr *rtnetlink_ifinfo_prep(struct net_device *dev,
r->__ifi_pad = 0;
r->ifi_type = dev->type;
r->ifi_index = dev->ifindex;
- r->ifi_flags = dev_get_flags(dev);
+ r->ifi_flags = netif_get_flags(dev);
r->ifi_change = 0; /* Wireless changes don't affect those flags */
if (nla_put_string(skb, IFLA_IFNAME, dev->name))
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 7/8] net: s/dev_set_threaded/netif_set_threaded/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
` (5 preceding siblings ...)
2025-06-30 16:42 ` [PATCH net-next v2 6/8] net: s/dev_get_flags/netif_get_flags/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 8/8] net: s/dev_close_many/netif_close_many/ Stanislav Fomichev
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
Note that one dev_set_threaded call still remains in mt76 for debugfs file.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
.../networking/net_cachelines/net_device.rst | 2 +-
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 2 +-
drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 +-
drivers/net/ethernet/renesas/ravb_main.c | 2 +-
drivers/net/wireguard/device.c | 2 +-
drivers/net/wireless/ath/ath10k/snoc.c | 2 +-
include/linux/netdevice.h | 1 +
net/core/dev.c | 6 +++---
net/core/dev_api.c | 12 ++++++++++++
net/core/net-sysfs.c | 2 +-
10 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/Documentation/networking/net_cachelines/net_device.rst b/Documentation/networking/net_cachelines/net_device.rst
index c69cc89c958e..2d3dc4692d20 100644
--- a/Documentation/networking/net_cachelines/net_device.rst
+++ b/Documentation/networking/net_cachelines/net_device.rst
@@ -165,7 +165,7 @@ struct sfp_bus* sfp_bus
struct lock_class_key* qdisc_tx_busylock
bool proto_down
unsigned:1 wol_enabled
-unsigned:1 threaded napi_poll(napi_enable,dev_set_threaded)
+unsigned:1 threaded napi_poll(napi_enable,netif_set_threaded)
unsigned_long:1 see_all_hwtstamp_requests
unsigned_long:1 change_proto_down
unsigned_long:1 netns_immutable
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index ef1a51347351..3a9ad4a9c1cb 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2688,7 +2688,7 @@ static int atl1c_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter->mii.mdio_write = atl1c_mdio_write;
adapter->mii.phy_id_mask = 0x1f;
adapter->mii.reg_num_mask = MDIO_CTRL_REG_MASK;
- dev_set_threaded(netdev, true);
+ netif_set_threaded(netdev, true);
for (i = 0; i < adapter->rx_queue_count; ++i)
netif_napi_add(netdev, &adapter->rrd_ring[i].napi,
atl1c_clean_rx);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c
index 058dcabfaa2e..a2e97b712a3d 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/pci.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c
@@ -156,7 +156,7 @@ static int mlxsw_pci_napi_devs_init(struct mlxsw_pci *mlxsw_pci)
}
strscpy(mlxsw_pci->napi_dev_rx->name, "mlxsw_rx",
sizeof(mlxsw_pci->napi_dev_rx->name));
- dev_set_threaded(mlxsw_pci->napi_dev_rx, true);
+ netif_set_threaded(mlxsw_pci->napi_dev_rx, true);
return 0;
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index c9f4976a3527..4e79bf88688a 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -3075,7 +3075,7 @@ static int ravb_probe(struct platform_device *pdev)
if (info->coalesce_irqs) {
netdev_sw_irq_coalesce_default_on(ndev);
if (num_present_cpus() == 1)
- dev_set_threaded(ndev, true);
+ netif_set_threaded(ndev, true);
}
/* Network device register */
diff --git a/drivers/net/wireguard/device.c b/drivers/net/wireguard/device.c
index 4a529f1f9bea..5afec5a865f4 100644
--- a/drivers/net/wireguard/device.c
+++ b/drivers/net/wireguard/device.c
@@ -366,7 +366,7 @@ static int wg_newlink(struct net_device *dev,
if (ret < 0)
goto err_free_handshake_queue;
- dev_set_threaded(dev, true);
+ netif_set_threaded(dev, true);
ret = register_netdevice(dev);
if (ret < 0)
goto err_uninit_ratelimiter;
diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c
index d51f2e5a79a4..0ee68d3dad12 100644
--- a/drivers/net/wireless/ath/ath10k/snoc.c
+++ b/drivers/net/wireless/ath/ath10k/snoc.c
@@ -936,7 +936,7 @@ static int ath10k_snoc_hif_start(struct ath10k *ar)
bitmap_clear(ar_snoc->pending_ce_irqs, 0, CE_COUNT_MAX);
- dev_set_threaded(ar->napi_dev, true);
+ netif_set_threaded(ar->napi_dev, true);
ath10k_core_napi_enable(ar);
/* IRQs are left enabled when we restart due to a firmware crash */
if (!test_bit(ATH10K_SNOC_FLAG_RECOVERY, &ar_snoc->flags))
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 184e2e80ec2a..558b29d34f2e 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -588,6 +588,7 @@ static inline bool napi_complete(struct napi_struct *n)
return napi_complete_done(n, 0);
}
+int netif_set_threaded(struct net_device *dev, bool threaded);
int dev_set_threaded(struct net_device *dev, bool threaded);
void napi_disable(struct napi_struct *n);
diff --git a/net/core/dev.c b/net/core/dev.c
index 3b804f49872a..13ad0faac996 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4796,7 +4796,7 @@ static inline void ____napi_schedule(struct softnet_data *sd,
if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
/* Paired with smp_mb__before_atomic() in
- * napi_enable()/dev_set_threaded().
+ * napi_enable()/netif_set_threaded().
* Use READ_ONCE() to guarantee a complete
* read on napi->thread. Only call
* wake_up_process() when it's not NULL.
@@ -6961,7 +6961,7 @@ static void napi_stop_kthread(struct napi_struct *napi)
napi->thread = NULL;
}
-int dev_set_threaded(struct net_device *dev, bool threaded)
+int netif_set_threaded(struct net_device *dev, bool threaded)
{
struct napi_struct *napi;
int err = 0;
@@ -7005,7 +7005,7 @@ int dev_set_threaded(struct net_device *dev, bool threaded)
return err;
}
-EXPORT_SYMBOL(dev_set_threaded);
+EXPORT_SYMBOL(netif_set_threaded);
/**
* netif_queue_set_napi - Associate queue with the napi
diff --git a/net/core/dev_api.c b/net/core/dev_api.c
index 1bf0153195f2..dd7f57013ce5 100644
--- a/net/core/dev_api.c
+++ b/net/core/dev_api.c
@@ -367,3 +367,15 @@ void netdev_state_change(struct net_device *dev)
netdev_unlock_ops(dev);
}
EXPORT_SYMBOL(netdev_state_change);
+
+int dev_set_threaded(struct net_device *dev, bool threaded)
+{
+ int ret;
+
+ netdev_lock(dev);
+ ret = netif_set_threaded(dev, threaded);
+ netdev_unlock(dev);
+
+ return ret;
+}
+EXPORT_SYMBOL(dev_set_threaded);
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index c2783323b589..f1dbd27b92bb 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -757,7 +757,7 @@ static int modify_napi_threaded(struct net_device *dev, unsigned long val)
if (val != 0 && val != 1)
return -EOPNOTSUPP;
- ret = dev_set_threaded(dev, val);
+ ret = netif_set_threaded(dev, val);
return ret;
}
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next v2 8/8] net: s/dev_close_many/netif_close_many/
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
` (6 preceding siblings ...)
2025-06-30 16:42 ` [PATCH net-next v2 7/8] net: s/dev_set_threaded/netif_set_threaded/ Stanislav Fomichev
@ 2025-06-30 16:42 ` Stanislav Fomichev
7 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 16:42 UTC (permalink / raw)
To: netdev; +Cc: davem, edumazet, kuba, pabeni
Commit cc34acd577f1 ("docs: net: document new locking reality")
introduced netif_ vs dev_ function semantics: the former expects locked
netdev, the latter takes care of the locking. We don't strictly
follow this semantics on either side, but there are more dev_xxx handlers
now that don't fit. Rename them to netif_xxx where appropriate.
netif_close_many is used only by vlan/dsa and one mtk driver, so move it into
NETDEV_INTERNAL namespace.
Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 +++-
include/linux/netdevice.h | 2 +-
net/8021q/vlan.c | 4 +++-
net/core/dev.c | 10 +++++-----
net/dsa/dsa.c | 4 +++-
net/dsa/user.c | 4 +++-
6 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index f8a907747db4..004ece722a83 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -31,6 +31,8 @@
#include "mtk_eth_soc.h"
#include "mtk_wed.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
static int mtk_msg_level = -1;
module_param_named(msg_level, mtk_msg_level, int, 0);
MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)");
@@ -4960,7 +4962,7 @@ void mtk_eth_set_dma_device(struct mtk_eth *eth, struct device *dma_dev)
list_add_tail(&dev->close_list, &dev_list);
}
- dev_close_many(&dev_list, false);
+ netif_close_many(&dev_list, false);
eth->dma_dev = dma_dev;
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 558b29d34f2e..e5aae0ecf138 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -3344,7 +3344,7 @@ int netif_open(struct net_device *dev, struct netlink_ext_ack *extack);
int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);
void netif_close(struct net_device *dev);
void dev_close(struct net_device *dev);
-void dev_close_many(struct list_head *head, bool unlink);
+void netif_close_many(struct list_head *head, bool unlink);
void netif_disable_lro(struct net_device *dev);
void dev_disable_lro(struct net_device *dev);
int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb);
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index df19a9c0c9d9..0296239dd7e7 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -35,6 +35,8 @@
#include "vlan.h"
#include "vlanproc.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
#define DRV_VERSION "1.8"
/* Global VLAN variables */
@@ -446,7 +448,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
list_add(&vlandev->close_list, &close_list);
}
- dev_close_many(&close_list, false);
+ netif_close_many(&close_list, false);
list_for_each_entry_safe(vlandev, tmp, &close_list, close_list) {
vlan_stacked_transfer_operstate(dev, vlandev,
diff --git a/net/core/dev.c b/net/core/dev.c
index 13ad0faac996..9a9617f6844a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1769,7 +1769,7 @@ static void __dev_close(struct net_device *dev)
list_del(&single);
}
-void dev_close_many(struct list_head *head, bool unlink)
+void netif_close_many(struct list_head *head, bool unlink)
{
struct net_device *dev, *tmp;
@@ -1787,7 +1787,7 @@ void dev_close_many(struct list_head *head, bool unlink)
list_del_init(&dev->close_list);
}
}
-EXPORT_SYMBOL(dev_close_many);
+EXPORT_SYMBOL_NS_GPL(netif_close_many, "NETDEV_INTERNAL");
void netif_close(struct net_device *dev)
{
@@ -1795,7 +1795,7 @@ void netif_close(struct net_device *dev)
LIST_HEAD(single);
list_add(&dev->close_list, &single);
- dev_close_many(&single, true);
+ netif_close_many(&single, true);
list_del(&single);
}
}
@@ -12076,7 +12076,7 @@ void unregister_netdevice_many_notify(struct list_head *head,
netdev_lock(dev);
}
}
- dev_close_many(&close_head, true);
+ netif_close_many(&close_head, true);
/* ... now unlock them and go over the rest. */
list_for_each_entry(dev, head, unreg_list) {
if (netdev_need_ops_lock(dev))
@@ -12084,7 +12084,7 @@ void unregister_netdevice_many_notify(struct list_head *head,
else
list_add_tail(&dev->close_list, &close_head);
}
- dev_close_many(&close_head, true);
+ netif_close_many(&close_head, true);
list_for_each_entry(dev, head, unreg_list) {
/* And unlink it from device chain. */
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
index 436a7e1b412a..1d906f96bddc 100644
--- a/net/dsa/dsa.c
+++ b/net/dsa/dsa.c
@@ -28,6 +28,8 @@
#include "tag.h"
#include "user.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
#define DSA_MAX_NUM_OFFLOADING_BRIDGES BITS_PER_LONG
static DEFINE_MUTEX(dsa2_mutex);
@@ -1621,7 +1623,7 @@ void dsa_switch_shutdown(struct dsa_switch *ds)
dsa_switch_for_each_cpu_port(dp, ds)
list_add(&dp->conduit->close_list, &close_list);
- dev_close_many(&close_list, true);
+ netif_close_many(&close_list, true);
dsa_switch_for_each_user_port(dp, ds) {
conduit = dsa_port_to_conduit(dp);
diff --git a/net/dsa/user.c b/net/dsa/user.c
index e9334520c54a..59ea36802434 100644
--- a/net/dsa/user.c
+++ b/net/dsa/user.c
@@ -31,6 +31,8 @@
#include "tag.h"
#include "user.h"
+MODULE_IMPORT_NS("NETDEV_INTERNAL");
+
struct dsa_switchdev_event_work {
struct net_device *dev;
struct net_device *orig_dev;
@@ -3604,7 +3606,7 @@ static int dsa_user_netdevice_event(struct notifier_block *nb,
list_add(&dp->user->close_list, &close_list);
}
- dev_close_many(&close_list, true);
+ netif_close_many(&close_list, true);
return NOTIFY_OK;
}
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/
2025-06-30 16:42 ` [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/ Stanislav Fomichev
@ 2025-06-30 21:00 ` Willem de Bruijn
2025-06-30 23:19 ` Stanislav Fomichev
0 siblings, 1 reply; 15+ messages in thread
From: Willem de Bruijn @ 2025-06-30 21:00 UTC (permalink / raw)
To: Stanislav Fomichev, netdev; +Cc: davem, edumazet, kuba, pabeni
Stanislav Fomichev wrote:
> Commit cc34acd577f1 ("docs: net: document new locking reality")
> introduced netif_ vs dev_ function semantics: the former expects locked
> netdev, the latter takes care of the locking. We don't strictly
> follow this semantics on either side, but there are more dev_xxx handlers
> now that don't fit. Rename them to netif_xxx where appropriate.
>
> netif_get_mac_address is used only by tun/tap, so move it into
> NETDEV_INTERNAL namespace.
>
> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> ---
> drivers/net/tap.c | 6 ++++--
> drivers/net/tun.c | 4 +++-
> include/linux/netdevice.h | 2 +-
> net/core/dev.c | 4 ++--
> net/core/dev_ioctl.c | 3 ++-
> net/core/net-sysfs.c | 2 +-
> 6 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/tap.c b/drivers/net/tap.c
> index bdf0788d8e66..4c85770c809b 100644
> --- a/drivers/net/tap.c
> +++ b/drivers/net/tap.c
> @@ -28,6 +28,8 @@
>
> #include "tun_vnet.h"
>
> +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> +
> #define TAP_IFFEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
>
> static struct proto tap_proto = {
> @@ -1000,8 +1002,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
> return -ENOLINK;
> }
> ret = 0;
> - dev_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> - tap->dev->name);
> + netif_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> + tap->dev->name);
> if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
> copy_to_user(&ifr->ifr_hwaddr, &ss, sizeof(ifr->ifr_hwaddr)))
> ret = -EFAULT;
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index f8c5e2fd04df..4509ae68decf 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -85,6 +85,8 @@
>
> #include "tun_vnet.h"
>
> +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> +
Thanks for giving this a go. Now that you've implemented it, does the
risk (of overlooking callers, mainly) indeed seem acceptable?
Documentation/core-api/symbol-namespaces.rst says
It is advisable to add the MODULE_IMPORT_NS() statement close to other module
metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE().
No need to respin just for this from me. Something to consider,
especially if anything else comes up.
Just curious, did you use the modpost and make nsdeps, or was it
sufficient to find the callers with tools like cscope and grep?
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/
2025-06-30 21:00 ` Willem de Bruijn
@ 2025-06-30 23:19 ` Stanislav Fomichev
2025-07-01 18:59 ` Willem de Bruijn
0 siblings, 1 reply; 15+ messages in thread
From: Stanislav Fomichev @ 2025-06-30 23:19 UTC (permalink / raw)
To: Willem de Bruijn
Cc: Stanislav Fomichev, netdev, davem, edumazet, kuba, pabeni
On 06/30, Willem de Bruijn wrote:
> Stanislav Fomichev wrote:
> > Commit cc34acd577f1 ("docs: net: document new locking reality")
> > introduced netif_ vs dev_ function semantics: the former expects locked
> > netdev, the latter takes care of the locking. We don't strictly
> > follow this semantics on either side, but there are more dev_xxx handlers
> > now that don't fit. Rename them to netif_xxx where appropriate.
> >
> > netif_get_mac_address is used only by tun/tap, so move it into
> > NETDEV_INTERNAL namespace.
> >
> > Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> > ---
> > drivers/net/tap.c | 6 ++++--
> > drivers/net/tun.c | 4 +++-
> > include/linux/netdevice.h | 2 +-
> > net/core/dev.c | 4 ++--
> > net/core/dev_ioctl.c | 3 ++-
> > net/core/net-sysfs.c | 2 +-
> > 6 files changed, 13 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/net/tap.c b/drivers/net/tap.c
> > index bdf0788d8e66..4c85770c809b 100644
> > --- a/drivers/net/tap.c
> > +++ b/drivers/net/tap.c
> > @@ -28,6 +28,8 @@
> >
> > #include "tun_vnet.h"
> >
> > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > +
> > #define TAP_IFFEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
> >
> > static struct proto tap_proto = {
> > @@ -1000,8 +1002,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
> > return -ENOLINK;
> > }
> > ret = 0;
> > - dev_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > - tap->dev->name);
> > + netif_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > + tap->dev->name);
> > if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
> > copy_to_user(&ifr->ifr_hwaddr, &ss, sizeof(ifr->ifr_hwaddr)))
> > ret = -EFAULT;
> > diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> > index f8c5e2fd04df..4509ae68decf 100644
> > --- a/drivers/net/tun.c
> > +++ b/drivers/net/tun.c
> > @@ -85,6 +85,8 @@
> >
> > #include "tun_vnet.h"
> >
> > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > +
>
> Thanks for giving this a go. Now that you've implemented it, does the
> risk (of overlooking callers, mainly) indeed seem acceptable?
>
> Documentation/core-api/symbol-namespaces.rst says
>
> It is advisable to add the MODULE_IMPORT_NS() statement close to other module
> metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE().
>
> No need to respin just for this from me. Something to consider,
> especially if anything else comes up.
I put it at the top because it was at the top in bnxt. But it is
at the top in bnxt is because the MODULE_LICENSE is there :-(
Thanks for pointing it out, I'll definitely address that to be
consistent.
> Just curious, did you use the modpost and make nsdeps, or was it
> sufficient to find the callers with tools like cscope and grep?
Only grep. I'm hoping the build bots will tell me if missed something.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/
2025-06-30 23:19 ` Stanislav Fomichev
@ 2025-07-01 18:59 ` Willem de Bruijn
2025-07-02 15:33 ` Stanislav Fomichev
0 siblings, 1 reply; 15+ messages in thread
From: Willem de Bruijn @ 2025-07-01 18:59 UTC (permalink / raw)
To: Stanislav Fomichev, Willem de Bruijn
Cc: Stanislav Fomichev, netdev, davem, edumazet, kuba, pabeni
Stanislav Fomichev wrote:
> On 06/30, Willem de Bruijn wrote:
> > Stanislav Fomichev wrote:
> > > Commit cc34acd577f1 ("docs: net: document new locking reality")
> > > introduced netif_ vs dev_ function semantics: the former expects locked
> > > netdev, the latter takes care of the locking. We don't strictly
> > > follow this semantics on either side, but there are more dev_xxx handlers
> > > now that don't fit. Rename them to netif_xxx where appropriate.
> > >
> > > netif_get_mac_address is used only by tun/tap, so move it into
> > > NETDEV_INTERNAL namespace.
> > >
> > > Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> > > ---
> > > drivers/net/tap.c | 6 ++++--
> > > drivers/net/tun.c | 4 +++-
> > > include/linux/netdevice.h | 2 +-
> > > net/core/dev.c | 4 ++--
> > > net/core/dev_ioctl.c | 3 ++-
> > > net/core/net-sysfs.c | 2 +-
> > > 6 files changed, 13 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/drivers/net/tap.c b/drivers/net/tap.c
> > > index bdf0788d8e66..4c85770c809b 100644
> > > --- a/drivers/net/tap.c
> > > +++ b/drivers/net/tap.c
> > > @@ -28,6 +28,8 @@
> > >
> > > #include "tun_vnet.h"
> > >
> > > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > > +
> > > #define TAP_IFFEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
> > >
> > > static struct proto tap_proto = {
> > > @@ -1000,8 +1002,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
> > > return -ENOLINK;
> > > }
> > > ret = 0;
> > > - dev_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > > - tap->dev->name);
> > > + netif_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > > + tap->dev->name);
> > > if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
> > > copy_to_user(&ifr->ifr_hwaddr, &ss, sizeof(ifr->ifr_hwaddr)))
> > > ret = -EFAULT;
> > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> > > index f8c5e2fd04df..4509ae68decf 100644
> > > --- a/drivers/net/tun.c
> > > +++ b/drivers/net/tun.c
> > > @@ -85,6 +85,8 @@
> > >
> > > #include "tun_vnet.h"
> > >
> > > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > > +
> >
> > Thanks for giving this a go. Now that you've implemented it, does the
> > risk (of overlooking callers, mainly) indeed seem acceptable?
> >
> > Documentation/core-api/symbol-namespaces.rst says
> >
> > It is advisable to add the MODULE_IMPORT_NS() statement close to other module
> > metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE().
> >
> > No need to respin just for this from me. Something to consider,
> > especially if anything else comes up.
>
> I put it at the top because it was at the top in bnxt. But it is
> at the top in bnxt is because the MODULE_LICENSE is there :-(
> Thanks for pointing it out, I'll definitely address that to be
> consistent.
>
> > Just curious, did you use the modpost and make nsdeps, or was it
> > sufficient to find the callers with tools like cscope and grep?
>
> Only grep. I'm hoping the build bots will tell me if missed something.
SG.
One tradeoff with this series is that renaming and refactoring always
adds code churn that makes backports (e.g., to stable) more complex.
I trust that you weighted the pros and cons. We just need to be
careful to not encourage renaming series in general. Hence calling
that out right here :)
And, it's not trivial to review that the now netif_.. callees indeed
are holding the netdev locked (or RTNL). Does it make sense to add
lockdep_rtnl_is_held (or equivalent netdev lock) checks as part of
this series or follow-up? And the inverse for the dev_.. variants.
Aside from this high level points, overall series LGTM, thanks.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
2025-06-30 16:42 ` [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/ Stanislav Fomichev
@ 2025-07-02 6:54 ` kernel test robot
2025-07-02 22:21 ` kernel test robot
1 sibling, 0 replies; 15+ messages in thread
From: kernel test robot @ 2025-07-02 6:54 UTC (permalink / raw)
To: Stanislav Fomichev, netdev; +Cc: oe-kbuild-all, davem, edumazet, kuba, pabeni
Hi Stanislav,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Fomichev/net-s-dev_get_stats-netif_get_stats/20250701-004408
base: net-next/main
patch link: https://lore.kernel.org/r/20250630164222.712558-5-sdf%40fomichev.me
patch subject: [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
config: microblaze-defconfig (https://download.01.org/0day-ci/archive/20250702/202507021431.lqWTrQAr-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250702/202507021431.lqWTrQAr-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507021431.lqWTrQAr-lkp@intel.com/
All errors (new ones prefixed by >>, old ones prefixed by <<):
>> ERROR: modpost: module bridge uses symbol netif_pre_changeaddr_notify from namespace NETDEV_INTERNAL, but does not import it.
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/
2025-07-01 18:59 ` Willem de Bruijn
@ 2025-07-02 15:33 ` Stanislav Fomichev
0 siblings, 0 replies; 15+ messages in thread
From: Stanislav Fomichev @ 2025-07-02 15:33 UTC (permalink / raw)
To: Willem de Bruijn
Cc: Stanislav Fomichev, netdev, davem, edumazet, kuba, pabeni
On 07/01, Willem de Bruijn wrote:
> Stanislav Fomichev wrote:
> > On 06/30, Willem de Bruijn wrote:
> > > Stanislav Fomichev wrote:
> > > > Commit cc34acd577f1 ("docs: net: document new locking reality")
> > > > introduced netif_ vs dev_ function semantics: the former expects locked
> > > > netdev, the latter takes care of the locking. We don't strictly
> > > > follow this semantics on either side, but there are more dev_xxx handlers
> > > > now that don't fit. Rename them to netif_xxx where appropriate.
> > > >
> > > > netif_get_mac_address is used only by tun/tap, so move it into
> > > > NETDEV_INTERNAL namespace.
> > > >
> > > > Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
> > > > ---
> > > > drivers/net/tap.c | 6 ++++--
> > > > drivers/net/tun.c | 4 +++-
> > > > include/linux/netdevice.h | 2 +-
> > > > net/core/dev.c | 4 ++--
> > > > net/core/dev_ioctl.c | 3 ++-
> > > > net/core/net-sysfs.c | 2 +-
> > > > 6 files changed, 13 insertions(+), 8 deletions(-)
> > > >
> > > > diff --git a/drivers/net/tap.c b/drivers/net/tap.c
> > > > index bdf0788d8e66..4c85770c809b 100644
> > > > --- a/drivers/net/tap.c
> > > > +++ b/drivers/net/tap.c
> > > > @@ -28,6 +28,8 @@
> > > >
> > > > #include "tun_vnet.h"
> > > >
> > > > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > > > +
> > > > #define TAP_IFFEATURES (IFF_VNET_HDR | IFF_MULTI_QUEUE)
> > > >
> > > > static struct proto tap_proto = {
> > > > @@ -1000,8 +1002,8 @@ static long tap_ioctl(struct file *file, unsigned int cmd,
> > > > return -ENOLINK;
> > > > }
> > > > ret = 0;
> > > > - dev_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > > > - tap->dev->name);
> > > > + netif_get_mac_address((struct sockaddr *)&ss, dev_net(tap->dev),
> > > > + tap->dev->name);
> > > > if (copy_to_user(&ifr->ifr_name, tap->dev->name, IFNAMSIZ) ||
> > > > copy_to_user(&ifr->ifr_hwaddr, &ss, sizeof(ifr->ifr_hwaddr)))
> > > > ret = -EFAULT;
> > > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> > > > index f8c5e2fd04df..4509ae68decf 100644
> > > > --- a/drivers/net/tun.c
> > > > +++ b/drivers/net/tun.c
> > > > @@ -85,6 +85,8 @@
> > > >
> > > > #include "tun_vnet.h"
> > > >
> > > > +MODULE_IMPORT_NS("NETDEV_INTERNAL");
> > > > +
> > >
> > > Thanks for giving this a go. Now that you've implemented it, does the
> > > risk (of overlooking callers, mainly) indeed seem acceptable?
> > >
> > > Documentation/core-api/symbol-namespaces.rst says
> > >
> > > It is advisable to add the MODULE_IMPORT_NS() statement close to other module
> > > metadata definitions like MODULE_AUTHOR() or MODULE_LICENSE().
> > >
> > > No need to respin just for this from me. Something to consider,
> > > especially if anything else comes up.
> >
> > I put it at the top because it was at the top in bnxt. But it is
> > at the top in bnxt is because the MODULE_LICENSE is there :-(
> > Thanks for pointing it out, I'll definitely address that to be
> > consistent.
> >
> > > Just curious, did you use the modpost and make nsdeps, or was it
> > > sufficient to find the callers with tools like cscope and grep?
> >
> > Only grep. I'm hoping the build bots will tell me if missed something.
>
> SG.
>
> One tradeoff with this series is that renaming and refactoring always
> adds code churn that makes backports (e.g., to stable) more complex.
> I trust that you weighted the pros and cons. We just need to be
> careful to not encourage renaming series in general. Hence calling
> that out right here :)
Yeah, agreed, that why I'm only targeting the core<>driver api boundary.
Which still might be, arguably, too much :-)
> And, it's not trivial to review that the now netif_.. callees indeed
> are holding the netdev locked (or RTNL). Does it make sense to add
> lockdep_rtnl_is_held (or equivalent netdev lock) checks as part of
> this series or follow-up? And the inverse for the dev_.. variants.
Ack, let me double check whether adding more lockdep calls makes sense.
We already have a bunch of them deep down in the call stack,
that might be enough, not sure.
> Aside from this high level points, overall series LGTM, thanks.
Thank you for the review and feedback!
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
2025-06-30 16:42 ` [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/ Stanislav Fomichev
2025-07-02 6:54 ` kernel test robot
@ 2025-07-02 22:21 ` kernel test robot
1 sibling, 0 replies; 15+ messages in thread
From: kernel test robot @ 2025-07-02 22:21 UTC (permalink / raw)
To: Stanislav Fomichev, netdev; +Cc: oe-kbuild-all, davem, edumazet, kuba, pabeni
Hi Stanislav,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Stanislav-Fomichev/net-s-dev_get_stats-netif_get_stats/20250701-004408
base: net-next/main
patch link: https://lore.kernel.org/r/20250630164222.712558-5-sdf%40fomichev.me
patch subject: [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/
config: i386-randconfig-002-20250702 (https://download.01.org/0day-ci/archive/20250703/202507030614.bVvnbuna-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250703/202507030614.bVvnbuna-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507030614.bVvnbuna-lkp@intel.com/
All warnings (new ones prefixed by >>, old ones prefixed by <<):
>> WARNING: modpost: module bridge uses symbol netif_pre_changeaddr_notify from namespace NETDEV_INTERNAL, but does not import it.
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-07-02 22:22 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-30 16:42 [PATCH net-next v2 0/8] net: maintain netif vs dev prefix semantics Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 1/8] net: s/dev_get_stats/netif_get_stats/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 2/8] net: s/dev_get_port_parent_id/netif_get_port_parent_id/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 3/8] net: s/dev_get_mac_address/netif_get_mac_address/ Stanislav Fomichev
2025-06-30 21:00 ` Willem de Bruijn
2025-06-30 23:19 ` Stanislav Fomichev
2025-07-01 18:59 ` Willem de Bruijn
2025-07-02 15:33 ` Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 4/8] net: s/dev_pre_changeaddr_notify/netif_pre_changeaddr_notify/ Stanislav Fomichev
2025-07-02 6:54 ` kernel test robot
2025-07-02 22:21 ` kernel test robot
2025-06-30 16:42 ` [PATCH net-next v2 5/8] net: s/__dev_set_mtu/__netif_set_mtu/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 6/8] net: s/dev_get_flags/netif_get_flags/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 7/8] net: s/dev_set_threaded/netif_set_threaded/ Stanislav Fomichev
2025-06-30 16:42 ` [PATCH net-next v2 8/8] net: s/dev_close_many/netif_close_many/ Stanislav Fomichev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).