]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
netdevsim: add ndo_get_iflink() implementation
authorDavid Wei <dw@davidwei.uk>
Wed, 28 Feb 2024 23:22:51 +0000 (15:22 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Mar 2024 10:43:10 +0000 (10:43 +0000)
Add an implementation for ndo_get_iflink() in netdevsim that shows the
ifindex of the linked peer, if any.

Signed-off-by: David Wei <dw@davidwei.uk>
Reviewed-by: Maciek Machnikowski <maciek@machnikowski.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netdevsim/netdev.c

index c3f3fda5fdc09a3d853123bc18c71ef9d6c8421f..8330bc0bcb7e53644f1bb3240be00f93fd3d9be3 100644 (file)
@@ -283,6 +283,21 @@ nsim_set_features(struct net_device *dev, netdev_features_t features)
        return 0;
 }
 
+static int nsim_get_iflink(const struct net_device *dev)
+{
+       struct netdevsim *nsim, *peer;
+       int iflink;
+
+       nsim = netdev_priv(dev);
+
+       rcu_read_lock();
+       peer = rcu_dereference(nsim->peer);
+       iflink = peer ? READ_ONCE(peer->netdev->ifindex) : 0;
+       rcu_read_unlock();
+
+       return iflink;
+}
+
 static const struct net_device_ops nsim_netdev_ops = {
        .ndo_start_xmit         = nsim_start_xmit,
        .ndo_set_rx_mode        = nsim_set_rx_mode,
@@ -300,6 +315,7 @@ static const struct net_device_ops nsim_netdev_ops = {
        .ndo_set_vf_rss_query_en = nsim_set_vf_rss_query_en,
        .ndo_setup_tc           = nsim_setup_tc,
        .ndo_set_features       = nsim_set_features,
+       .ndo_get_iflink         = nsim_get_iflink,
        .ndo_bpf                = nsim_bpf,
 };