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) |
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 { | |||
464 | int max_mc_addr; /* xena=64 herc=256 */ | 464 | int max_mc_addr; /* xena=64 herc=256 */ |
465 | int max_mac_addr; /* xena=16 herc=64 */ | 465 | int max_mac_addr; /* xena=16 herc=64 */ |
466 | int mc_start_offset; /* xena=16 herc=64 */ | 466 | int mc_start_offset; /* xena=16 herc=64 */ |
467 | u8 multiq; | ||
467 | }; | 468 | }; |
468 | 469 | ||
469 | /* Structure representing MAC Addrs */ | 470 | /* Structure representing MAC Addrs */ |
@@ -720,6 +721,15 @@ struct fifo_info { | |||
720 | * the buffers | 721 | * the buffers |
721 | */ | 722 | */ |
722 | struct tx_curr_get_info tx_curr_get_info; | 723 | struct tx_curr_get_info tx_curr_get_info; |
724 | #define FIFO_QUEUE_START 0 | ||
725 | #define FIFO_QUEUE_STOP 1 | ||
726 | int queue_state; | ||
727 | |||
728 | /* copy of sp->dev pointer */ | ||
729 | struct net_device *dev; | ||
730 | |||
731 | /* copy of multiq status */ | ||
732 | u8 multiq; | ||
723 | 733 | ||
724 | /* Per fifo lock */ | 734 | /* Per fifo lock */ |
725 | spinlock_t tx_lock; | 735 | spinlock_t tx_lock; |