diff -u original/src/defs.h fritz/src/defs.h --- original/src/defs.h 2007-07-05 15:00:00.000000000 +0200 +++ fritz/src/defs.h 2008-07-27 23:03:25.000000000 +0200 @@ -60,7 +60,7 @@ #define UNUSED_ARG(x) (x)=(x) -typedef unsigned long uintptr_t; +//typedef unsigned long uintptr_t; /*---------------------------------------------------------------------------*\ \*---------------------------------------------------------------------------*/ diff -u original/src/driver.c fritz/src/driver.c --- original/src/driver.c 2007-07-05 15:00:00.000000000 +0200 +++ fritz/src/driver.c 2010-01-01 11:41:42.000000000 +0100 @@ -303,6 +303,14 @@ /*---------------------------------------------------------------------------*\ \*---------------------------------------------------------------------------*/ + +static const struct net_device_ops fwlanusb_netdev_ops = { + .ndo_open = net_open, + .ndo_stop = net_stop, + .ndo_start_xmit = net_tx, + .ndo_get_stats = net_stats, +}; + static int net_init (card_p pdc) { struct net_device *dev = NULL; @@ -314,11 +322,8 @@ return -ENOMEM; } - dev->priv = pdc; - dev->open = net_open; - dev->stop = net_stop; - dev->hard_start_xmit = net_tx; - dev->get_stats = net_stats; + (*(card_p*)netdev_priv(dev)) = pdc; + dev->netdev_ops = &fwlanusb_netdev_ops; fwlanusb_get_hw_mac (dev, NULL, NULL, (char*) &mac); lib_memcpy (dev->dev_addr, mac.sa_data, 6); @@ -326,6 +331,7 @@ dev->wireless_handlers = &fwlanusb_handler_def; pdc->net_dev = dev; + SET_NETDEV_DEV(dev, &pdc->usb_dev->dev); if ((res = register_netdev (dev)) < 0) { ERROR("Could not register network device.\n"); @@ -402,7 +408,7 @@ int net_rx (struct net_device *dev, void *p_packet, unsigned short length) { struct sk_buff *skb; - card_p pdc = (card_p) dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); unsigned char buffer[4096]; (*wlan_lib->msdu_2_skb) (p_packet, buffer, length); @@ -433,7 +439,7 @@ \*---------------------------------------------------------------------------*/ int net_tx (struct sk_buff *skb, struct net_device *dev) { - card_p pdc = (card_p) dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); assert(skb_shinfo (skb)->nr_frags == 0); @@ -455,7 +461,7 @@ \*---------------------------------------------------------------------------*/ struct net_device_stats *net_stats (struct net_device *dev) { - card_p pdc = (card_p) dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); return &pdc->net_stats; } diff -u original/src/main.c fritz/src/main.c --- original/src/main.c 2007-07-05 15:00:00.000000000 +0200 +++ fritz/src/main.c 2008-07-28 11:52:26.000000000 +0200 @@ -46,7 +46,7 @@ /*---------------------------------------------------------------------------*\ \*---------------------------------------------------------------------------*/ -MODULE_LICENSE ("Proprietary"); +MODULE_LICENSE ("GPL"); MODULE_DESCRIPTION ("Driver for " PRODUCT_LOGO); /*---------------------------------------------------------------------------*\ diff -u original/src/Makefile fritz/src/Makefile --- original/src/Makefile 2007-07-05 15:00:00.000000000 +0200 +++ fritz/src/Makefile 2010-01-01 10:48:53.000000000 +0100 @@ -1,8 +1,9 @@ # COMMON +KERNEL := 2.6.32-gentoo CARD := fwlanusb LIBDIR := /tmp/lib/fritz/ -INSTALLDIR := /lib/modules/$(shell uname -r)/extra/ +INSTALLDIR := /lib/modules/$(KERNEL)/extra/ OBJECTS := main.o driver.o tools.o lib.o buffers.o wext.o ifneq ($(KERNELRELEASE),) @@ -27,7 +28,7 @@ buffers.h wext.h ifeq ($(KDIR),) -KDIR := /lib/modules/$(shell uname -r)/build +KDIR := /lib/modules/$(KERNEL)/build endif all: $(CARD).o Only in fritz/src/: modules.order diff -u original/src/wext.c fritz/src/wext.c --- original/src/wext.c 2007-07-05 15:00:00.000000000 +0200 +++ fritz/src/wext.c 2009-08-16 19:04:30.000000000 +0200 @@ -40,7 +40,7 @@ static struct iw_statistics *fwlanusb_get_wireless_stats ( struct net_device * dev){ - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_RSSI }; wstats.qual.updated = IW_QUAL_QUAL_INVALID | IW_QUAL_LEVEL_UPDATED | @@ -68,7 +68,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - strcpy(wrqu->name, "IEEE 802.11b/g"); + snprintf(wrqu->name, IFNAMSIZ, "IEEE 802.11b/g"); return 0; } @@ -78,7 +78,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_CHANNEL }; int i; @@ -110,7 +110,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_CHANNEL }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR) { @@ -129,7 +129,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_MODE }; if ((wrqu->mode < IW_MODE_AUTO) || (wrqu->mode > IW_MODE_MONITOR)) @@ -162,7 +162,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_MODE }; /*FIXME: Why does ad-hoc mode not work*/ @@ -219,7 +219,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_BSSID }; lib_memcpy (ioctl.data.mac.address, wrqu->ap_addr.sa_data, ETH_ALEN); @@ -237,7 +237,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_BSSID }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR) { @@ -256,7 +256,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); struct iw_mlme *mlme = (struct iw_mlme*) extra; fwlanusb_ioctl_t ioctl; @@ -286,7 +286,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *essid) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_SCAN }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR) { @@ -304,7 +304,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_SCAN }; int i, ret, sites = 20; char *stream = extra; @@ -341,18 +341,18 @@ iwe.cmd = SIOCGIWAP; iwe.u.ap_addr.sa_family = ARPHRD_ETHER; lib_memcpy(iwe.u.ap_addr.sa_data, site->mac.address, ETH_ALEN); - stream = iwe_stream_add_event(stream, extra + wrqu->data.length, &iwe, IW_EV_ADDR_LEN); + stream = iwe_stream_add_event( info, stream, extra + wrqu->data.length, &iwe, IW_EV_ADDR_LEN); /*SSID*/ iwe.cmd = SIOCGIWESSID; iwe.u.data.length = site->ssid.length; iwe.u.data.flags = 1; - stream = iwe_stream_add_point(stream, extra + wrqu->data.length, &iwe, site->ssid.name); + stream = iwe_stream_add_point( info, stream, extra + wrqu->data.length, &iwe, site->ssid.name); /*WPA/WPA2 IE*/ iwe.cmd = IWEVGENIE; iwe.u.data.length = site->ies.length; - stream = iwe_stream_add_point(stream, extra + wrqu->data.length, &iwe, site->ies.data); + stream = iwe_stream_add_point( info, stream, extra + wrqu->data.length, &iwe, site->ies.data); } hfree(ioctl.data.scan.site); @@ -369,7 +369,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *essid) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_SSID }; if (wrqu->essid.flags) { @@ -402,7 +402,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *essid) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_SSID }; int ssid_length; @@ -435,7 +435,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl; int auth, enc, index = (wrqu->encoding.flags & IW_ENCODE_INDEX) - 1, enc_on = 0; @@ -513,7 +513,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl; int auth, enc, index = (wrqu->encoding.flags & IW_ENCODE_INDEX) - 1; @@ -576,7 +576,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); struct iw_param *param = &wrqu->param; fwlanusb_ioctl_t ioctl; @@ -676,7 +676,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); struct iw_param *param = &wrqu->param; fwlanusb_ioctl_t ioctl; @@ -769,7 +769,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl; struct iw_encode_ext * ext = (struct iw_encode_ext *)extra; int index; @@ -829,7 +829,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_HW_MAC }; struct sockaddr *mac = (struct sockaddr *) extra; @@ -848,7 +848,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { .type = IOCTL_DISASSOC, .data.reason.value = 1 }; @@ -864,7 +864,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_G_PLUS_PLUS }; ioctl.data.g_plus_plus.value = *(__u32*)wrqu; @@ -885,7 +885,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_G_PLUS_PLUS }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR) @@ -902,7 +902,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_DBG_SEVERITY }; ioctl.data.dbg_sev.value = *(__u32*)wrqu; @@ -919,7 +919,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_DBG_SEVERITY }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR) @@ -936,7 +936,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_SET_DBG_MODULE }; ioctl.data.dbg_mod.value = *(__u32*)wrqu; @@ -953,7 +953,7 @@ struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) { - card_p pdc = (card_p)dev->priv; + card_p pdc = (*(card_p*)netdev_priv(dev)); fwlanusb_ioctl_t ioctl = { IOCTL_GET_DBG_MODULE }; if ((*wlan_lib->do_ioctl) (pdc, &ioctl) == IOCTL_ERROR)