diff options
author | Sreenivasa Honnur <Sreenivasa.Honnur@neterion.com> | 2008-02-20 16:44:07 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2008-03-17 07:49:26 -0400 |
commit | 3a3d5756ac552ee2d2cca6ba0912f0ff328e8357 (patch) | |
tree | cf815d61905778d7fdded30b17b3a17e4406dda2 /drivers/net/s2io.h | |
parent | 19a3da6c6e1e74ecac129a079139aaebb63fe6c8 (diff) | |
download | linux-3a3d5756ac552ee2d2cca6ba0912f0ff328e8357.tar.gz linux-3a3d5756ac552ee2d2cca6ba0912f0ff328e8357.tar.bz2 linux-3a3d5756ac552ee2d2cca6ba0912f0ff328e8357.zip |
S2io: Multiqueue network device support implementation
- Resubmit #3
Multiqueue netwrok device support implementation.
- Added a loadable parameter "multiq" to enable/disable multiqueue support,
by default it is disabled.
- skb->queue_mapping is not used for queue/fifo selection. FIFO selection is
based on skb->priority.
- Added per FIFO flags FIFO_QUEUE_START and FIFO_QUEUE_STOP. Check this flag
for starting and stopping netif queue and update the flags accordingly.
- In tx_intr_handler added a check to ensure that we have free TXDs before wak-
ing up the queue.
- Added helper functions for queue manipulation(start/stop/wakeup) to invoke
appropriate netif_ functions.
- Calling netif_start/stop for link up/down case respectively.
- As per Andi kleen's review comments, using skb->priority field for FIFO
selection.
Signed-off-by: Surjit Reang <surjit.reang@neterion.com>
Signed-off-by: Ramkrishna Vepa <ram.vepa@neterion.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/s2io.h')
-rw-r--r-- | drivers/net/s2io.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h index 64b88eb48287..fdc0a94d0a89 100644 --- a/drivers/net/s2io.h +++ b/drivers/net/s2io.h @@ -464,6 +464,7 @@ struct config_param { int max_mc_addr; /* xena=64 herc=256 */ int max_mac_addr; /* xena=16 herc=64 */ int mc_start_offset; /* xena=16 herc=64 */ + u8 multiq; }; /* Structure representing MAC Addrs */ @@ -720,6 +721,15 @@ struct fifo_info { * the buffers */ struct tx_curr_get_info tx_curr_get_info; +#define FIFO_QUEUE_START 0 +#define FIFO_QUEUE_STOP 1 + int queue_state; + + /* copy of sp->dev pointer */ + struct net_device *dev; + + /* copy of multiq status */ + u8 multiq; /* Per fifo lock */ spinlock_t tx_lock; |