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/8021q/vlan.c | |
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/8021q/vlan.c')
-rw-r--r-- | net/8021q/vlan.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index e814794b0a1a..8836575f9d79 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c | |||
@@ -330,12 +330,13 @@ static int register_vlan_device(struct net_device *real_dev, u16 vlan_id) | |||
330 | snprintf(name, IFNAMSIZ, "vlan%.4i", vlan_id); | 330 | snprintf(name, IFNAMSIZ, "vlan%.4i", vlan_id); |
331 | } | 331 | } |
332 | 332 | ||
333 | new_dev = alloc_netdev(sizeof(struct vlan_dev_info), name, | 333 | new_dev = alloc_netdev_mq(sizeof(struct vlan_dev_info), name, |
334 | vlan_setup); | 334 | vlan_setup, real_dev->num_tx_queues); |
335 | 335 | ||
336 | if (new_dev == NULL) | 336 | if (new_dev == NULL) |
337 | return -ENOBUFS; | 337 | return -ENOBUFS; |
338 | 338 | ||
339 | new_dev->real_num_tx_queues = real_dev->real_num_tx_queues; | ||
339 | dev_net_set(new_dev, net); | 340 | dev_net_set(new_dev, net); |
340 | /* need 4 bytes for extra VLAN header info, | 341 | /* need 4 bytes for extra VLAN header info, |
341 | * hope the underlying device can handle it. | 342 | * hope the underlying device can handle it. |