diff -u -p linux/drivers/net/wireless/wl3501.18.h linux/drivers/net/wireless/wl3501.h --- linux/drivers/net/wireless/wl3501.18.h 2005-08-29 13:34:02.000000000 -0700 +++ linux/drivers/net/wireless/wl3501.h 2005-08-29 13:34:35.000000000 -0700 @@ -609,6 +609,7 @@ struct wl3501_card { struct net_device_stats stats; struct iw_statistics wstats; struct iw_spy_data spy_data; + struct iw_public_data wireless_data; struct dev_node_t node; }; #endif diff -u -p linux/drivers/net/wireless/wl3501_cs.18.c linux/drivers/net/wireless/wl3501_cs.c --- linux/drivers/net/wireless/wl3501_cs.18.c 2005-08-29 13:32:36.000000000 -0700 +++ linux/drivers/net/wireless/wl3501_cs.c 2005-08-29 13:51:18.000000000 -0700 @@ -1943,7 +1943,7 @@ static const iw_handler wl3501_handler[] static const struct iw_handler_def wl3501_handler_def = { .num_standard = sizeof(wl3501_handler) / sizeof(iw_handler), .standard = (iw_handler *)wl3501_handler, - .spy_offset = offsetof(struct wl3501_card, spy_data), + .get_wireless_stats = wl3501_get_wireless_stats, }; /** @@ -1960,6 +1960,7 @@ static dev_link_t *wl3501_attach(void) client_reg_t client_reg; dev_link_t *link; struct net_device *dev; + struct wl3501_card *this; int ret; /* Initialize the dev_link_t structure */ @@ -1994,7 +1995,9 @@ static dev_link_t *wl3501_attach(void) dev->tx_timeout = wl3501_tx_timeout; dev->watchdog_timeo = 5 * HZ; dev->get_stats = wl3501_get_stats; - dev->get_wireless_stats = wl3501_get_wireless_stats; + this = dev->priv; + this->wireless_data.spy_data = &this->spy_data; + dev->wireless_data = &this->wireless_data; dev->wireless_handlers = (struct iw_handler_def *)&wl3501_handler_def; SET_ETHTOOL_OPS(dev, &ops); netif_stop_queue(dev);