ath9k: fix compile error without debug enabled
[safe/jmp/linux-2.6] / drivers / net / wireless / ray_cs.c
index 28db791..f1e916a 100644 (file)
@@ -323,8 +323,7 @@ static int ray_probe(struct pcmcia_device *p_dev)
        p_dev->io.IOAddrLines = 5;
 
        /* Interrupt setup. For PCMCIA, driver takes what's given */
-       p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_HANDLE_PRESENT;
-       p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID;
+       p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
        p_dev->irq.Handler = &ray_interrupt;
 
        /* General socket configuration */
@@ -333,7 +332,6 @@ static int ray_probe(struct pcmcia_device *p_dev)
        p_dev->conf.ConfigIndex = 1;
 
        p_dev->priv = dev;
-       p_dev->irq.Instance = dev;
 
        local->finder = p_dev;
        local->card_status = CARD_INSERTED;
@@ -438,12 +436,12 @@ static int ray_config(struct pcmcia_device *link)
        req.Base = 0;
        req.Size = 0x8000;
        req.AccessSpeed = ray_mem_speed;
-       ret = pcmcia_request_window(&link, &req, &link->win);
+       ret = pcmcia_request_window(link, &req, &link->win);
        if (ret)
                goto failed;
        mem.CardOffset = 0x0000;
        mem.Page = 0;
-       ret = pcmcia_map_mem_page(link->win, &mem);
+       ret = pcmcia_map_mem_page(link, link->win, &mem);
        if (ret)
                goto failed;
        local->sram = ioremap(req.Base, req.Size);
@@ -454,12 +452,12 @@ static int ray_config(struct pcmcia_device *link)
        req.Base = 0;
        req.Size = 0x4000;
        req.AccessSpeed = ray_mem_speed;
-       ret = pcmcia_request_window(&link, &req, &local->rmem_handle);
+       ret = pcmcia_request_window(link, &req, &local->rmem_handle);
        if (ret)
                goto failed;
        mem.CardOffset = 0x8000;
        mem.Page = 0;
-       ret = pcmcia_map_mem_page(local->rmem_handle, &mem);
+       ret = pcmcia_map_mem_page(link, local->rmem_handle, &mem);
        if (ret)
                goto failed;
        local->rmem = ioremap(req.Base, req.Size);
@@ -470,12 +468,12 @@ static int ray_config(struct pcmcia_device *link)
        req.Base = 0;
        req.Size = 0x1000;
        req.AccessSpeed = ray_mem_speed;
-       ret = pcmcia_request_window(&link, &req, &local->amem_handle);
+       ret = pcmcia_request_window(link, &req, &local->amem_handle);
        if (ret)
                goto failed;
        mem.CardOffset = 0x0000;
        mem.Page = 0;
-       ret = pcmcia_map_mem_page(local->amem_handle, &mem);
+       ret = pcmcia_map_mem_page(link, local->amem_handle, &mem);
        if (ret)
                goto failed;
        local->amem = ioremap(req.Base, req.Size);
@@ -488,7 +486,7 @@ static int ray_config(struct pcmcia_device *link)
                return -ENODEV;
        }
 
-       SET_NETDEV_DEV(dev, &handle_to_dev(link));
+       SET_NETDEV_DEV(dev, &link->dev);
        i = register_netdev(dev);
        if (i != 0) {
                printk("ray_config register_netdev() failed\n");
@@ -558,7 +556,7 @@ static int ray_init(struct net_device *dev)
        local->fw_ver = local->startup_res.firmware_version[0];
        local->fw_bld = local->startup_res.firmware_version[1];
        local->fw_var = local->startup_res.firmware_version[2];
-       dev_dbg(&link->dev, "ray_init firmware version %d.%d \n", local->fw_ver,
+       dev_dbg(&link->dev, "ray_init firmware version %d.%d\n", local->fw_ver,
              local->fw_bld);
 
        local->tib_length = 0x20;
@@ -820,10 +818,10 @@ static void ray_release(struct pcmcia_device *link)
        iounmap(local->rmem);
        iounmap(local->amem);
        /* Do bother checking to see if these succeed or not */
-       i = pcmcia_release_window(local->amem_handle);
+       i = pcmcia_release_window(link, local->amem_handle);
        if (i != 0)
                dev_dbg(&link->dev, "ReleaseWindow(local->amem) ret = %x\n", i);
-       i = pcmcia_release_window(local->rmem_handle);
+       i = pcmcia_release_window(link, local->rmem_handle);
        if (i != 0)
                dev_dbg(&link->dev, "ReleaseWindow(local->rmem) ret = %x\n", i);
        pcmcia_disable_device(link);
@@ -1115,10 +1113,10 @@ static const struct ethtool_ops netdev_ethtool_ops = {
 /*
  * Wireless Handler : get protocol name
  */
-static int ray_get_name(struct net_device *dev,
-                       struct iw_request_info *info, char *cwrq, char *extra)
+static int ray_get_name(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
-       strcpy(cwrq, "IEEE 802.11-FH");
+       strcpy(wrqu->name, "IEEE 802.11-FH");
        return 0;
 }
 
@@ -1126,9 +1124,8 @@ static int ray_get_name(struct net_device *dev,
 /*
  * Wireless Handler : set frequency
  */
-static int ray_set_freq(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_freq *fwrq, char *extra)
+static int ray_set_freq(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
        int err = -EINPROGRESS; /* Call commit handler */
@@ -1138,10 +1135,10 @@ static int ray_set_freq(struct net_device *dev,
                return -EBUSY;
 
        /* Setting by channel number */
-       if ((fwrq->m > USA_HOP_MOD) || (fwrq->e > 0))
+       if ((wrqu->freq.m > USA_HOP_MOD) || (wrqu->freq.e > 0))
                err = -EOPNOTSUPP;
        else
-               local->sparm.b5.a_hop_pattern = fwrq->m;
+               local->sparm.b5.a_hop_pattern = wrqu->freq.m;
 
        return err;
 }
@@ -1150,14 +1147,13 @@ static int ray_set_freq(struct net_device *dev,
 /*
  * Wireless Handler : get frequency
  */
-static int ray_get_freq(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_freq *fwrq, char *extra)
+static int ray_get_freq(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
-       fwrq->m = local->sparm.b5.a_hop_pattern;
-       fwrq->e = 0;
+       wrqu->freq.m = local->sparm.b5.a_hop_pattern;
+       wrqu->freq.e = 0;
        return 0;
 }
 
@@ -1165,9 +1161,8 @@ static int ray_get_freq(struct net_device *dev,
 /*
  * Wireless Handler : set ESSID
  */
-static int ray_set_essid(struct net_device *dev,
-                        struct iw_request_info *info,
-                        struct iw_point *dwrq, char *extra)
+static int ray_set_essid(struct net_device *dev, struct iw_request_info *info,
+                        union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
@@ -1176,19 +1171,17 @@ static int ray_set_essid(struct net_device *dev,
                return -EBUSY;
 
        /* Check if we asked for `any' */
-       if (dwrq->flags == 0) {
+       if (wrqu->essid.flags == 0)
                /* Corey : can you do that ? */
                return -EOPNOTSUPP;
-       } else {
-               /* Check the size of the string */
-               if (dwrq->length > IW_ESSID_MAX_SIZE) {
-                       return -E2BIG;
-               }
 
-               /* Set the ESSID in the card */
-               memset(local->sparm.b5.a_current_ess_id, 0, IW_ESSID_MAX_SIZE);
-               memcpy(local->sparm.b5.a_current_ess_id, extra, dwrq->length);
-       }
+       /* Check the size of the string */
+       if (wrqu->essid.length > IW_ESSID_MAX_SIZE)
+               return -E2BIG;
+
+       /* Set the ESSID in the card */
+       memset(local->sparm.b5.a_current_ess_id, 0, IW_ESSID_MAX_SIZE);
+       memcpy(local->sparm.b5.a_current_ess_id, extra, wrqu->essid.length);
 
        return -EINPROGRESS;    /* Call commit handler */
 }
@@ -1197,9 +1190,8 @@ static int ray_set_essid(struct net_device *dev,
 /*
  * Wireless Handler : get ESSID
  */
-static int ray_get_essid(struct net_device *dev,
-                        struct iw_request_info *info,
-                        struct iw_point *dwrq, char *extra)
+static int ray_get_essid(struct net_device *dev, struct iw_request_info *info,
+                        union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
@@ -1207,8 +1199,8 @@ static int ray_get_essid(struct net_device *dev,
        memcpy(extra, local->sparm.b5.a_current_ess_id, IW_ESSID_MAX_SIZE);
 
        /* Push it out ! */
-       dwrq->length = strlen(extra);
-       dwrq->flags = 1;        /* active */
+       wrqu->essid.length = strlen(extra);
+       wrqu->essid.flags = 1;  /* active */
 
        return 0;
 }
@@ -1217,14 +1209,13 @@ static int ray_get_essid(struct net_device *dev,
 /*
  * Wireless Handler : get AP address
  */
-static int ray_get_wap(struct net_device *dev,
-                      struct iw_request_info *info,
-                      struct sockaddr *awrq, char *extra)
+static int ray_get_wap(struct net_device *dev, struct iw_request_info *info,
+                      union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
-       memcpy(awrq->sa_data, local->bss_id, ETH_ALEN);
-       awrq->sa_family = ARPHRD_ETHER;
+       memcpy(wrqu->ap_addr.sa_data, local->bss_id, ETH_ALEN);
+       wrqu->ap_addr.sa_family = ARPHRD_ETHER;
 
        return 0;
 }
@@ -1233,9 +1224,8 @@ static int ray_get_wap(struct net_device *dev,
 /*
  * Wireless Handler : set Bit-Rate
  */
-static int ray_set_rate(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_param *vwrq, char *extra)
+static int ray_set_rate(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
@@ -1244,15 +1234,15 @@ static int ray_set_rate(struct net_device *dev,
                return -EBUSY;
 
        /* Check if rate is in range */
-       if ((vwrq->value != 1000000) && (vwrq->value != 2000000))
+       if ((wrqu->bitrate.value != 1000000) && (wrqu->bitrate.value != 2000000))
                return -EINVAL;
 
        /* Hack for 1.5 Mb/s instead of 2 Mb/s */
        if ((local->fw_ver == 0x55) &&  /* Please check */
-           (vwrq->value == 2000000))
+           (wrqu->bitrate.value == 2000000))
                local->net_default_tx_rate = 3;
        else
-               local->net_default_tx_rate = vwrq->value / 500000;
+               local->net_default_tx_rate = wrqu->bitrate.value / 500000;
 
        return 0;
 }
@@ -1261,17 +1251,16 @@ static int ray_set_rate(struct net_device *dev,
 /*
  * Wireless Handler : get Bit-Rate
  */
-static int ray_get_rate(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_param *vwrq, char *extra)
+static int ray_get_rate(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
        if (local->net_default_tx_rate == 3)
-               vwrq->value = 2000000;  /* Hum... */
+               wrqu->bitrate.value = 2000000;  /* Hum... */
        else
-               vwrq->value = local->net_default_tx_rate * 500000;
-       vwrq->fixed = 0;        /* We are in auto mode */
+               wrqu->bitrate.value = local->net_default_tx_rate * 500000;
+       wrqu->bitrate.fixed = 0;        /* We are in auto mode */
 
        return 0;
 }
@@ -1280,19 +1269,18 @@ static int ray_get_rate(struct net_device *dev,
 /*
  * Wireless Handler : set RTS threshold
  */
-static int ray_set_rts(struct net_device *dev,
-                      struct iw_request_info *info,
-                      struct iw_param *vwrq, char *extra)
+static int ray_set_rts(struct net_device *dev, struct iw_request_info *info,
+                      union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
-       int rthr = vwrq->value;
+       int rthr = wrqu->rts.value;
 
        /* Reject if card is already initialised */
        if (local->card_status != CARD_AWAITING_PARAM)
                return -EBUSY;
 
        /* if(wrq->u.rts.fixed == 0) we should complain */
-       if (vwrq->disabled)
+       if (wrqu->rts.disabled)
                rthr = 32767;
        else {
                if ((rthr < 0) || (rthr > 2347))   /* What's the max packet size ??? */
@@ -1308,16 +1296,15 @@ static int ray_set_rts(struct net_device *dev,
 /*
  * Wireless Handler : get RTS threshold
  */
-static int ray_get_rts(struct net_device *dev,
-                      struct iw_request_info *info,
-                      struct iw_param *vwrq, char *extra)
+static int ray_get_rts(struct net_device *dev, struct iw_request_info *info,
+                      union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
-       vwrq->value = (local->sparm.b5.a_rts_threshold[0] << 8)
+       wrqu->rts.value = (local->sparm.b5.a_rts_threshold[0] << 8)
            + local->sparm.b5.a_rts_threshold[1];
-       vwrq->disabled = (vwrq->value == 32767);
-       vwrq->fixed = 1;
+       wrqu->rts.disabled = (wrqu->rts.value == 32767);
+       wrqu->rts.fixed = 1;
 
        return 0;
 }
@@ -1326,19 +1313,18 @@ static int ray_get_rts(struct net_device *dev,
 /*
  * Wireless Handler : set Fragmentation threshold
  */
-static int ray_set_frag(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_param *vwrq, char *extra)
+static int ray_set_frag(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
-       int fthr = vwrq->value;
+       int fthr = wrqu->frag.value;
 
        /* Reject if card is already initialised */
        if (local->card_status != CARD_AWAITING_PARAM)
                return -EBUSY;
 
        /* if(wrq->u.frag.fixed == 0) should complain */
-       if (vwrq->disabled)
+       if (wrqu->frag.disabled)
                fthr = 32767;
        else {
                if ((fthr < 256) || (fthr > 2347))      /* To check out ! */
@@ -1354,16 +1340,15 @@ static int ray_set_frag(struct net_device *dev,
 /*
  * Wireless Handler : get Fragmentation threshold
  */
-static int ray_get_frag(struct net_device *dev,
-                       struct iw_request_info *info,
-                       struct iw_param *vwrq, char *extra)
+static int ray_get_frag(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
-       vwrq->value = (local->sparm.b5.a_frag_threshold[0] << 8)
+       wrqu->frag.value = (local->sparm.b5.a_frag_threshold[0] << 8)
            + local->sparm.b5.a_frag_threshold[1];
-       vwrq->disabled = (vwrq->value == 32767);
-       vwrq->fixed = 1;
+       wrqu->frag.disabled = (wrqu->frag.value == 32767);
+       wrqu->frag.fixed = 1;
 
        return 0;
 }
@@ -1372,8 +1357,8 @@ static int ray_get_frag(struct net_device *dev,
 /*
  * Wireless Handler : set Mode of Operation
  */
-static int ray_set_mode(struct net_device *dev,
-                       struct iw_request_info *info, __u32 *uwrq, char *extra)
+static int ray_set_mode(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
        int err = -EINPROGRESS; /* Call commit handler */
@@ -1383,7 +1368,7 @@ static int ray_set_mode(struct net_device *dev,
        if (local->card_status != CARD_AWAITING_PARAM)
                return -EBUSY;
 
-       switch (*uwrq) {
+       switch (wrqu->mode) {
        case IW_MODE_ADHOC:
                card_mode = 0;
                /* Fall through */
@@ -1401,15 +1386,15 @@ static int ray_set_mode(struct net_device *dev,
 /*
  * Wireless Handler : get Mode of Operation
  */
-static int ray_get_mode(struct net_device *dev,
-                       struct iw_request_info *info, __u32 *uwrq, char *extra)
+static int ray_get_mode(struct net_device *dev, struct iw_request_info *info,
+                       union iwreq_data *wrqu, char *extra)
 {
        ray_dev_t *local = netdev_priv(dev);
 
        if (local->sparm.b5.a_network_type)
-               *uwrq = IW_MODE_INFRA;
+               wrqu->mode = IW_MODE_INFRA;
        else
-               *uwrq = IW_MODE_ADHOC;
+               wrqu->mode = IW_MODE_ADHOC;
 
        return 0;
 }
@@ -1418,16 +1403,15 @@ static int ray_get_mode(struct net_device *dev,
 /*
  * Wireless Handler : get range info
  */
-static int ray_get_range(struct net_device *dev,
-                        struct iw_request_info *info,
-                        struct iw_point *dwrq, char *extra)
+static int ray_get_range(struct net_device *dev, struct iw_request_info *info,
+                        union iwreq_data *wrqu, char *extra)
 {
        struct iw_range *range = (struct iw_range *)extra;
 
-       memset((char *)range, 0, sizeof(struct iw_range));
+       memset(range, 0, sizeof(struct iw_range));
 
        /* Set the length (very important for backward compatibility) */
-       dwrq->length = sizeof(struct iw_range);
+       wrqu->data.length = sizeof(struct iw_range);
 
        /* Set the Wireless Extension versions */
        range->we_version_compiled = WIRELESS_EXT;
@@ -1450,8 +1434,7 @@ static int ray_get_range(struct net_device *dev,
 /*
  * Wireless Private Handler : set framing mode
  */
-static int ray_set_framing(struct net_device *dev,
-                          struct iw_request_info *info,
+static int ray_set_framing(struct net_device *dev, struct iw_request_info *info,
                           union iwreq_data *wrqu, char *extra)
 {
        translate = *(extra);   /* Set framing mode */
@@ -1463,8 +1446,7 @@ static int ray_set_framing(struct net_device *dev,
 /*
  * Wireless Private Handler : get framing mode
  */
-static int ray_get_framing(struct net_device *dev,
-                          struct iw_request_info *info,
+static int ray_get_framing(struct net_device *dev, struct iw_request_info *info,
                           union iwreq_data *wrqu, char *extra)
 {
        *(extra) = translate;
@@ -1476,8 +1458,7 @@ static int ray_get_framing(struct net_device *dev,
 /*
  * Wireless Private Handler : get country
  */
-static int ray_get_country(struct net_device *dev,
-                          struct iw_request_info *info,
+static int ray_get_country(struct net_device *dev, struct iw_request_info *info,
                           union iwreq_data *wrqu, char *extra)
 {
        *(extra) = country;
@@ -1489,10 +1470,9 @@ static int ray_get_country(struct net_device *dev,
 /*
  * Commit handler : called after a bunch of SET operations
  */
-static int ray_commit(struct net_device *dev, struct iw_request_info *info,    /* NULL */
-                     void *zwrq,       /* NULL */
-                     char *extra)
-{ /* NULL */
+static int ray_commit(struct net_device *dev, struct iw_request_info *info,
+                     union iwreq_data *wrqu, char *extra)
+{
        return 0;
 }
 
@@ -1533,28 +1513,28 @@ static iw_stats *ray_get_wireless_stats(struct net_device *dev)
  */
 
 static const iw_handler ray_handler[] = {
-       [SIOCSIWCOMMIT - SIOCIWFIRST] = (iw_handler) ray_commit,
-       [SIOCGIWNAME - SIOCIWFIRST] = (iw_handler) ray_get_name,
-       [SIOCSIWFREQ - SIOCIWFIRST] = (iw_handler) ray_set_freq,
-       [SIOCGIWFREQ - SIOCIWFIRST] = (iw_handler) ray_get_freq,
-       [SIOCSIWMODE - SIOCIWFIRST] = (iw_handler) ray_set_mode,
-       [SIOCGIWMODE - SIOCIWFIRST] = (iw_handler) ray_get_mode,
-       [SIOCGIWRANGE - SIOCIWFIRST] = (iw_handler) ray_get_range,
+       IW_HANDLER(SIOCSIWCOMMIT, ray_commit),
+       IW_HANDLER(SIOCGIWNAME, ray_get_name),
+       IW_HANDLER(SIOCSIWFREQ, ray_set_freq),
+       IW_HANDLER(SIOCGIWFREQ, ray_get_freq),
+       IW_HANDLER(SIOCSIWMODE, ray_set_mode),
+       IW_HANDLER(SIOCGIWMODE, ray_get_mode),
+       IW_HANDLER(SIOCGIWRANGE, ray_get_range),
 #ifdef WIRELESS_SPY
-       [SIOCSIWSPY - SIOCIWFIRST] = (iw_handler) iw_handler_set_spy,
-       [SIOCGIWSPY - SIOCIWFIRST] = (iw_handler) iw_handler_get_spy,
-       [SIOCSIWTHRSPY - SIOCIWFIRST] = (iw_handler) iw_handler_set_thrspy,
-       [SIOCGIWTHRSPY - SIOCIWFIRST] = (iw_handler) iw_handler_get_thrspy,
+       IW_HANDLER(SIOCSIWSPY, iw_handler_set_spy),
+       IW_HANDLER(SIOCGIWSPY, iw_handler_get_spy),
+       IW_HANDLER(SIOCSIWTHRSPY, iw_handler_set_thrspy),
+       IW_HANDLER(SIOCGIWTHRSPY, iw_handler_get_thrspy),
 #endif /* WIRELESS_SPY */
-       [SIOCGIWAP - SIOCIWFIRST] = (iw_handler) ray_get_wap,
-       [SIOCSIWESSID - SIOCIWFIRST] = (iw_handler) ray_set_essid,
-       [SIOCGIWESSID - SIOCIWFIRST] = (iw_handler) ray_get_essid,
-       [SIOCSIWRATE - SIOCIWFIRST] = (iw_handler) ray_set_rate,
-       [SIOCGIWRATE - SIOCIWFIRST] = (iw_handler) ray_get_rate,
-       [SIOCSIWRTS - SIOCIWFIRST] = (iw_handler) ray_set_rts,
-       [SIOCGIWRTS - SIOCIWFIRST] = (iw_handler) ray_get_rts,
-       [SIOCSIWFRAG - SIOCIWFIRST] = (iw_handler) ray_set_frag,
-       [SIOCGIWFRAG - SIOCIWFIRST] = (iw_handler) ray_get_frag,
+       IW_HANDLER(SIOCGIWAP, ray_get_wap),
+       IW_HANDLER(SIOCSIWESSID, ray_set_essid),
+       IW_HANDLER(SIOCGIWESSID, ray_get_essid),
+       IW_HANDLER(SIOCSIWRATE, ray_set_rate),
+       IW_HANDLER(SIOCGIWRATE, ray_get_rate),
+       IW_HANDLER(SIOCSIWRTS, ray_set_rts),
+       IW_HANDLER(SIOCGIWRTS, ray_get_rts),
+       IW_HANDLER(SIOCSIWFRAG, ray_set_frag),
+       IW_HANDLER(SIOCGIWFRAG, ray_get_frag),
 };
 
 #define SIOCSIPFRAMING SIOCIWFIRSTPRIV /* Set framing mode */
@@ -1562,9 +1542,9 @@ static const iw_handler ray_handler[] = {
 #define SIOCGIPCOUNTRY SIOCIWFIRSTPRIV + 3     /* Get country code */
 
 static const iw_handler ray_private_handler[] = {
-       [0] = (iw_handler) ray_set_framing,
-       [1] = (iw_handler) ray_get_framing,
-       [3] = (iw_handler) ray_get_country,
+       [0] = ray_set_framing,
+       [1] = ray_get_framing,
+       [3] = ray_get_country,
 };
 
 static const struct iw_priv_args ray_private_args[] = {
@@ -1873,10 +1853,8 @@ static void ray_update_parm(struct net_device *dev, UCHAR objid, UCHAR *value,
 /*===========================================================================*/
 static void ray_update_multi_list(struct net_device *dev, int all)
 {
-       struct dev_mc_list *dmi, **dmip;
        int ccsindex;
        struct ccs __iomem *pccs;
-       int i = 0;
        ray_dev_t *local = netdev_priv(dev);
        struct pcmcia_device *link = local->finder;
        void __iomem *p = local->sram + HOST_TO_ECF_BASE;
@@ -1897,9 +1875,11 @@ static void ray_update_multi_list(struct net_device *dev, int all)
                writeb(0xff, &pccs->var);
                local->num_multi = 0xff;
        } else {
+               struct dev_mc_list *dmi;
+               int i = 0;
+
                /* Copy the kernel's list of MC addresses to card */
-               for (dmip = &dev->mc_list; (dmi = *dmip) != NULL;
-                    dmip = &dmi->next) {
+               netdev_for_each_mc_addr(dmi, dev) {
                        memcpy_toio(p, dmi->dmi_addr, ETH_ALEN);
                        dev_dbg(&link->dev,
                              "ray_update_multi add addr %02x%02x%02x%02x%02x%02x\n",
@@ -1952,7 +1932,7 @@ static void set_multicast_list(struct net_device *dev)
        if (dev->flags & IFF_ALLMULTI)
                ray_update_multi_list(dev, 1);
        else {
-               if (local->num_multi != dev->mc_count)
+               if (local->num_multi != netdev_mc_count(dev))
                        ray_update_multi_list(dev, 0);
        }
 } /* end set_multicast_list */
@@ -2254,7 +2234,7 @@ static void rx_data(struct net_device *dev, struct rcs __iomem *prcs,
                            (dev->mtu + RX_MAC_HEADER_LENGTH + ETH_HLEN +
                             FCS_LEN)) {
                                pr_debug(
-                                     "ray_cs invalid packet length %d received \n",
+                                     "ray_cs invalid packet length %d received\n",
                                      rx_len);
                                return;
                        }
@@ -2265,7 +2245,7 @@ static void rx_data(struct net_device *dev, struct rcs __iomem *prcs,
                            (dev->mtu + RX_MAC_HEADER_LENGTH + ETH_HLEN +
                             FCS_LEN)) {
                                pr_debug(
-                                     "ray_cs invalid packet length %d received \n",
+                                     "ray_cs invalid packet length %d received\n",
                                      rx_len);
                                return;
                        }
@@ -2773,11 +2753,11 @@ static int ray_cs_proc_show(struct seq_file *m, void *v)
                        seq_printf(m, "Hop dwell            = %d Kus\n",
                                   pfh->dwell_time[0] +
                                   256 * pfh->dwell_time[1]);
-                       seq_printf(m, "Hop set              = %d \n",
+                       seq_printf(m, "Hop set              = %d\n",
                                   pfh->hop_set);
-                       seq_printf(m, "Hop pattern          = %d \n",
+                       seq_printf(m, "Hop pattern          = %d\n",
                                   pfh->hop_pattern);
-                       seq_printf(m, "Hop index            = %d \n",
+                       seq_printf(m, "Hop index            = %d\n",
                                   pfh->hop_index);
                        p += p[1] + 2;
                } else {
@@ -2856,21 +2836,11 @@ static int build_auth_frame(ray_dev_t *local, UCHAR *dest, int auth_type)
 
 /*===========================================================================*/
 #ifdef CONFIG_PROC_FS
-static void raycs_write(const char *name, write_proc_t *w, void *data)
-{
-       struct proc_dir_entry *entry =
-           create_proc_entry(name, S_IFREG | S_IWUSR, NULL);
-       if (entry) {
-               entry->write_proc = w;
-               entry->data = data;
-       }
-}
-
-static int write_essid(struct file *file, const char __user *buffer,
-                      unsigned long count, void *data)
+static ssize_t ray_cs_essid_proc_write(struct file *file,
+               const char __user *buffer, size_t count, loff_t *pos)
 {
        static char proc_essid[33];
-       int len = count;
+       unsigned int len = count;
 
        if (len > 32)
                len = 32;
@@ -2881,8 +2851,13 @@ static int write_essid(struct file *file, const char __user *buffer,
        return count;
 }
 
-static int write_int(struct file *file, const char __user *buffer,
-                    unsigned long count, void *data)
+static const struct file_operations ray_cs_essid_proc_fops = {
+       .owner          = THIS_MODULE,
+       .write          = ray_cs_essid_proc_write,
+};
+
+static ssize_t int_proc_write(struct file *file, const char __user *buffer,
+                             size_t count, loff_t *pos)
 {
        static char proc_number[10];
        char *p;
@@ -2905,9 +2880,14 @@ static int write_int(struct file *file, const char __user *buffer,
                nr = nr * 10 + c;
                p++;
        } while (--len);
-       *(int *)data = nr;
+       *(int *)PDE(file->f_path.dentry->d_inode)->data = nr;
        return count;
 }
+
+static const struct file_operations int_proc_fops = {
+       .owner          = THIS_MODULE,
+       .write          = int_proc_write,
+};
 #endif
 
 static struct pcmcia_device_id ray_ids[] = {
@@ -2942,9 +2922,9 @@ static int __init init_ray_cs(void)
        proc_mkdir("driver/ray_cs", NULL);
 
        proc_create("driver/ray_cs/ray_cs", 0, NULL, &ray_cs_proc_fops);
-       raycs_write("driver/ray_cs/essid", write_essid, NULL);
-       raycs_write("driver/ray_cs/net_type", write_int, &net_type);
-       raycs_write("driver/ray_cs/translate", write_int, &translate);
+       proc_create("driver/ray_cs/essid", S_IWUSR, NULL, &ray_cs_essid_proc_fops);
+       proc_create_data("driver/ray_cs/net_type", S_IWUSR, NULL, &int_proc_fops, &net_type);
+       proc_create_data("driver/ray_cs/translate", S_IWUSR, NULL, &int_proc_fops, &translate);
 #endif
        if (translate != 0)
                translate = 1;