2003-06-26 22:38:07

by Daniel Ritz

[permalink] [raw]
Subject: [PATCH 2.5 2/3] alloc_etherdev for netwave_cs.c

cleans up netwave_cs.c to use alloc_etherdev instead of allocating the device
out of the private data structure. compile tested only.
against 2.5.73-bk


--- 1.18/drivers/net/wireless/netwave_cs.c Wed May 28 17:01:08 2003
+++ edited/netwave_cs.c Thu Jun 26 22:05:04 2003
@@ -321,7 +321,6 @@

typedef struct netwave_private {
dev_link_t link;
- struct net_device dev;
spinlock_t spinlock; /* Serialize access to the hardware (SMP) */
dev_node_t node;
u_char *ramBase;
@@ -449,11 +448,13 @@
netwave_flush_stale_links();

/* Initialize the dev_link_t structure */
- priv = kmalloc(sizeof(*priv), GFP_KERNEL);
- if (!priv) return NULL;
- memset(priv, 0, sizeof(*priv));
- link = &priv->link; dev = &priv->dev;
- link->priv = dev->priv = priv;
+ dev = alloc_etherdev(sizeof(struct el3_private));
+ if (!dev)
+ return NULL;
+ lp = dev->priv;
+ link = &lp->link;
+ link->priv = dev;
+
init_timer(&link->release);
link->release.function = &netwave_release;
link->release.data = (u_long)link;
@@ -504,7 +505,6 @@
dev->tx_timeout = &netwave_watchdog;
dev->watchdog_timeo = TX_TIMEOUT;

- ether_setup(dev);
dev->open = &netwave_open;
dev->stop = &netwave_close;
link->irq.Instance = dev;
@@ -541,7 +541,7 @@
*/
static void netwave_detach(dev_link_t *link)
{
- netwave_private *priv = link->priv;
+ struct net_dev *dev = link->priv;
dev_link_t **linkp;

DEBUG(0, "netwave_detach(0x%p)\n", link);
@@ -580,8 +580,8 @@
/* Unlink device structure, free pieces */
*linkp = link->next;
if (link->dev)
- unregister_netdev(&priv->dev);
- kfree(priv);
+ unregister_netdev(dev);
+ kfree(dev);

} /* netwave_detach */

@@ -1038,8 +1038,8 @@

static void netwave_pcmcia_config(dev_link_t *link) {
client_handle_t handle = link->handle;
- netwave_private *priv = link->priv;
- struct net_device *dev = &priv->dev;
+ struct net_device *dev = link->priv;
+ netwave_private *priv = dev->priv;
tuple_t tuple;
cisparse_t parse;
int i, j, last_ret, last_fn;
@@ -1099,7 +1099,7 @@
* Allocate a 32K memory window. Note that the dev_link_t
* structure provides space for one window handle -- if your
* 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);

@@ -1161,7 +1161,8 @@
*/
static void netwave_release(u_long 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);

@@ -1206,8 +1207,7 @@
static int netwave_event(event_t event, int priority,
event_callback_args_t *args) {
dev_link_t *link = args->client_data;
- netwave_private *priv = link->priv;
- struct net_device *dev = &priv->dev;
+ struct net_device *dev = link->priv;

DEBUG(1, "netwave_event(0x%06x)\n", event);



2003-06-27 23:05:17

by Daniel Ritz

[permalink] [raw]
Subject: Re: [PATCH 2.5 2/3] alloc_etherdev for netwave_cs.c

erm...i didn't actually compile it...
sorry. corrected patch below.

-daniel

On Fri June 27 2003 00:45, Daniel Ritz wrote:
> cleans up netwave_cs.c to use alloc_etherdev instead of allocating the
> device out of the private data structure. compile tested only.
> against 2.5.73-bk

--- 1.18/drivers/net/wireless/netwave_cs.c Wed May 28 17:01:08 2003
+++ edited/wireless/netwave_cs.c Sat Jun 28 01:15:32 2003
@@ -321,7 +321,6 @@

typedef struct netwave_private {
dev_link_t link;
- struct net_device dev;
spinlock_t spinlock; /* Serialize access to the hardware (SMP) */
dev_node_t node;
u_char *ramBase;
@@ -449,11 +448,13 @@
netwave_flush_stale_links();

/* Initialize the dev_link_t structure */
- priv = kmalloc(sizeof(*priv), GFP_KERNEL);
- if (!priv) return NULL;
- memset(priv, 0, sizeof(*priv));
- link = &priv->link; dev = &priv->dev;
- link->priv = dev->priv = priv;
+ dev = alloc_etherdev(sizeof(netwave_private));
+ if (!dev)
+ return NULL;
+ priv = dev->priv;
+ link = &priv->link;
+ link->priv = dev;
+
init_timer(&link->release);
link->release.function = &netwave_release;
link->release.data = (u_long)link;
@@ -504,7 +505,6 @@
dev->tx_timeout = &netwave_watchdog;
dev->watchdog_timeo = TX_TIMEOUT;

- ether_setup(dev);
dev->open = &netwave_open;
dev->stop = &netwave_close;
link->irq.Instance = dev;
@@ -541,7 +541,7 @@
*/
static void netwave_detach(dev_link_t *link)
{
- netwave_private *priv = link->priv;
+ struct net_device *dev = link->priv;
dev_link_t **linkp;

DEBUG(0, "netwave_detach(0x%p)\n", link);
@@ -580,8 +580,8 @@
/* Unlink device structure, free pieces */
*linkp = link->next;
if (link->dev)
- unregister_netdev(&priv->dev);
- kfree(priv);
+ unregister_netdev(dev);
+ kfree(dev);

} /* netwave_detach */

@@ -1038,8 +1038,8 @@

static void netwave_pcmcia_config(dev_link_t *link) {
client_handle_t handle = link->handle;
- netwave_private *priv = link->priv;
- struct net_device *dev = &priv->dev;
+ struct net_device *dev = link->priv;
+ netwave_private *priv = dev->priv;
tuple_t tuple;
cisparse_t parse;
int i, j, last_ret, last_fn;
@@ -1099,7 +1099,7 @@
* Allocate a 32K memory window. Note that the dev_link_t
* structure provides space for one window handle -- if your
* 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);

@@ -1161,7 +1161,8 @@
*/
static void netwave_release(u_long 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);

@@ -1206,8 +1207,7 @@
static int netwave_event(event_t event, int priority,
event_callback_args_t *args) {
dev_link_t *link = args->client_data;
- netwave_private *priv = link->priv;
- struct net_device *dev = &priv->dev;
+ struct net_device *dev = link->priv;

DEBUG(1, "netwave_event(0x%06x)\n", event);