diff options
author | Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> | 2007-07-06 16:36:20 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-11 01:16:21 -0400 |
commit | f25f4e44808f0f6c9875d94ef1c41ef86c288eb2 (patch) | |
tree | d7809dd5e957f1626185326d0c3438ff9a04d350 /net/ethernet/eth.c | |
parent | a093bf006e09a305e95ff0938c0a18b7520aef67 (diff) |
[CORE] Stack changes to add multiqueue hardware support API
Add the multiqueue hardware device support API to the core network
stack. Allow drivers to allocate multiple queues and manage them at
the netdev level if they choose to do so.
Added a new field to sk_buff, namely queue_mapping, for drivers to
know which tx_ring to select based on OS classification of the flow.
Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ethernet/eth.c')
-rw-r--r-- | net/ethernet/eth.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 0ac2524f3b68..1387e5411f77 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c | |||
@@ -316,9 +316,10 @@ void ether_setup(struct net_device *dev) | |||
316 | EXPORT_SYMBOL(ether_setup); | 316 | EXPORT_SYMBOL(ether_setup); |
317 | 317 | ||
318 | /** | 318 | /** |
319 | * alloc_etherdev - Allocates and sets up an Ethernet device | 319 | * alloc_etherdev_mq - Allocates and sets up an Ethernet device |
320 | * @sizeof_priv: Size of additional driver-private structure to be allocated | 320 | * @sizeof_priv: Size of additional driver-private structure to be allocated |
321 | * for this Ethernet device | 321 | * for this Ethernet device |
322 | * @queue_count: The number of queues this device has. | ||
322 | * | 323 | * |
323 | * Fill in the fields of the device structure with Ethernet-generic | 324 | * Fill in the fields of the device structure with Ethernet-generic |
324 | * values. Basically does everything except registering the device. | 325 | * values. Basically does everything except registering the device. |
@@ -328,8 +329,8 @@ EXPORT_SYMBOL(ether_setup); | |||
328 | * this private data area. | 329 | * this private data area. |
329 | */ | 330 | */ |
330 | 331 | ||
331 | struct net_device *alloc_etherdev(int sizeof_priv) | 332 | struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count) |
332 | { | 333 | { |
333 | return alloc_netdev(sizeof_priv, "eth%d", ether_setup); | 334 | return alloc_netdev_mq(sizeof_priv, "eth%d", ether_setup, queue_count); |
334 | } | 335 | } |
335 | EXPORT_SYMBOL(alloc_etherdev); | 336 | EXPORT_SYMBOL(alloc_etherdev_mq); |