2007-06-28 20:45:47 -07:00
|
|
|
|
|
|
|
HOWTO for multiqueue network device support
|
|
|
|
===========================================
|
|
|
|
|
|
|
|
Section 1: Base driver requirements for implementing multiqueue support
|
|
|
|
|
|
|
|
Intro: Kernel support for multiqueue devices
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
2008-07-08 23:14:24 -07:00
|
|
|
Kernel support for multiqueue devices is always present.
|
2007-06-28 20:45:47 -07:00
|
|
|
|
|
|
|
Section 1: Base driver requirements for implementing multiqueue support
|
|
|
|
-----------------------------------------------------------------------
|
|
|
|
|
|
|
|
Base drivers are required to use the new alloc_etherdev_mq() or
|
|
|
|
alloc_netdev_mq() functions to allocate the subqueues for the device. The
|
|
|
|
underlying kernel API will take care of the allocation and deallocation of
|
|
|
|
the subqueue memory, as well as netdev configuration of where the queues
|
|
|
|
exist in memory.
|
|
|
|
|
|
|
|
The base driver will also need to manage the queues as it does the global
|
|
|
|
netdev->queue_lock today. Therefore base drivers should use the
|
|
|
|
netif_{start|stop|wake}_subqueue() functions to manage each queue while the
|
|
|
|
device is still operational. netdev->queue_lock is still used when the device
|
|
|
|
comes online or when it's completely shut down (unregister_netdev(), etc.).
|
|
|
|
|
|
|
|
Author: Peter P. Waskiewicz Jr. <peter.p.waskiewicz.jr@intel.com>
|