via-velocity: separated struct allow wholesale copy during MTU changes.

It should help people fix the bugs in my code :o)

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Francois Romieu
2008-07-31 22:10:10 +02:00
parent 031cf19e6f
commit 0fe9f15ee8
2 changed files with 111 additions and 106 deletions

View File

@@ -1494,6 +1494,10 @@ struct velocity_opt {
u32 flags;
};
#define AVAIL_TD(p,q) ((p)->options.numtx-((p)->tx.used[(q)]))
#define GET_RD_BY_IDX(vptr, idx) (vptr->rd_ring[idx])
struct velocity_info {
struct list_head list;
@@ -1501,9 +1505,6 @@ struct velocity_info {
struct net_device *dev;
struct net_device_stats stats;
dma_addr_t rd_pool_dma;
dma_addr_t td_pool_dma[TX_QUEUE_NO];
struct vlan_group *vlgrp;
u8 ip_addr[4];
enum chip_type chip_id;
@@ -1512,25 +1513,29 @@ struct velocity_info {
unsigned long memaddr;
unsigned long ioaddr;
u8 rev_id;
struct tx_info {
int numq;
#define AVAIL_TD(p,q) ((p)->options.numtx-((p)->td_used[(q)]))
/* FIXME: the locality of the data seems rather poor. */
int used[TX_QUEUE_NO];
int curr[TX_QUEUE_NO];
int tail[TX_QUEUE_NO];
struct tx_desc *rings[TX_QUEUE_NO];
struct velocity_td_info *infos[TX_QUEUE_NO];
dma_addr_t pool_dma[TX_QUEUE_NO];
} tx;
int num_txq;
struct rx_info {
int buf_sz;
volatile int td_used[TX_QUEUE_NO];
int td_curr[TX_QUEUE_NO];
int td_tail[TX_QUEUE_NO];
struct tx_desc *td_rings[TX_QUEUE_NO];
struct velocity_td_info *td_infos[TX_QUEUE_NO];
int dirty;
int curr;
u32 filled;
struct rx_desc *ring;
struct velocity_rd_info *info; /* It's an array */
dma_addr_t pool_dma;
} rx;
int rd_curr;
int rd_dirty;
u32 rd_filled;
struct rx_desc *rd_ring;
struct velocity_rd_info *rd_info; /* It's an array */
#define GET_RD_BY_IDX(vptr, idx) (vptr->rd_ring[idx])
u32 mib_counter[MAX_HW_MIB_COUNTER];
struct velocity_opt options;
@@ -1538,7 +1543,6 @@ struct velocity_info {
u32 flags;
int rx_buf_sz;
u32 mii_status;
u32 phy_id;
int multicast_limit;
@@ -1554,8 +1558,8 @@ struct velocity_info {
struct velocity_context context;
u32 ticks;
u32 rx_bytes;
u8 rev_id;
};
/**