Message ID | 20240228232253.2875900-4-dw@davidwei.uk (mailing list archive) |
---|---|
State | Accepted |
Commit | 8debcf5832c3e8a6baaea27c75ad8a6ba5077beb |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | netdevsim: link and forward skbs between ports | expand |
On 29/02/2024 00:22, David Wei wrote: > 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> > --- > drivers/net/netdevsim/netdev.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c > index c3f3fda5fdc0..8330bc0bcb7e 100644 > --- a/drivers/net/netdevsim/netdev.c > +++ b/drivers/net/netdevsim/netdev.c > @@ -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, > }; > Reviewed-by: Maciek Machnikowski <maciek@machnikowski.net>
diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index c3f3fda5fdc0..8330bc0bcb7e 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -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, };
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> --- drivers/net/netdevsim/netdev.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)