diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-09-02 21:03:00 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-02 21:03:00 -0400 |
commit | 2e59af3dcbdf11635c03f22bfc9706744465d589 (patch) | |
tree | c01e87c0ef6568bae987f4628a8656ba0d05aa23 /net/core | |
parent | 5848cc096a23b80b3d15c27d72299f79caf7c517 (diff) |
vlan: multiqueue vlan device
vlan devices are currently not multi-queue capable.
We can do that with a new rtnl_link_ops method,
get_tx_queues(), called from rtnl_create_link()
This new method gets num_tx_queues/real_num_tx_queues
from real device.
register_vlan_device() is also handled.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
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) |