#include <net/netdev_lock.h>
+#include "../core/dev.h"
#include "common.h"
#include "netlink.h"
{
struct rss_nl_dump_ctx *ctx = rss_dump_ctx(cb);
struct net *net = sock_net(skb->sk);
- struct net_device *dev;
int ret = 0;
- rtnl_lock();
- for_each_netdev_dump(net, dev, ctx->ifindex) {
+ for_each_netdev_lock_ops_compat_scoped(net, dev, ctx->ifindex) {
if (ctx->match_ifindex && ctx->match_ifindex != ctx->ifindex)
break;
- netdev_lock_ops(dev);
ret = rss_dump_one_dev(skb, cb, dev);
- netdev_unlock_ops(dev);
if (ret)
break;
}
- rtnl_unlock();
return ret;
}
if (ret)
goto exit_free_dev;
- rtnl_lock();
- netdev_lock_ops(dev);
+ netdev_lock_ops_compat(dev);
ret = ethnl_ops_begin(dev);
if (ret < 0)
exit_ops:
ethnl_ops_complete(dev);
exit_dev_unlock:
- netdev_unlock_ops(dev);
- rtnl_unlock();
+ netdev_unlock_ops_compat(dev);
exit_free_dev:
ethnl_parse_header_dev_put(&req.base);
exit_free_rsp:
goto exit_free_dev;
}
- rtnl_lock();
- netdev_lock_ops(dev);
+ netdev_lock_ops_compat(dev);
ret = ethnl_ops_begin(dev);
if (ret < 0)
mutex_unlock(&dev->ethtool->rss_lock);
ethnl_ops_complete(dev);
exit_dev_unlock:
- netdev_unlock_ops(dev);
- rtnl_unlock();
+ netdev_unlock_ops_compat(dev);
exit_free_dev:
ethnl_parse_header_dev_put(&req);
return ret;