Commit c5838f46 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://kernel.bkbits.net/jgarzik/net-drivers-2.5

into home.osdl.org:/home/torvalds/v2.5/linux
parents 74541720 f258f44a
...@@ -2068,13 +2068,14 @@ e100_rx_srv(struct e100_private *bdp) ...@@ -2068,13 +2068,14 @@ e100_rx_srv(struct e100_private *bdp)
skb->ip_summed = CHECKSUM_NONE; skb->ip_summed = CHECKSUM_NONE;
} }
bdp->drv_stats.net_stats.rx_bytes += skb->len;
if(bdp->vlgrp && (rfd_status & CB_STATUS_VLAN)) { if(bdp->vlgrp && (rfd_status & CB_STATUS_VLAN)) {
vlan_hwaccel_rx(skb, bdp->vlgrp, be16_to_cpu(rfd->vlanid)); vlan_hwaccel_rx(skb, bdp->vlgrp, be16_to_cpu(rfd->vlanid));
} else { } else {
netif_rx(skb); netif_rx(skb);
} }
dev->last_rx = jiffies; dev->last_rx = jiffies;
bdp->drv_stats.net_stats.rx_bytes += skb->len;
rfd_cnt++; rfd_cnt++;
} /* end of rfd loop */ } /* end of rfd loop */
......
...@@ -77,7 +77,6 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi ...@@ -77,7 +77,6 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi
#define DE_DEF_MSG_ENABLE (NETIF_MSG_DRV | \ #define DE_DEF_MSG_ENABLE (NETIF_MSG_DRV | \
NETIF_MSG_PROBE | \ NETIF_MSG_PROBE | \
NETIF_MSG_LINK | \ NETIF_MSG_LINK | \
NETIF_MSG_TIMER | \
NETIF_MSG_IFDOWN | \ NETIF_MSG_IFDOWN | \
NETIF_MSG_IFUP | \ NETIF_MSG_IFUP | \
NETIF_MSG_RX_ERR | \ NETIF_MSG_RX_ERR | \
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
/* Set the copy breakpoint for the copy-only-tiny-frames scheme. /* Set the copy breakpoint for the copy-only-tiny-frames scheme.
* Setting to > 1518 effectively disables this feature. * Setting to > 1518 effectively disables this feature.
*/ */
static int rx_copybreak = 0; static int rx_copybreak = 200;
/* end user-configurable values */ /* end user-configurable values */
...@@ -85,8 +85,8 @@ static const int multicast_filter_limit = 32; ...@@ -85,8 +85,8 @@ static const int multicast_filter_limit = 32;
#define PKT_BUF_SZ 1536 #define PKT_BUF_SZ 1536
#define DRV_MODULE_NAME "typhoon" #define DRV_MODULE_NAME "typhoon"
#define DRV_MODULE_VERSION "1.0" #define DRV_MODULE_VERSION "1.5.1"
#define DRV_MODULE_RELDATE "03/02/14" #define DRV_MODULE_RELDATE "03/06/26"
#define PFX DRV_MODULE_NAME ": " #define PFX DRV_MODULE_NAME ": "
#define ERR_PFX KERN_ERR PFX #define ERR_PFX KERN_ERR PFX
...@@ -150,7 +150,7 @@ struct typhoon_card_info { ...@@ -150,7 +150,7 @@ struct typhoon_card_info {
#define TYPHOON_CRYPTO_DES 1 #define TYPHOON_CRYPTO_DES 1
#define TYPHOON_CRYPTO_3DES 2 #define TYPHOON_CRYPTO_3DES 2
#define TYPHOON_CRYPTO_VARIABLE 4 #define TYPHOON_CRYPTO_VARIABLE 4
#define TYPHOON_FIBER 5 #define TYPHOON_FIBER 8
enum typhoon_cards { enum typhoon_cards {
TYPHOON_TX = 0, TYPHOON_TX95, TYPHOON_TX97, TYPHOON_SVR, TYPHOON_TX = 0, TYPHOON_TX95, TYPHOON_TX97, TYPHOON_SVR,
...@@ -1798,7 +1798,7 @@ typhoon_interrupt(int irq, void *dev_instance, struct pt_regs *rgs) ...@@ -1798,7 +1798,7 @@ typhoon_interrupt(int irq, void *dev_instance, struct pt_regs *rgs)
u32 intr_status; u32 intr_status;
intr_status = readl(ioaddr + TYPHOON_REG_INTR_STATUS); intr_status = readl(ioaddr + TYPHOON_REG_INTR_STATUS);
if(!intr_status) if(!(intr_status & TYPHOON_INTR_HOST_INT))
return IRQ_NONE; return IRQ_NONE;
writel(intr_status, ioaddr + TYPHOON_REG_INTR_STATUS); writel(intr_status, ioaddr + TYPHOON_REG_INTR_STATUS);
......
...@@ -2901,6 +2901,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2901,6 +2901,7 @@ static int setup_proc_entry( struct net_device *dev,
airo_entry); airo_entry);
apriv->proc_entry->uid = proc_uid; apriv->proc_entry->uid = proc_uid;
apriv->proc_entry->gid = proc_gid; apriv->proc_entry->gid = proc_gid;
apriv->proc_entry->owner = THIS_MODULE;
/* Setup the StatsDelta */ /* Setup the StatsDelta */
entry = create_proc_entry("StatsDelta", entry = create_proc_entry("StatsDelta",
...@@ -2909,6 +2910,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2909,6 +2910,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_statsdelta_ops); SETPROC_OPS(entry, proc_statsdelta_ops);
/* Setup the Stats */ /* Setup the Stats */
...@@ -2918,6 +2920,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2918,6 +2920,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_stats_ops); SETPROC_OPS(entry, proc_stats_ops);
/* Setup the Status */ /* Setup the Status */
...@@ -2927,6 +2930,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2927,6 +2930,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_status_ops); SETPROC_OPS(entry, proc_status_ops);
/* Setup the Config */ /* Setup the Config */
...@@ -2936,6 +2940,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2936,6 +2940,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_config_ops); SETPROC_OPS(entry, proc_config_ops);
/* Setup the SSID */ /* Setup the SSID */
...@@ -2945,6 +2950,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2945,6 +2950,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_SSID_ops); SETPROC_OPS(entry, proc_SSID_ops);
/* Setup the APList */ /* Setup the APList */
...@@ -2954,6 +2960,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2954,6 +2960,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_APList_ops); SETPROC_OPS(entry, proc_APList_ops);
/* Setup the BSSList */ /* Setup the BSSList */
...@@ -2963,6 +2970,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2963,6 +2970,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_BSSList_ops); SETPROC_OPS(entry, proc_BSSList_ops);
/* Setup the WepKey */ /* Setup the WepKey */
...@@ -2972,6 +2980,7 @@ static int setup_proc_entry( struct net_device *dev, ...@@ -2972,6 +2980,7 @@ static int setup_proc_entry( struct net_device *dev,
entry->uid = proc_uid; entry->uid = proc_uid;
entry->gid = proc_gid; entry->gid = proc_gid;
entry->data = dev; entry->data = dev;
entry->owner = THIS_MODULE;
SETPROC_OPS(entry, proc_wepkey_ops); SETPROC_OPS(entry, proc_wepkey_ops);
return 0; return 0;
...@@ -3062,8 +3071,6 @@ static int proc_status_open( struct inode *inode, struct file *file ) { ...@@ -3062,8 +3071,6 @@ static int proc_status_open( struct inode *inode, struct file *file ) {
StatusRid status_rid; StatusRid status_rid;
int i; int i;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3143,8 +3150,6 @@ static int proc_stats_rid_open( struct inode *inode, ...@@ -3143,8 +3150,6 @@ static int proc_stats_rid_open( struct inode *inode,
StatsRid stats; StatsRid stats;
int i, j; int i, j;
int *vals = stats.vals; int *vals = stats.vals;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
...@@ -3421,8 +3426,6 @@ static int proc_config_open( struct inode *inode, struct file *file ) { ...@@ -3421,8 +3426,6 @@ static int proc_config_open( struct inode *inode, struct file *file ) {
struct airo_info *ai = dev->priv; struct airo_info *ai = dev->priv;
int i; int i;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3692,8 +3695,6 @@ static int proc_wepkey_open( struct inode *inode, struct file *file ) { ...@@ -3692,8 +3695,6 @@ static int proc_wepkey_open( struct inode *inode, struct file *file ) {
int j=0; int j=0;
int rc; int rc;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3742,8 +3743,6 @@ static int proc_SSID_open( struct inode *inode, struct file *file ) { ...@@ -3742,8 +3743,6 @@ static int proc_SSID_open( struct inode *inode, struct file *file ) {
char *ptr; char *ptr;
SsidRid SSID_rid; SsidRid SSID_rid;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3788,8 +3787,6 @@ static int proc_APList_open( struct inode *inode, struct file *file ) { ...@@ -3788,8 +3787,6 @@ static int proc_APList_open( struct inode *inode, struct file *file ) {
char *ptr; char *ptr;
APListRid APList_rid; APListRid APList_rid;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3840,8 +3837,6 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) { ...@@ -3840,8 +3837,6 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {
/* If doLoseSync is not 1, we won't do a Lose Sync */ /* If doLoseSync is not 1, we won't do a Lose Sync */
int doLoseSync = -1; int doLoseSync = -1;
MOD_INC_USE_COUNT;
if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL) if ((file->private_data = kmalloc(sizeof(struct proc_data ), GFP_KERNEL)) == NULL)
return -ENOMEM; return -ENOMEM;
memset(file->private_data, 0, sizeof(struct proc_data)); memset(file->private_data, 0, sizeof(struct proc_data));
...@@ -3904,7 +3899,6 @@ static int proc_close( struct inode *inode, struct file *file ) ...@@ -3904,7 +3899,6 @@ static int proc_close( struct inode *inode, struct file *file )
{ {
struct proc_data *data = (struct proc_data *)file->private_data; struct proc_data *data = (struct proc_data *)file->private_data;
if ( data->on_close != NULL ) data->on_close( inode, file ); if ( data->on_close != NULL ) data->on_close( inode, file );
MOD_DEC_USE_COUNT;
if ( data->rbuffer ) kfree( data->rbuffer ); if ( data->rbuffer ) kfree( data->rbuffer );
if ( data->wbuffer ) kfree( data->wbuffer ); if ( data->wbuffer ) kfree( data->wbuffer );
kfree( data ); kfree( data );
......
...@@ -321,7 +321,6 @@ struct site_survey { ...@@ -321,7 +321,6 @@ struct site_survey {
typedef struct netwave_private { typedef struct netwave_private {
dev_link_t link; dev_link_t link;
struct net_device dev;
spinlock_t spinlock; /* Serialize access to the hardware (SMP) */ spinlock_t spinlock; /* Serialize access to the hardware (SMP) */
dev_node_t node; dev_node_t node;
u_char *ramBase; u_char *ramBase;
...@@ -449,11 +448,13 @@ static dev_link_t *netwave_attach(void) ...@@ -449,11 +448,13 @@ static dev_link_t *netwave_attach(void)
netwave_flush_stale_links(); netwave_flush_stale_links();
/* Initialize the dev_link_t structure */ /* Initialize the dev_link_t structure */
priv = kmalloc(sizeof(*priv), GFP_KERNEL); dev = alloc_etherdev(sizeof(netwave_private));
if (!priv) return NULL; if (!dev)
memset(priv, 0, sizeof(*priv)); return NULL;
link = &priv->link; dev = &priv->dev; priv = dev->priv;
link->priv = dev->priv = priv; link = &priv->link;
link->priv = dev;
init_timer(&link->release); init_timer(&link->release);
link->release.function = &netwave_release; link->release.function = &netwave_release;
link->release.data = (u_long)link; link->release.data = (u_long)link;
...@@ -504,7 +505,6 @@ static dev_link_t *netwave_attach(void) ...@@ -504,7 +505,6 @@ static dev_link_t *netwave_attach(void)
dev->tx_timeout = &netwave_watchdog; dev->tx_timeout = &netwave_watchdog;
dev->watchdog_timeo = TX_TIMEOUT; dev->watchdog_timeo = TX_TIMEOUT;
ether_setup(dev);
dev->open = &netwave_open; dev->open = &netwave_open;
dev->stop = &netwave_close; dev->stop = &netwave_close;
link->irq.Instance = dev; link->irq.Instance = dev;
...@@ -541,7 +541,7 @@ static dev_link_t *netwave_attach(void) ...@@ -541,7 +541,7 @@ static dev_link_t *netwave_attach(void)
*/ */
static void netwave_detach(dev_link_t *link) static void netwave_detach(dev_link_t *link)
{ {
netwave_private *priv = link->priv; struct net_device *dev = link->priv;
dev_link_t **linkp; dev_link_t **linkp;
DEBUG(0, "netwave_detach(0x%p)\n", link); DEBUG(0, "netwave_detach(0x%p)\n", link);
...@@ -580,8 +580,8 @@ static void netwave_detach(dev_link_t *link) ...@@ -580,8 +580,8 @@ static void netwave_detach(dev_link_t *link)
/* Unlink device structure, free pieces */ /* Unlink device structure, free pieces */
*linkp = link->next; *linkp = link->next;
if (link->dev) if (link->dev)
unregister_netdev(&priv->dev); unregister_netdev(dev);
kfree(priv); kfree(dev);
} /* netwave_detach */ } /* netwave_detach */
...@@ -1038,8 +1038,8 @@ while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed ...@@ -1038,8 +1038,8 @@ while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed
static void netwave_pcmcia_config(dev_link_t *link) { static void netwave_pcmcia_config(dev_link_t *link) {
client_handle_t handle = link->handle; client_handle_t handle = link->handle;
netwave_private *priv = link->priv; struct net_device *dev = link->priv;
struct net_device *dev = &priv->dev; netwave_private *priv = dev->priv;
tuple_t tuple; tuple_t tuple;
cisparse_t parse; cisparse_t parse;
int i, j, last_ret, last_fn; int i, j, last_ret, last_fn;
...@@ -1099,7 +1099,7 @@ static void netwave_pcmcia_config(dev_link_t *link) { ...@@ -1099,7 +1099,7 @@ static void netwave_pcmcia_config(dev_link_t *link) {
* Allocate a 32K memory window. Note that the dev_link_t * Allocate a 32K memory window. Note that the dev_link_t
* structure provides space for one window handle -- if your * structure provides space for one window handle -- if your
* device needs several windows, you'll need to keep track of * device needs several windows, you'll need to keep track of
* the handles in your private data structure, link->priv. * the handles in your private data structure, dev->priv.
*/ */
DEBUG(1, "Setting mem speed of %d\n", mem_speed); DEBUG(1, "Setting mem speed of %d\n", mem_speed);
...@@ -1161,7 +1161,8 @@ static void netwave_pcmcia_config(dev_link_t *link) { ...@@ -1161,7 +1161,8 @@ static void netwave_pcmcia_config(dev_link_t *link) {
*/ */
static void netwave_release(u_long arg) { static void netwave_release(u_long arg) {
dev_link_t *link = (dev_link_t *)arg; dev_link_t *link = (dev_link_t *)arg;
netwave_private *priv = link->priv; struct net_device *dev = link->priv;
netwave_private *priv = dev->priv;
DEBUG(0, "netwave_release(0x%p)\n", link); DEBUG(0, "netwave_release(0x%p)\n", link);
...@@ -1206,8 +1207,7 @@ static void netwave_release(u_long arg) { ...@@ -1206,8 +1207,7 @@ static void netwave_release(u_long arg) {
static int netwave_event(event_t event, int priority, static int netwave_event(event_t event, int priority,
event_callback_args_t *args) { event_callback_args_t *args) {
dev_link_t *link = args->client_data; dev_link_t *link = args->client_data;
netwave_private *priv = link->priv; struct net_device *dev = link->priv;
struct net_device *dev = &priv->dev;
DEBUG(1, "netwave_event(0x%06x)\n", event); DEBUG(1, "netwave_event(0x%06x)\n", event);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment