Skip to content

Commit

Permalink
igb: Introduce multiple TX queues with infrastructure
Browse files Browse the repository at this point in the history
This code adds multiple Tx queue infrastructure much like we
previously did in ixgbe. The MSI-X vector mapping is the bulk of
the change.

IAM can now be safely enabled and we've verified that it does
work correctly. We can also eliminate the tx ring lock.

Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
  • Loading branch information
Peter P Waskiewicz Jr authored and Jeff Garzik committed Jul 11, 2008
1 parent f731a9e commit 661086d
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 53 deletions.
7 changes: 5 additions & 2 deletions drivers/net/igb/igb.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ struct igb_adapter;

/* Transmit and receive queues */
#define IGB_MAX_RX_QUEUES 4
#define IGB_MAX_TX_QUEUES 4

/* RX descriptor control thresholds.
* PTHRESH - MAC will consider prefetch if it has fewer than this number of
Expand Down Expand Up @@ -157,8 +158,6 @@ struct igb_ring {
union {
/* TX */
struct {
spinlock_t tx_clean_lock;
spinlock_t tx_lock;
bool detect_tx_hung;
};
/* RX */
Expand Down Expand Up @@ -277,6 +276,10 @@ struct igb_adapter {
/* for ioport free */
int bars;
int need_ioport;

#ifdef CONFIG_NETDEVICES_MULTIQUEUE
struct igb_ring *multi_tx_table[IGB_MAX_TX_QUEUES];
#endif /* CONFIG_NETDEVICES_MULTIQUEUE */
};

enum e1000_state_t {
Expand Down
Loading

0 comments on commit 661086d

Please sign in to comment.