aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/igb.h
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-01-19 18:20:57 -0500
committerDavid S. Miller <davem@davemloft.net>2009-01-21 17:34:30 -0500
commit5c0999b72b34541a3734a9138c43d5c024a42d47 (patch)
treed73efcb136aa71a7b82161b25d5e19c72865694e /drivers/net/igb/igb.h
parent649aa95d75cbadb9f440c1b8d04c666461de326f (diff)
igb: Replace LRO with GRO
This patch makes igb invoke the GRO hooks instead of LRO. As GRO has a compatible external interface to LRO this is a very straightforward replacement. Three things of note: 1) I've kept the LRO Kconfig option until we decide to enable GRO across the board at which point it can also be killed. 2) The poll_controller stuff is broken in igb as it tries to do the same work as the normal poll routine. Since poll_controller can be called in the middle of a poll, this can't be good. I noticed this because poll_controller can invoke the GRO hooks without flushing held GRO packets. However, this should be harmless (assuming the poll_controller bug above doesn't kill you first :) since the next ->poll will clear the backlog. The only time when we'll have a problem is if we're already executing the GRO code on the same ring, but that's no worse than what happens now. 3) I kept the ip_summed check before calling GRO so that we're on par with previous behaviour. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/igb/igb.h')
-rw-r--r--drivers/net/igb/igb.h16
1 files changed, 0 insertions, 16 deletions
diff --git a/drivers/net/igb/igb.h b/drivers/net/igb/igb.h
index 5a27825cc48a..7d8c88739154 100644
--- a/drivers/net/igb/igb.h
+++ b/drivers/net/igb/igb.h
@@ -36,12 +36,6 @@
36 36
37struct igb_adapter; 37struct igb_adapter;
38 38
39#ifdef CONFIG_IGB_LRO
40#include <linux/inet_lro.h>
41#define MAX_LRO_AGGR 32
42#define MAX_LRO_DESCRIPTORS 8
43#endif
44
45/* Interrupt defines */ 39/* Interrupt defines */
46#define IGB_MIN_DYN_ITR 3000 40#define IGB_MIN_DYN_ITR 3000
47#define IGB_MAX_DYN_ITR 96000 41#define IGB_MAX_DYN_ITR 96000
@@ -176,10 +170,6 @@ struct igb_ring {
176 struct napi_struct napi; 170 struct napi_struct napi;
177 int set_itr; 171 int set_itr;
178 struct igb_ring *buddy; 172 struct igb_ring *buddy;
179#ifdef CONFIG_IGB_LRO
180 struct net_lro_mgr lro_mgr;
181 bool lro_used;
182#endif
183 }; 173 };
184 }; 174 };
185 175
@@ -288,12 +278,6 @@ struct igb_adapter {
288 int need_ioport; 278 int need_ioport;
289 279
290 struct igb_ring *multi_tx_table[IGB_MAX_TX_QUEUES]; 280 struct igb_ring *multi_tx_table[IGB_MAX_TX_QUEUES];
291#ifdef CONFIG_IGB_LRO
292 unsigned int lro_max_aggr;
293 unsigned int lro_aggregated;
294 unsigned int lro_flushed;
295 unsigned int lro_no_desc;
296#endif
297 unsigned int tx_ring_count; 281 unsigned int tx_ring_count;
298 unsigned int rx_ring_count; 282 unsigned int rx_ring_count;
299}; 283};