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>
This commit is contained in:
committed by
Jeff Garzik
parent
19a3da6c6e
commit
3a3d5756ac
@@ -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;
|
||||
|
Reference in New Issue
Block a user