aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/spider_net.h
diff options
context:
space:
mode:
authorLinas Vepstas <linas@austin.ibm.com>2006-12-13 16:06:59 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-05 16:58:43 -0500
commitd4ed8f8d1fb7d59eb63d2eada9a32c2f8c3795e2 (patch)
tree5deb53b975439ce61e40bee57259c2d113df598a /drivers/net/spider_net.h
parent834324687d08e0f67b167934cb56406aa98ff8c6 (diff)
Spidernet DMA coalescing
The current driver code performs 512 DMA mappings of a bunch of 32-byte ring descriptor structures. This is silly, as they are all in contiguous memory. This patch changes the code to dma_map_coherent() each rx/tx ring as a whole. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Cc: James K Lewis <jklewis@us.ibm.com> Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/spider_net.h')
-rw-r--r--drivers/net/spider_net.h17
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/net/spider_net.h b/drivers/net/spider_net.h
index 3e196df29790..4b76ef9524d1 100644
--- a/drivers/net/spider_net.h
+++ b/drivers/net/spider_net.h
@@ -378,6 +378,9 @@ struct spider_net_descr_chain {
378 spinlock_t lock; 378 spinlock_t lock;
379 struct spider_net_descr *head; 379 struct spider_net_descr *head;
380 struct spider_net_descr *tail; 380 struct spider_net_descr *tail;
381 struct spider_net_descr *ring;
382 int num_desc;
383 dma_addr_t dma_addr;
381}; 384};
382 385
383/* descriptor data_status bits */ 386/* descriptor data_status bits */
@@ -397,8 +400,6 @@ struct spider_net_descr_chain {
397 * 701b8000 would be correct, but every packets gets that flag */ 400 * 701b8000 would be correct, but every packets gets that flag */
398#define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000 401#define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000
399 402
400#define SPIDER_NET_DESCR_SIZE 32
401
402/* this will be bigger some time */ 403/* this will be bigger some time */
403struct spider_net_options { 404struct spider_net_options {
404 int rx_csum; /* for rx: if 0 ip_summed=NONE, 405 int rx_csum; /* for rx: if 0 ip_summed=NONE,
@@ -441,25 +442,17 @@ struct spider_net_card {
441 struct spider_net_descr_chain rx_chain; 442 struct spider_net_descr_chain rx_chain;
442 struct spider_net_descr *low_watermark; 443 struct spider_net_descr *low_watermark;
443 444
444 struct net_device_stats netdev_stats;
445
446 struct spider_net_options options;
447
448 spinlock_t intmask_lock;
449 struct tasklet_struct rxram_full_tl; 445 struct tasklet_struct rxram_full_tl;
450 struct timer_list tx_timer; 446 struct timer_list tx_timer;
451
452 struct work_struct tx_timeout_task; 447 struct work_struct tx_timeout_task;
453 atomic_t tx_timeout_task_counter; 448 atomic_t tx_timeout_task_counter;
454 wait_queue_head_t waitq; 449 wait_queue_head_t waitq;
455 450
456 /* for ethtool */ 451 /* for ethtool */
457 int msg_enable; 452 int msg_enable;
458 int num_rx_desc; 453 struct net_device_stats netdev_stats;
459 int num_tx_desc;
460 struct spider_net_extra_stats spider_stats; 454 struct spider_net_extra_stats spider_stats;
461 455 struct spider_net_options options;
462 struct spider_net_descr descr[0];
463}; 456};
464 457
465#define pr_err(fmt,arg...) \ 458#define pr_err(fmt,arg...) \