diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/rtnetlink.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index b44775f9f2bf..bbcba2a41018 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -974,12 +974,20 @@ struct net_device *rtnl_create_link(struct net *net, char *ifname, | |||
974 | { | 974 | { |
975 | int err; | 975 | int err; |
976 | struct net_device *dev; | 976 | struct net_device *dev; |
977 | unsigned int num_queues = 1; | ||
978 | unsigned int real_num_queues = 1; | ||
977 | 979 | ||
980 | if (ops->get_tx_queues) { | ||
981 | err = ops->get_tx_queues(net, tb, &num_queues, &real_num_queues); | ||
982 | if (err) | ||
983 | goto err; | ||
984 | } | ||
978 | err = -ENOMEM; | 985 | err = -ENOMEM; |
979 | dev = alloc_netdev(ops->priv_size, ifname, ops->setup); | 986 | dev = alloc_netdev_mq(ops->priv_size, ifname, ops->setup, num_queues); |
980 | if (!dev) | 987 | if (!dev) |
981 | goto err; | 988 | goto err; |
982 | 989 | ||
990 | dev->real_num_tx_queues = real_num_queues; | ||
983 | if (strchr(dev->name, '%')) { | 991 | if (strchr(dev->name, '%')) { |
984 | err = dev_alloc_name(dev, dev->name); | 992 | err = dev_alloc_name(dev, dev->name); |
985 | if (err < 0) | 993 | if (err < 0) |