lkml.org 
[lkml]   [2009]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2.6.29-rc8] drivers/staging/otus/ioctl.c: Fix Coding Style
    Signed-off-by: Dragoslav Zaric <dragoslav.zaric.kd@gmail.com>

    --- drivers/staging/otus/ioctl.c 2009-03-16 23:10:02.000000000 +0100
    +++ drivers/staging/otus/ioctl_new.c 2009-03-25 00:19:47.000000000 +0100
    @@ -25,7 +25,7 @@
    /************************************************************************/
    #include <linux/module.h>
    #include <linux/if_arp.h>
    -#include <asm/uaccess.h>
    +#include <linux/uaccess.h>

    #include "usbdrv.h"

    @@ -34,7 +34,7 @@
    #define ZD_IOCTL_GETWPAIE (SIOCDEVPRIVATE + 3)
    #ifdef ZM_ENABLE_CENC
    #define ZM_IOCTL_CENC (SIOCDEVPRIVATE + 4)
    -#endif //ZM_ENABLE_CENC
    +#endif /* ZM_ENABLE_CENC */
    #define ZD_PARAM_ROAMING 0x0001
    #define ZD_PARAM_PRIVACY 0x0002
    #define ZD_PARAM_WPA 0x0003
    @@ -45,7 +45,7 @@

    #ifdef ZM_ENABLE_CENC
    #define P80211_PACKET_CENCFLAG 0x0001
    -#endif //ZM_ENABLE_CENC
    +#endif /* ZM_ENABLE_CENC */
    #define P80211_PACKET_SETKEY 0x0003

    #define ZD_CMD_SET_ENCRYPT_KEY 0x0001
    @@ -62,204 +62,190 @@
    #include <net/iw_handler.h>
    #endif

    -extern u16_t zfLnxGetVapId(zdev_t* dev);
    +extern u16_t zfLnxGetVapId(zdev_t *dev);

    static const u32_t channel_frequency_11A[] =
    {
    -//Even element for Channel Number, Odd for Frequency
    - 36,5180,
    - 40,5200,
    - 44,5220,
    - 48,5240,
    - 52,5260,
    - 56,5280,
    - 60,5300,
    - 64,5320,
    - 100,5500,
    - 104,5520,
    - 108,5540,
    - 112,5560,
    - 116,5580,
    - 120,5600,
    - 124,5620,
    - 128,5640,
    - 132,5660,
    - 136,5680,
    - 140,5700,
    -//
    - 184,4920,
    - 188,4940,
    - 192,4960,
    - 196,4980,
    - 8,5040,
    - 12,5060,
    - 16,5080,
    - 34,5170,
    - 38,5190,
    - 42,5210,
    - 46,5230,
    -//
    - 149,5745,
    - 153,5765,
    - 157,5785,
    - 161,5805,
    - 165,5825
    -//
    + /* Even element for Channel Number, Odd for Frequency */
    + 36, 5180,
    + 40, 5200,
    + 44, 5220,
    + 48, 5240,
    + 52, 5260,
    + 56, 5280,
    + 60, 5300,
    + 64, 5320,
    + 100, 5500,
    + 104, 5520,
    + 108, 5540,
    + 112, 5560,
    + 116, 5580,
    + 120, 5600,
    + 124, 5620,
    + 128, 5640,
    + 132, 5660,
    + 136, 5680,
    + 140, 5700,
    + /**/
    + 184, 4920,
    + 188, 4940,
    + 192, 4960,
    + 196, 4980,
    + 8, 5040,
    + 12, 5060,
    + 16, 5080,
    + 34, 5170,
    + 38, 5190,
    + 42, 5210,
    + 46, 5230,
    + /**/
    + 149, 5745,
    + 153, 5765,
    + 157, 5785,
    + 161, 5805,
    + 165, 5825
    + /**/
    };

    int usbdrv_freq2chan(u32_t freq)
    {
    - /* 2.4G Hz */
    - if (freq > 2400 && freq < 3000)
    - {
    - return ((freq-2412)/5) + 1;
    - }
    - else
    - {
    - u16_t ii;
    - u16_t num_chan = sizeof(channel_frequency_11A)/sizeof(u32_t);
    -
    - for(ii = 1; ii < num_chan; ii += 2)
    - {
    - if (channel_frequency_11A[ii] == freq)
    - return channel_frequency_11A[ii-1];
    - }
    - }
    + /* 2.4G Hz */
    + if (freq > 2400 && freq < 3000) {
    + return ((freq-2412)/5) + 1;
    + } else {
    + u16_t ii;
    + u16_t num_chan = sizeof(channel_frequency_11A)/sizeof(u32_t);
    +
    + for (ii = 1; ii < num_chan; ii += 2) {
    + if (channel_frequency_11A[ii] == freq)
    + return channel_frequency_11A[ii-1];
    + }
    + }

    - return 0;
    + return 0;
    }

    int usbdrv_chan2freq(int chan)
    {
    - int freq;
    + int freq;
    +
    + /* If channel number is out of range */
    + if (chan > 165 || chan <= 0)
    + return -1;
    +
    + /* 2.4G band */
    + if (chan >= 1 && chan <= 13) {
    + freq = (2412 + (chan - 1) * 5);
    + return freq;
    + } else if (chan >= 36 && chan <= 165) {
    + u16_t ii;
    + u16_t num_chan = sizeof(channel_frequency_11A)/sizeof(u32_t);
    +
    + for (ii = 0; ii < num_chan; ii += 2) {
    + if (channel_frequency_11A[ii] == chan)
    + return channel_frequency_11A[ii+1];
    + }

    - /* If channel number is out of range */
    - if (chan > 165 || chan <= 0)
    - return -1;
    -
    - /* 2.4G band */
    - if (chan >= 1 && chan <= 13)
    - {
    - freq = (2412 + (chan - 1) * 5);
    - return freq;
    - }
    - else if (chan >= 36 && chan <= 165)
    - {
    - u16_t ii;
    - u16_t num_chan = sizeof(channel_frequency_11A)/sizeof(u32_t);
    -
    - for(ii = 0; ii < num_chan; ii += 2)
    - {
    - if (channel_frequency_11A[ii] == chan)
    - return channel_frequency_11A[ii+1];
    - }
    -
    - /* Can't find desired frequency */
    - if (ii == num_chan)
    - return -1;
    - }
    + /* Can't find desired frequency */
    + if (ii == num_chan)
    + return -1;
    + }

    - /* Can't find deisred frequency */
    - return -1;
    + /* Can't find deisred frequency */
    + return -1;
    }

    int usbdrv_ioctl_setessid(struct net_device *dev, struct iw_point *erq)
    {
    -#ifdef ZM_HOSTAPD_SUPPORT
    - //struct usbdrv_private *macp = dev->ml_priv;
    - char essidbuf[IW_ESSID_MAX_SIZE+1];
    - int i;
    + #ifdef ZM_HOSTAPD_SUPPORT
    + /* struct usbdrv_private *macp = dev->ml_priv; */
    + char essidbuf[IW_ESSID_MAX_SIZE+1];
    + int i;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;

    - memset(essidbuf, 0, sizeof(essidbuf));
    + memset(essidbuf, 0, sizeof(essidbuf));

    - printk(KERN_ERR "usbdrv_ioctl_setessid\n");
    + printk(KERN_ERR "usbdrv_ioctl_setessid\n");

    - //printk("ssidlen=%d\n", erq->length); //for any, it is 1.
    - if (erq->flags) {
    - if (erq->length > (IW_ESSID_MAX_SIZE+1))
    - return -E2BIG;
    + /* printk("ssidlen=%d\n", erq->length); //for any, it is 1. */
    + if (erq->flags) {
    + if (erq->length > (IW_ESSID_MAX_SIZE+1))
    + return -E2BIG;

    - if (copy_from_user(essidbuf, erq->pointer, erq->length))
    - return -EFAULT;
    - }
    + if (copy_from_user(essidbuf, erq->pointer, erq->length))
    + return -EFAULT;
    + }

    - //zd_DisasocAll(2);
    - //wait_ms(100);
    + /* zd_DisasocAll(2); */
    + /* wait_ms(100); */

    - printk(KERN_ERR "essidbuf: ");
    + printk(KERN_ERR "essidbuf: ");

    - for(i = 0; i < erq->length; i++)
    - {
    - printk(KERN_ERR "%02x ", essidbuf[i]);
    - }
    + for (i = 0; i < erq->length; i++)
    + printk(KERN_ERR "%02x ", essidbuf[i]);

    - printk(KERN_ERR "\n");
    + printk(KERN_ERR "\n");

    - essidbuf[erq->length] = '\0';
    - //memcpy(macp->wd.ws.ssid, essidbuf, erq->length);
    - //macp->wd.ws.ssidLen = strlen(essidbuf)+2;
    - //macp->wd.ws.ssid[1] = strlen(essidbuf); // Update ssid length
    + essidbuf[erq->length] = '\0';
    + /* memcpy(macp->wd.ws.ssid, essidbuf, erq->length); */
    + /* macp->wd.ws.ssidLen = strlen(essidbuf)+2; */
    + /* macp->wd.ws.ssid[1] = strlen(essidbuf); Update ssid length */

    - zfiWlanSetSSID(dev, essidbuf, erq->length);
    -#if 0
    - printk(KERN_ERR "macp->wd.ws.ssid: ");
    + zfiWlanSetSSID(dev, essidbuf, erq->length);
    + #if 0
    + printk(KERN_ERR "macp->wd.ws.ssid: ");

    - for(i = 0; i < macp->wd.ws.ssidLen; i++)
    - {
    - printk(KERN_ERR "%02x ", macp->wd.ws.ssid[i]);
    - }
    + for (i = 0; i < macp->wd.ws.ssidLen; i++)
    + printk(KERN_ERR "%02x ", macp->wd.ws.ssid[i]);

    - printk(KERN_ERR "\n");
    -#endif
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    + printk(KERN_ERR "\n");
    + #endif

    -#endif
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    +
    + #endif

    - return 0;
    + return 0;
    }

    int usbdrv_ioctl_getessid(struct net_device *dev, struct iw_point *erq)
    {
    - //struct usbdrv_private *macp = dev->ml_priv;
    - u8_t essidbuf[IW_ESSID_MAX_SIZE+1];
    - u8_t len;
    - u8_t i;
    + /* struct usbdrv_private *macp = dev->ml_priv; */
    + u8_t essidbuf[IW_ESSID_MAX_SIZE+1];
    + u8_t len;
    + u8_t i;


    - //len = macp->wd.ws.ssidLen;
    - //memcpy(essidbuf, macp->wd.ws.ssid, macp->wd.ws.ssidLen);
    - zfiWlanQuerySSID(dev, essidbuf, &len);
    + /* len = macp->wd.ws.ssidLen; */
    + /* memcpy(essidbuf, macp->wd.ws.ssid, macp->wd.ws.ssidLen); */
    + zfiWlanQuerySSID(dev, essidbuf, &len);

    - essidbuf[len] = 0;
    + essidbuf[len] = 0;

    - printk(KERN_ERR "ESSID: ");
    + printk(KERN_ERR "ESSID: ");

    - for(i = 0; i < len; i++)
    - {
    - printk(KERN_ERR "%c", essidbuf[i]);
    - }
    + for (i = 0; i < len; i++)
    + printk(KERN_ERR "%c", essidbuf[i]);

    - printk(KERN_ERR "\n");
    + printk(KERN_ERR "\n");

    - erq->flags= 1;
    - erq->length = strlen(essidbuf) + 1;
    + erq->flags = 1;
    + erq->length = strlen(essidbuf) + 1;

    - if (erq->pointer)
    - if (copy_to_user(erq->pointer, essidbuf, erq->length))
    - return -EFAULT;
    + if (erq->pointer) {
    + if (copy_to_user(erq->pointer, essidbuf, erq->length))
    + return -EFAULT;
    + }

    - return 0;
    + return 0;
    }

    -
    int usbdrv_ioctl_setrts(struct net_device *dev, struct iw_param *rrq)
    {
    -
    - return 0;
    + return 0;
    }

    #if WIRELESS_EXT > 14
    @@ -267,462 +253,418 @@ int usbdrv_ioctl_setrts(struct net_devic
    * Encode a WPA or RSN information element as a custom
    * element using the hostap format.
    */
    -u32 encode_ie(void *buf, u32 bufsize, const u8 *ie, u32 ielen, const u8 *leader, u32 leader_len)
    +u32 encode_ie(void *buf, u32 bufsize, const u8 *ie, u32 ielen,
    + const u8 *leader, u32 leader_len)
    {
    - u8 *p;
    - u32 i;
    + u8 *p;
    + u32 i;

    - if (bufsize < leader_len)
    - return 0;
    - p = buf;
    - memcpy(p, leader, leader_len);
    - bufsize -= leader_len;
    - p += leader_len;
    - for (i = 0; i < ielen && bufsize > 2; i++)
    - p += sprintf(p, "%02x", ie[i]);
    - return (i == ielen ? p - (u8 *)buf : 0);
    + if (bufsize < leader_len)
    + return 0;
    + p = buf;
    + memcpy(p, leader, leader_len);
    + bufsize -= leader_len;
    + p += leader_len;
    + for (i = 0; i < ielen && bufsize > 2; i++)
    + p += sprintf(p, "%02x", ie[i]);
    + return (i == ielen ? p - (u8 *)buf:0);
    }
    -#endif /* WIRELESS_EXT > 14 */
    +#endif /* WIRELESS_EXT > 14 */

    -/*------------------------------------------------------------------*/
    /*
    * Translate scan data returned from the card to a card independent
    * format that the Wireless Tools will understand
    */
    char *usbdrv_translate_scan(struct net_device *dev,
    struct iw_request_info *info, char *current_ev,
    - char *end_buf, struct zsBssInfo *list)
    + char *end_buf, struct zsBssInfo *list)
    {
    - struct iw_event iwe; /* Temporary buffer */
    - u16_t capabilities;
    - char *current_val; /* For rates */
    - char *last_ev;
    - int i;
    -#if WIRELESS_EXT > 14
    - char buf[64*2 + 30];
    -#endif
    + struct iw_event iwe; /* Temporary buffer */
    + u16_t capabilities;
    + char *current_val; /* For rates */
    + char *last_ev;
    + int i;
    + #if WIRELESS_EXT > 14
    + char buf[64*2 + 30];
    + #endif
    +
    + last_ev = current_ev;
    +
    + /* First entry *MUST* be the AP MAC address */
    + iwe.cmd = SIOCGIWAP;
    + iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
    + memcpy(iwe.u.ap_addr.sa_data, list->bssid, ETH_ALEN);
    + current_ev = iwe_stream_add_event(info, current_ev,
    + end_buf, &iwe, IW_EV_ADDR_LEN);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Other entries will be displayed in the order we give them */
    +
    + /* Add the ESSID */
    + iwe.u.data.length = list->ssid[1];
    + if (iwe.u.data.length > 32)
    + iwe.u.data.length = 32;
    + iwe.cmd = SIOCGIWESSID;
    + iwe.u.data.flags = 1;
    + current_ev = iwe_stream_add_point(info, current_ev,
    + end_buf, &iwe, &list->ssid[2]);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Add mode */
    + iwe.cmd = SIOCGIWMODE;
    + capabilities = (list->capability[1] << 8) + list->capability[0];
    + if (capabilities & (0x01 | 0x02)) {
    + if (capabilities & 0x01)
    + iwe.u.mode = IW_MODE_MASTER;
    + else
    + iwe.u.mode = IW_MODE_ADHOC;
    + current_ev = iwe_stream_add_event(info, current_ev,
    + end_buf, &iwe, IW_EV_UINT_LEN);
    + }

    - last_ev = current_ev;
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Add frequency */
    + iwe.cmd = SIOCGIWFREQ;
    + iwe.u.freq.m = list->channel;
    + /* Channel frequency in KHz */
    + if (iwe.u.freq.m > 14) {
    + if ((184 <= iwe.u.freq.m) && (iwe.u.freq.m <= 196))
    + iwe.u.freq.m = 4000 + iwe.u.freq.m * 5;
    + else
    + iwe.u.freq.m = 5000 + iwe.u.freq.m * 5;
    + } else {
    + if (iwe.u.freq.m == 14)
    + iwe.u.freq.m = 2484;
    + else
    + iwe.u.freq.m = 2412 + (iwe.u.freq.m - 1) * 5;
    + }
    + iwe.u.freq.e = 6;
    + current_ev = iwe_stream_add_event(info, current_ev,
    + end_buf, &iwe, IW_EV_FREQ_LEN);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Add quality statistics */
    + iwe.cmd = IWEVQUAL;
    + #if WIRELESS_EXT > 18
    + iwe.u.qual.updated = IW_QUAL_QUAL_UPDATED | IW_QUAL_LEVEL_UPDATED
    + | IW_QUAL_NOISE_UPDATED;
    + #endif
    + iwe.u.qual.level = list->signalStrength;
    + iwe.u.qual.noise = 0;
    + iwe.u.qual.qual = list->signalQuality;
    + current_ev = iwe_stream_add_event(info, current_ev,
    + end_buf, &iwe, IW_EV_QUAL_LEN);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Add encryption capability */
    +
    + iwe.cmd = SIOCGIWENCODE;
    + if (capabilities & 0x10)
    + iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
    + else
    + iwe.u.data.flags = IW_ENCODE_DISABLED;
    +
    + iwe.u.data.length = 0;
    + current_ev = iwe_stream_add_point(info, current_ev,
    + end_buf, &iwe, list->ssid);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + /* Rate : stuffing multiple values in a single event require a bit
    + * more of magic
    + */
    + current_val = current_ev + IW_EV_LCP_LEN;
    +
    + iwe.cmd = SIOCGIWRATE;
    + /* Those two flags are ignored... */
    + iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
    +
    + for (i = 0 ; i < list->supportedRates[1] ; i++) {
    + /* Bit rate given in 500 kb/s units (+ 0x80) */
    + iwe.u.bitrate.value = ((list->supportedRates[i+2] & 0x7f)
    + * 500000);
    + /* Add new value to event */
    + current_val = iwe_stream_add_value(info, current_ev,
    + current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_val)
    + return end_buf;

    -/* First entry *MUST* be the AP MAC address */
    - iwe.cmd = SIOCGIWAP;
    - iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
    - memcpy(iwe.u.ap_addr.sa_data, list->bssid, ETH_ALEN);
    - current_ev = iwe_stream_add_event(
    - info,
    - current_ev,
    - end_buf, &iwe, IW_EV_ADDR_LEN);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Other entries will be displayed in the order we give them */
    -
    -/* Add the ESSID */
    - iwe.u.data.length = list->ssid[1];
    - if(iwe.u.data.length > 32)
    - iwe.u.data.length = 32;
    - iwe.cmd = SIOCGIWESSID;
    - iwe.u.data.flags = 1;
    - current_ev = iwe_stream_add_point(
    - info,
    - current_ev, end_buf, &iwe, &list->ssid[2]);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Add mode */
    - iwe.cmd = SIOCGIWMODE;
    - capabilities = (list->capability[1] << 8) + list->capability[0];
    - if(capabilities & (0x01 | 0x02))
    - {
    - if(capabilities & 0x01)
    - iwe.u.mode = IW_MODE_MASTER;
    - else
    - iwe.u.mode = IW_MODE_ADHOC;
    - current_ev = iwe_stream_add_event(
    - info,
    - current_ev, end_buf, &iwe, IW_EV_UINT_LEN);
    - }
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Add frequency */
    - iwe.cmd = SIOCGIWFREQ;
    - iwe.u.freq.m = list->channel;
    -/* Channel frequency in KHz */
    - if (iwe.u.freq.m > 14)
    - {
    - if ((184 <= iwe.u.freq.m) && (iwe.u.freq.m<=196))
    - iwe.u.freq.m = 4000 + iwe.u.freq.m * 5;
    - else
    - iwe.u.freq.m = 5000 + iwe.u.freq.m * 5;
    - }
    - else
    - {
    - if (iwe.u.freq.m == 14)
    - iwe.u.freq.m = 2484;
    - else
    - iwe.u.freq.m = 2412 + (iwe.u.freq.m - 1) * 5;
    - }
    - iwe.u.freq.e = 6;
    - current_ev = iwe_stream_add_event(
    - info,
    - current_ev, end_buf, &iwe, IW_EV_FREQ_LEN);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Add quality statistics */
    - iwe.cmd = IWEVQUAL;
    -#if WIRELESS_EXT > 18
    - iwe.u.qual.updated = IW_QUAL_QUAL_UPDATED | IW_QUAL_LEVEL_UPDATED
    - |IW_QUAL_NOISE_UPDATED;
    -#endif
    - iwe.u.qual.level = list->signalStrength;
    - iwe.u.qual.noise = 0;
    - iwe.u.qual.qual = list->signalQuality;
    - current_ev = iwe_stream_add_event(
    - info,
    - current_ev, end_buf, &iwe, IW_EV_QUAL_LEN);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Add encryption capability */
    -
    - iwe.cmd = SIOCGIWENCODE;
    - if(capabilities & 0x10)
    - iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
    - else
    - iwe.u.data.flags = IW_ENCODE_DISABLED;
    -
    - iwe.u.data.length = 0;
    - current_ev = iwe_stream_add_point(
    - info,
    - current_ev, end_buf, &iwe, list->ssid);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    -/* Rate : stuffing multiple values in a single event require a bit
    - * more of magic */
    - current_val = current_ev + IW_EV_LCP_LEN;
    -
    - iwe.cmd = SIOCGIWRATE;
    -/* Those two flags are ignored... */
    - iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
    -
    - for(i = 0 ; i < list->supportedRates[1] ; i++)
    - {
    -/* Bit rate given in 500 kb/s units (+ 0x80) */
    - iwe.u.bitrate.value = ((list->supportedRates[i+2] & 0x7f) * 500000);
    -/* Add new value to event */
    - current_val = iwe_stream_add_value(
    - info,
    - current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_val)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_val;
    - }
    -
    - for (i = 0 ; i < list->extSupportedRates[1] ; i++)
    - {
    -/* Bit rate given in 500 kb/s units (+ 0x80) */
    - iwe.u.bitrate.value = ((list->extSupportedRates[i+2] & 0x7f) * 500000);
    -/* Add new value to event */
    - current_val = iwe_stream_add_value(
    - info,
    - current_ev, current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_val)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    - }
    -
    -/* Check if we added any event */
    - if((current_val - current_ev) > IW_EV_LCP_LEN)
    - current_ev = current_val;
    -#if WIRELESS_EXT > 14
    -#define IEEE80211_ELEMID_RSN 0x30
    - memset(&iwe, 0, sizeof(iwe));
    - iwe.cmd = IWEVCUSTOM;
    - snprintf(buf, sizeof(buf), "bcn_int=%d", (list->beaconInterval[1] << 8) + list->beaconInterval[0]);
    - iwe.u.data.length = strlen(buf);
    - current_ev = iwe_stream_add_point(
    - info,
    - current_ev, end_buf, &iwe, buf);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    -
    - if (list->wpaIe[1] != 0)
    - {
    - static const char rsn_leader[] = "rsn_ie=";
    - static const char wpa_leader[] = "wpa_ie=";
    -
    - memset(&iwe, 0, sizeof(iwe));
    - iwe.cmd = IWEVCUSTOM;
    - if (list->wpaIe[0] == IEEE80211_ELEMID_RSN)
    - iwe.u.data.length = encode_ie(buf, sizeof(buf),
    - list->wpaIe, list->wpaIe[1]+2,
    - rsn_leader, sizeof(rsn_leader)-1);
    - else
    - iwe.u.data.length = encode_ie(buf, sizeof(buf),
    - list->wpaIe, list->wpaIe[1]+2,
    - wpa_leader, sizeof(wpa_leader)-1);
    -
    - if (iwe.u.data.length != 0)
    - current_ev = iwe_stream_add_point(
    - info,
    - current_ev, end_buf, &iwe, buf);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    - }
    - if (list->rsnIe[1] != 0)
    - {
    - static const char rsn_leader[] = "rsn_ie=";
    - memset(&iwe, 0, sizeof(iwe));
    - iwe.cmd = IWEVCUSTOM;
    -
    - if (list->rsnIe[0] == IEEE80211_ELEMID_RSN)
    - {
    - iwe.u.data.length = encode_ie(buf, sizeof(buf),
    - list->rsnIe, list->rsnIe[1]+2,
    - rsn_leader, sizeof(rsn_leader)-1);
    - if (iwe.u.data.length != 0)
    - current_ev = iwe_stream_add_point(
    - info,
    - current_ev, end_buf, &iwe, buf);
    -
    - /* Ran out of buffer */
    - if (last_ev == current_ev)
    - {
    - return end_buf;
    - }
    -
    - last_ev = current_ev;
    - }
    - }
    -#endif
    -/* The other data in the scan result are not really
    - * interesting, so for now drop it */
    - return current_ev;
    + last_ev = current_val;
    + }
    +
    + for (i = 0 ; i < list->extSupportedRates[1] ; i++) {
    + /* Bit rate given in 500 kb/s units (+ 0x80) */
    + iwe.u.bitrate.value = ((list->extSupportedRates[i+2] & 0x7f)
    + * 500000);
    + /* Add new value to event */
    + current_val = iwe_stream_add_value(info, current_ev,
    + current_val, end_buf, &iwe, IW_EV_PARAM_LEN);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_val)
    + return end_buf;
    +
    + last_ev = current_ev;
    + }
    +
    + /* Check if we added any event */
    + if ((current_val - current_ev) > IW_EV_LCP_LEN)
    + current_ev = current_val;
    + #if WIRELESS_EXT > 14
    + #define IEEE80211_ELEMID_RSN 0x30
    + memset(&iwe, 0, sizeof(iwe));
    + iwe.cmd = IWEVCUSTOM;
    + snprintf(buf, sizeof(buf), "bcn_int=%d", (list->beaconInterval[1] << 8)
    + + list->beaconInterval[0]);
    + iwe.u.data.length = strlen(buf);
    + current_ev = iwe_stream_add_point(info, current_ev,
    + end_buf, &iwe, buf);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    +
    + if (list->wpaIe[1] != 0) {
    + static const char rsn_leader[] = "rsn_ie=";
    + static const char wpa_leader[] = "wpa_ie=";
    +
    + memset(&iwe, 0, sizeof(iwe));
    + iwe.cmd = IWEVCUSTOM;
    + if (list->wpaIe[0] == IEEE80211_ELEMID_RSN)
    + iwe.u.data.length = encode_ie(buf, sizeof(buf),
    + list->wpaIe, list->wpaIe[1]+2,
    + rsn_leader, sizeof(rsn_leader)-1);
    + else
    + iwe.u.data.length = encode_ie(buf, sizeof(buf),
    + list->wpaIe, list->wpaIe[1]+2,
    + wpa_leader, sizeof(wpa_leader)-1);
    +
    + if (iwe.u.data.length != 0)
    + current_ev = iwe_stream_add_point(info, current_ev,
    + end_buf, &iwe, buf);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    + }
    +
    + if (list->rsnIe[1] != 0) {
    + static const char rsn_leader[] = "rsn_ie=";
    + memset(&iwe, 0, sizeof(iwe));
    + iwe.cmd = IWEVCUSTOM;
    +
    + if (list->rsnIe[0] == IEEE80211_ELEMID_RSN) {
    + iwe.u.data.length = encode_ie(buf, sizeof(buf),
    + list->rsnIe, list->rsnIe[1]+2,
    + rsn_leader, sizeof(rsn_leader)-1);
    + if (iwe.u.data.length != 0)
    + current_ev = iwe_stream_add_point(info,
    + current_ev, end_buf, &iwe, buf);
    +
    + /* Ran out of buffer */
    + if (last_ev == current_ev)
    + return end_buf;
    +
    + last_ev = current_ev;
    + }
    + }
    + #endif
    + /* The other data in the scan result are not really
    + * interesting, so for now drop it
    + */
    + return current_ev;
    }

    int usbdrvwext_giwname(struct net_device *dev,
    - struct iw_request_info *info,
    - union iwreq_data *wrq, char *extra)
    + struct iw_request_info *info,
    + union iwreq_data *wrq, char *extra)
    {
    - //struct usbdrv_private *macp = dev->ml_priv;
    + /* struct usbdrv_private *macp = dev->ml_priv; */

    - strcpy(wrq->name, "IEEE 802.11-MIMO");
    + strcpy(wrq->name, "IEEE 802.11-MIMO");

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwfreq(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_freq *freq, char *extra)
    + struct iw_request_info *info,
    + struct iw_freq *freq, char *extra)
    {
    - u32_t FreqKHz;
    - struct usbdrv_private *macp = dev->ml_priv;
    + u32_t FreqKHz;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;

    - if (freq->e > 1)
    - return -EINVAL;
    -
    - if (freq->e == 1)
    - {
    - FreqKHz = (freq->m / 100000);
    -
    - if (FreqKHz > 4000000)
    - {
    - if (FreqKHz > 5825000)
    - FreqKHz = 5825000;
    - else if (FreqKHz < 4920000)
    - FreqKHz = 4920000;
    - else if (FreqKHz < 5000000)
    - FreqKHz = (((FreqKHz - 4000000) / 5000) * 5000) + 4000000;
    - else
    - FreqKHz = (((FreqKHz - 5000000) / 5000) * 5000) + 5000000;
    - }
    - else
    - {
    - if (FreqKHz > 2484000)
    - FreqKHz = 2484000;
    - else if (FreqKHz < 2412000)
    - FreqKHz = 2412000;
    - else
    - FreqKHz = (((FreqKHz - 2412000) / 5000) * 5000) + 2412000;
    - }
    -
    - }
    - else
    - {
    - FreqKHz = usbdrv_chan2freq(freq->m);
    -
    - if (FreqKHz != -1)
    - FreqKHz *= 1000;
    - else
    - FreqKHz = 2412000;
    - }
    -
    - //printk("freq->m: %d, freq->e: %d\n", freq->m, freq->e);
    - //printk("FreqKHz: %d\n", FreqKHz);
    -
    - if (macp->DeviceOpened == 1)
    - {
    - zfiWlanSetFrequency(dev, FreqKHz, 0); // Immediate
    - //u8_t wpaieLen,wpaie[50];
    - //zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen);
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - //if (wpaieLen > 2)
    - // zfiWlanSetWpaIe(dev, wpaie, wpaieLen);
    - }
    + if (freq->e > 1)
    + return -EINVAL;

    - return 0;
    + if (freq->e == 1) {
    + FreqKHz = (freq->m / 100000);
    +
    + if (FreqKHz > 4000000) {
    + if (FreqKHz > 5825000)
    + FreqKHz = 5825000;
    + else if (FreqKHz < 4920000)
    + FreqKHz = 4920000;
    + else if (FreqKHz < 5000000)
    + FreqKHz = (((FreqKHz - 4000000) / 5000) * 5000)
    + + 4000000;
    + else
    + FreqKHz = (((FreqKHz - 5000000) / 5000) * 5000)
    + + 5000000;
    + } else {
    + if (FreqKHz > 2484000)
    + FreqKHz = 2484000;
    + else if (FreqKHz < 2412000)
    + FreqKHz = 2412000;
    + else
    + FreqKHz = (((FreqKHz - 2412000) / 5000) * 5000)
    + + 2412000;
    + }
    + } else {
    + FreqKHz = usbdrv_chan2freq(freq->m);
    +
    + if (FreqKHz != -1)
    + FreqKHz *= 1000;
    + else
    + FreqKHz = 2412000;
    + }
    +
    + /* printk("freq->m: %d, freq->e: %d\n", freq->m, freq->e); */
    + /* printk("FreqKHz: %d\n", FreqKHz); */
    +
    + if (macp->DeviceOpened == 1) {
    + zfiWlanSetFrequency(dev, FreqKHz, 0); /* Immediate */
    + /* u8_t wpaieLen,wpaie[50]; */
    + /* zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen); */
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + /* if (wpaieLen > 2) */
    + /* zfiWlanSetWpaIe(dev, wpaie, wpaieLen); */
    + }
    +
    + return 0;
    }

    int usbdrvwext_giwfreq(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_freq *freq, char *extra)
    + struct iw_request_info *info,
    + struct iw_freq *freq, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - freq->m = zfiWlanQueryFrequency(dev);
    - freq->e = 3;
    + freq->m = zfiWlanQueryFrequency(dev);
    + freq->e = 3;

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwmode(struct net_device *dev,
    - struct iw_request_info *info,
    - union iwreq_data *wrq, char *extra)
    + struct iw_request_info *info,
    + union iwreq_data *wrq, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u8_t WlanMode;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u8_t WlanMode;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;
    +
    + if (macp->DeviceOpened != 1)
    + return 0;
    +
    + switch (wrq->mode) {
    + case IW_MODE_MASTER:
    + WlanMode = ZM_MODE_AP;
    + break;
    + case IW_MODE_INFRA:
    + WlanMode = ZM_MODE_INFRASTRUCTURE;
    + break;
    + case IW_MODE_ADHOC:
    + WlanMode = ZM_MODE_IBSS;
    + break;
    + default:
    + WlanMode = ZM_MODE_IBSS;
    + break;
    + }

    - if (macp->DeviceOpened != 1)
    - return 0;
    -
    - switch(wrq->mode)
    - {
    - case IW_MODE_MASTER:
    - WlanMode = ZM_MODE_AP;
    - break;
    - case IW_MODE_INFRA:
    - WlanMode = ZM_MODE_INFRASTRUCTURE;
    - break;
    - case IW_MODE_ADHOC:
    - WlanMode = ZM_MODE_IBSS;
    - break;
    - default:
    - WlanMode = ZM_MODE_IBSS;
    - break;
    - }
    -
    - zfiWlanSetWlanMode(dev,WlanMode);
    - zfiWlanDisable(dev, 1);
    - zfiWlanEnable(dev);
    + zfiWlanSetWlanMode(dev, WlanMode);
    + zfiWlanDisable(dev, 1);
    + zfiWlanEnable(dev);

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwmode(struct net_device *dev,
    - struct iw_request_info *info,
    - __u32 *mode, char *extra)
    + struct iw_request_info *info,
    + __u32 *mode, char *extra)
    {
    - unsigned long irqFlag;
    - struct usbdrv_private *macp = dev->ml_priv;
    + unsigned long irqFlag;
    + struct usbdrv_private *macp = dev->ml_priv;
    +
    + if (!netif_running(dev))
    + return -EINVAL;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - if (macp->DeviceOpened != 1)
    - return 0;
    -
    - spin_lock_irqsave(&macp->cs_lock, irqFlag);
    -
    - switch(zfiWlanQueryWlanMode(dev))
    - {
    - case ZM_MODE_AP:
    - *mode = IW_MODE_MASTER;
    - break;
    - case ZM_MODE_INFRASTRUCTURE:
    - *mode = IW_MODE_INFRA;
    - break;
    - case ZM_MODE_IBSS:
    - *mode = IW_MODE_ADHOC;
    - break;
    - default:
    - *mode = IW_MODE_ADHOC;
    - break;
    - }
    + spin_lock_irqsave(&macp->cs_lock, irqFlag);
    +
    + switch (zfiWlanQueryWlanMode(dev)) {
    + case ZM_MODE_AP:
    + *mode = IW_MODE_MASTER;
    + break;
    + case ZM_MODE_INFRASTRUCTURE:
    + *mode = IW_MODE_INFRA;
    + break;
    + case ZM_MODE_IBSS:
    + *mode = IW_MODE_ADHOC;
    + break;
    + default:
    + *mode = IW_MODE_ADHOC;
    + break;
    + }

    - spin_unlock_irqrestore(&macp->cs_lock, irqFlag);
    + spin_unlock_irqrestore(&macp->cs_lock, irqFlag);

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwsens(struct net_device *dev,
    @@ -743,338 +685,341 @@ int usbdrvwext_giwsens(struct net_device
    }

    int usbdrvwext_giwrange(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *data, char *extra)
    + struct iw_request_info *info,
    + struct iw_point *data, char *extra)
    {
    - struct iw_range *range = (struct iw_range *) extra;
    - int i, val;
    - //int num_band_a;
    - u16_t channels[60];
    - u16_t channel_num;
    -
    - if(!netif_running(dev))
    - return -EINVAL;
    -
    -#if WIRELESS_EXT > 9
    - range->txpower_capa = IW_TXPOW_DBM;
    -// XXX what about min/max_pmp, min/max_pmt, etc.
    -#endif
    + struct iw_range *range = (struct iw_range *) extra;
    + int i, val;
    + /* int num_band_a; */
    + u16_t channels[60];
    + u16_t channel_num;
    +
    + if (!netif_running(dev))
    + return -EINVAL;
    +
    + #if WIRELESS_EXT > 9
    + range->txpower_capa = IW_TXPOW_DBM;
    + /* XXX what about min/max_pmp, min/max_pmt, etc. */
    + #endif
    +
    + #if WIRELESS_EXT > 10
    + range->we_version_compiled = WIRELESS_EXT;
    + range->we_version_source = 13;
    +
    + range->retry_capa = IW_RETRY_LIMIT;
    + range->retry_flags = IW_RETRY_LIMIT;
    + range->min_retry = 0;
    + range->max_retry = 255;
    + #endif /* WIRELESS_EXT > 10 */
    +
    + channel_num = zfiWlanQueryAllowChannels(dev, channels);
    +
    + /* Gurantee reported channel numbers is less
    + * or equal to IW_MAX_FREQUENCIES
    + */
    + if (channel_num > IW_MAX_FREQUENCIES)
    + channel_num = IW_MAX_FREQUENCIES;
    +
    + val = 0;
    +
    + for (i = 0; i < channel_num; i++) {
    + range->freq[val].i = usbdrv_freq2chan(channels[i]);
    + range->freq[val].m = channels[i];
    + range->freq[val].e = 6;
    + val++;
    + }

    -#if WIRELESS_EXT > 10
    - range->we_version_compiled = WIRELESS_EXT;
    - range->we_version_source = 13;
    -
    - range->retry_capa = IW_RETRY_LIMIT;
    - range->retry_flags = IW_RETRY_LIMIT;
    - range->min_retry = 0;
    - range->max_retry = 255;
    -#endif /* WIRELESS_EXT > 10 */
    -
    - channel_num = zfiWlanQueryAllowChannels(dev, channels);
    -
    - /* Gurantee reported channel numbers is less or equal to IW_MAX_FREQUENCIES */
    - if (channel_num > IW_MAX_FREQUENCIES)
    - channel_num = IW_MAX_FREQUENCIES;
    -
    - val = 0;
    -
    - for (i = 0; i < channel_num; i++)
    - {
    - range->freq[val].i = usbdrv_freq2chan(channels[i]);
    - range->freq[val].m = channels[i];
    - range->freq[val].e = 6;
    - val++;
    - }
    -
    - range->num_channels = channel_num;
    - range->num_frequency = channel_num;
    -
    -#if 0
    - range->num_channels = 14; // Only 2.4G
    -
    -/* XXX need to filter against the regulatory domain &| active set */
    - val = 0;
    - for (i = 1; i <= 14; i++) // B,G Bands
    - {
    - range->freq[val].i = i;
    - if (i == 14)
    - range->freq[val].m = 2484000;
    - else
    - range->freq[val].m = (2412+(i-1)*5)*1000;
    - range->freq[val].e = 3;
    - val++;
    - }
    -
    - num_band_a = (IW_MAX_FREQUENCIES - val);
    -
    - for (i = 0; i < num_band_a; i++) // A Bands
    - {
    - range->freq[val].i = channel_frequency_11A[2 * i];
    - range->freq[val].m = channel_frequency_11A[2 * i + 1] * 1000;
    - range->freq[val].e = 3;
    - val++;
    - }
    - // MIMO Rate Not Defined Now
    - //For 802.11a, there are too more frequency. We can't return them all
    - range->num_frequency = val;
    -#endif
    + range->num_channels = channel_num;
    + range->num_frequency = channel_num;

    -/* Max of /proc/net/wireless */
    - range->max_qual.qual = 100; //?? //92;
    - range->max_qual.level = 154; //??
    - range->max_qual.noise = 154; //??
    - range->sensitivity = 3; //??
    -
    -// XXX these need to be nsd-specific!
    - range->min_rts = 0;
    - range->max_rts = 2347;
    - range->min_frag = 256;
    - range->max_frag = 2346;
    - range->max_encoding_tokens = 4/*NUM_WEPKEYS*/; //??
    - range->num_encoding_sizes = 2; //??
    -
    - range->encoding_size[0] = 5; //?? //WEP Key Encoding Size
    - range->encoding_size[1] = 13;//??
    -
    -// XXX what about num_bitrates/throughput?
    - range->num_bitrates = 0; //??
    + #if 0
    + range->num_channels = 14; /* Only 2.4G */

    -/* estimated max throughput */
    -// XXX need to cap it if we're running at ~2Mbps..
    + /* XXX need to filter against the regulatory domain &| active set */
    + val = 0;
    + /* B,G Bands */
    + for (i = 1; i <= 14; i++) {
    + range->freq[val].i = i;
    + if (i == 14)
    + range->freq[val].m = 2484000;
    + else
    + range->freq[val].m = (2412+(i-1)*5)*1000;
    + range->freq[val].e = 3;
    + val++;
    + }

    - range->throughput = 300000000;
    + num_band_a = (IW_MAX_FREQUENCIES - val);
    + /* A Bands */
    + for (i = 0; i < num_band_a; i++) {
    + range->freq[val].i = channel_frequency_11A[2 * i];
    + range->freq[val].m = channel_frequency_11A[2 * i + 1] * 1000;
    + range->freq[val].e = 3;
    + val++;
    + }
    + /* MIMO Rate Not Defined Now
    + * For 802.11a, there are too more frequency.
    + * We can't return them all.
    + */
    + range->num_frequency = val;
    + #endif
    +
    + /* Max of /proc/net/wireless */
    + range->max_qual.qual = 100; /* ?? 92; */
    + range->max_qual.level = 154; /* ?? */
    + range->max_qual.noise = 154; /* ?? */
    + range->sensitivity = 3; /* ?? */
    +
    + /* XXX these need to be nsd-specific! */
    + range->min_rts = 0;
    + range->max_rts = 2347;
    + range->min_frag = 256;
    + range->max_frag = 2346;
    + range->max_encoding_tokens = 4 /* NUM_WEPKEYS ?? */;
    + range->num_encoding_sizes = 2; /* ?? */
    +
    + range->encoding_size[0] = 5; /* ?? WEP Key Encoding Size */
    + range->encoding_size[1] = 13; /* ?? */
    +
    + /* XXX what about num_bitrates/throughput? */
    + range->num_bitrates = 0; /* ?? */
    +
    + /* estimated max throughput
    + * XXX need to cap it if we're running at ~2Mbps..
    + */

    - return 0;
    + range->throughput = 300000000;
    +
    + return 0;
    }

    int usbdrvwext_siwap(struct net_device *dev, struct iw_request_info *info,
    - struct sockaddr *MacAddr, char *extra)
    + struct sockaddr *MacAddr, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    + struct usbdrv_private *macp = dev->ml_priv;
    +
    + if (!netif_running(dev))
    + return -EINVAL;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) {
    + /* AP Mode */
    + zfiWlanSetMacAddress(dev, (u16_t *)&MacAddr->sa_data[0]);
    + } else {
    + /* STA Mode */
    + zfiWlanSetBssid(dev, &MacAddr->sa_data[0]);
    + }

    - if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) // AP Mode
    - zfiWlanSetMacAddress(dev,(u16_t *)&MacAddr->sa_data[0]);
    - else //STA Mode
    - zfiWlanSetBssid(dev,&MacAddr->sa_data[0]);
    -
    - if (macp->DeviceOpened == 1)
    - {
    - //u8_t wpaieLen,wpaie[80];
    - //zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen);
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - //if (wpaieLen > 2)
    - // zfiWlanSetWpaIe(dev, wpaie, wpaieLen);
    - }
    + if (macp->DeviceOpened == 1) {
    + /* u8_t wpaieLen,wpaie[80]; */
    + /* zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen); */
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + /* if (wpaieLen > 2) */
    + /* zfiWlanSetWpaIe(dev, wpaie, wpaieLen); */
    + }

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwap(struct net_device *dev,
    - struct iw_request_info *info,
    - struct sockaddr *MacAddr, char *extra)
    + struct iw_request_info *info,
    + struct sockaddr *MacAddr, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) // AP Mode
    - zfiWlanQueryMacAddress(dev, &MacAddr->sa_data[0]);
    - else //STA Mode
    - {
    - if (macp->adapterState == ZM_STATUS_MEDIA_CONNECT)
    - {
    - zfiWlanQueryBssid(dev, &MacAddr->sa_data[0]);
    - }
    - else
    - {
    - u8_t zero_addr[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    - memcpy(&MacAddr->sa_data[0], zero_addr, sizeof(zero_addr));
    - }
    - }
    + if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) {
    + /* AP Mode */
    + zfiWlanQueryMacAddress(dev, &MacAddr->sa_data[0]);
    + } else {
    + /* STA Mode */
    + if (macp->adapterState == ZM_STATUS_MEDIA_CONNECT) {
    + zfiWlanQueryBssid(dev, &MacAddr->sa_data[0]);
    + } else {
    + u8_t zero_addr[6] = { 0x00, 0x00, 0x00, 0x00,
    + 0x00, 0x00 };
    + memcpy(&MacAddr->sa_data[0], zero_addr,
    + sizeof(zero_addr));
    + }
    + }

    - return 0;
    + return 0;
    }

    int usbdrvwext_iwaplist(struct net_device *dev,
    struct iw_request_info *info,
    struct iw_point *data, char *extra)
    {
    - //Don't know how to do yet--CWYang(+)
    - return 0;
    + /* Don't know how to do yet--CWYang(+) */
    + return 0;

    }

    int usbdrvwext_siwscan(struct net_device *dev, struct iw_request_info *info,
    - struct iw_point *data, char *extra)
    + struct iw_point *data, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - printk("CWY - usbdrvwext_siwscan\n");
    + printk(DEFAULT_MESSAGE_LOGLEVEL "CWY - usbdrvwext_siwscan\n");

    - zfiWlanScan(dev);
    + zfiWlanScan(dev);

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwscan(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *data, char *extra)
    + struct iw_request_info *info,
    + struct iw_point *data, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - //struct zsWlanDev* wd = (struct zsWlanDev*) zmw_wlan_dev(dev);
    - char *current_ev = extra;
    - char *end_buf;
    - int i;
    - //struct zsBssList BssList;
    - struct zsBssListV1 *pBssList = kmalloc(sizeof(struct zsBssListV1), GFP_KERNEL);
    - //BssList = wd->sta.pBssList;
    - //zmw_get_wlan_dev(dev);
    -
    - if (macp->DeviceOpened != 1)
    - return 0;
    -
    - if (data->length == 0)
    - {
    - end_buf = extra + IW_SCAN_MAX_DATA;
    - }
    - else
    - {
    - end_buf = extra + data->length;
    - }
    -
    - printk("giwscan - Report Scan Results\n");
    - //printk("giwscan - BssList Sreucture Len : %d\n", sizeof(BssList));
    - //printk("giwscan - BssList Count : %d\n", wd->sta.pBssList->bssCount);
    - //printk("giwscan - UpdateBssList Count : %d\n", wd->sta.pUpdateBssList->bssCount);
    - zfiWlanQueryBssListV1(dev, pBssList);
    - //zfiWlanQueryBssList(dev, &BssList);
    -
    -/* Read and parse all entries */
    - printk("giwscan - pBssList->bssCount : %d\n", pBssList->bssCount);
    - //printk("giwscan - BssList.bssCount : %d\n", BssList.bssCount);
    -
    - for (i = 0; i < pBssList->bssCount; i++)
    - {
    -/* Translate to WE format this entry */
    - //current_ev = usbdrv_translate_scan(dev, info, current_ev,
    - // extra + IW_SCAN_MAX_DATA, &pBssList->bssInfo[i]);
    - current_ev = usbdrv_translate_scan(dev, info, current_ev,
    - end_buf, &pBssList->bssInfo[i]);
    -
    -#if WIRELESS_EXT > 16
    - if (current_ev == end_buf)
    - {
    - kfree(pBssList);
    - data->length = current_ev - extra;
    - return -E2BIG;
    - }
    -#endif
    - }
    + struct usbdrv_private *macp = dev->ml_priv;
    + /* struct zsWlanDev* wd = (struct zsWlanDev*) zmw_wlan_dev(dev); */
    + char *current_ev = extra;
    + char *end_buf;
    + int i;
    + /* struct zsBssList BssList; */
    + struct zsBssListV1 *pBssList = kmalloc(sizeof(struct zsBssListV1),
    + GFP_KERNEL);
    + /* BssList = wd->sta.pBssList; */
    + /* zmw_get_wlan_dev(dev); */
    +
    + if (macp->DeviceOpened != 1)
    + return 0;
    +
    + if (data->length == 0)
    + end_buf = extra + IW_SCAN_MAX_DATA;
    + else
    + end_buf = extra + data->length;
    +
    + printk(DEFAULT_MESSAGE_LOGLEVEL "giwscan - Report Scan Results\n");
    + /* printk("giwscan - BssList Sreucture Len : %d\n", sizeof(BssList));
    + * printk("giwscan - BssList Count : %d\n",
    + * wd->sta.pBssList->bssCount);
    + * printk("giwscan - UpdateBssList Count : %d\n",
    + * wd->sta.pUpdateBssList->bssCount);
    + */
    + zfiWlanQueryBssListV1(dev, pBssList);
    + /* zfiWlanQueryBssList(dev, &BssList); */
    +
    + /* Read and parse all entries */
    + printk(DEFAULT_MESSAGE_LOGLEVEL "giwscan - pBssList->bssCount : %d\n",
    + pBssList->bssCount);
    + /* printk("giwscan - BssList.bssCount : %d\n", BssList.bssCount); */
    +
    + for (i = 0; i < pBssList->bssCount; i++) {
    + /* Translate to WE format this entry
    + * current_ev = usbdrv_translate_scan(dev, info, current_ev,
    + * extra + IW_SCAN_MAX_DATA, &pBssList->bssInfo[i]);
    + */
    + current_ev = usbdrv_translate_scan(dev, info, current_ev,
    + end_buf, &pBssList->bssInfo[i]);
    +
    + #if WIRELESS_EXT > 16
    + if (current_ev == end_buf) {
    + kfree(pBssList);
    + data->length = current_ev - extra;
    + return -E2BIG;
    + }
    + #endif
    + }

    -/* Length of data */
    - data->length = (current_ev - extra);
    - data->flags = 0; /* todo */
    + /* Length of data */
    + data->length = (current_ev - extra);
    + data->flags = 0; /* todo */

    - kfree(pBssList);
    + kfree(pBssList);

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwessid(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *essid, char *extra)
    + struct iw_request_info *info,
    + struct iw_point *essid, char *extra)
    {
    - char EssidBuf[IW_ESSID_MAX_SIZE+1];
    - struct usbdrv_private *macp = dev->ml_priv;
    + char EssidBuf[IW_ESSID_MAX_SIZE + 1];
    + struct usbdrv_private *macp = dev->ml_priv;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;

    - if (essid->flags == 1)
    - {
    - if (essid->length > (IW_ESSID_MAX_SIZE+1))
    - return -E2BIG;
    -
    - if (copy_from_user(&EssidBuf, essid->pointer, essid->length))
    - return -EFAULT;
    -
    - EssidBuf[essid->length] = '\0';
    - //printk("siwessid - Set Essid : %s\n",EssidBuf);
    - //printk("siwessid - Essid Len : %d\n",essid->length);
    - //printk("siwessid - Essid Flag : %x\n",essid->flags);
    - if (macp->DeviceOpened == 1)
    - {
    - zfiWlanSetSSID(dev, EssidBuf, strlen(EssidBuf));
    - zfiWlanSetFrequency(dev, zfiWlanQueryFrequency(dev), FALSE);
    - zfiWlanSetEncryMode(dev, zfiWlanQueryEncryMode(dev));
    - //u8_t wpaieLen,wpaie[50];
    - //zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen);
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - //if (wpaieLen > 2)
    - // zfiWlanSetWpaIe(dev, wpaie, wpaieLen);
    - }
    - }
    + if (essid->flags == 1) {
    + if (essid->length > (IW_ESSID_MAX_SIZE + 1))
    + return -E2BIG;
    +
    + if (copy_from_user(&EssidBuf, essid->pointer, essid->length))
    + return -EFAULT;
    +
    + EssidBuf[essid->length] = '\0';
    + /* printk("siwessid - Set Essid : %s\n",EssidBuf); */
    + /* printk("siwessid - Essid Len : %d\n",essid->length); */
    + /* printk("siwessid - Essid Flag : %x\n",essid->flags); */
    + if (macp->DeviceOpened == 1) {
    + zfiWlanSetSSID(dev, EssidBuf, strlen(EssidBuf));
    + zfiWlanSetFrequency(dev, zfiWlanQueryFrequency(dev),
    + FALSE);
    + zfiWlanSetEncryMode(dev, zfiWlanQueryEncryMode(dev));
    + /* u8_t wpaieLen,wpaie[50]; */
    + /* zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen); */
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + /* if (wpaieLen > 2) */
    + /* zfiWlanSetWpaIe(dev, wpaie, wpaieLen); */
    + }
    + }

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwessid(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *essid, char *extra)
    + struct iw_request_info *info,
    + struct iw_point *essid, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u8_t EssidLen;
    - char EssidBuf[IW_ESSID_MAX_SIZE+1];
    - int ssid_len;
    -
    - if(!netif_running(dev))
    - return -EINVAL;
    -
    - if (macp->DeviceOpened != 1)
    - return 0;
    -
    - zfiWlanQuerySSID(dev, &EssidBuf[0], &EssidLen);
    -
    - /* Convert type from unsigned char to char */
    - ssid_len = (int)EssidLen;
    -
    - /* Make sure the essid length is not greater than IW_ESSID_MAX_SIZE */
    - if (ssid_len > IW_ESSID_MAX_SIZE)
    - ssid_len = IW_ESSID_MAX_SIZE;
    -
    - EssidBuf[ssid_len] = '\0';
    -
    - essid->flags = 1;
    - essid->length = strlen(EssidBuf);
    -
    - memcpy(extra, EssidBuf, essid->length);
    - // wireless.c in Kernel would handle copy_to_user -- line 679
    - /*if (essid->pointer)
    - {
    - if ( copy_to_user(essid->pointer, EssidBuf, essid->length) )
    - {
    - printk("giwessid - copy_to_user Fail\n");
    - return -EFAULT;
    - }
    - }*/
    + struct usbdrv_private *macp = dev->ml_priv;
    + u8_t EssidLen;
    + char EssidBuf[IW_ESSID_MAX_SIZE + 1];
    + int ssid_len;
    +
    + if (!netif_running(dev))
    + return -EINVAL;
    +
    + if (macp->DeviceOpened != 1)
    + return 0;
    +
    + zfiWlanQuerySSID(dev, &EssidBuf[0], &EssidLen);
    +
    + /* Convert type from unsigned char to char */
    + ssid_len = (int)EssidLen;
    +
    + /* Make sure the essid length is not greater than IW_ESSID_MAX_SIZE */
    + if (ssid_len > IW_ESSID_MAX_SIZE)
    + ssid_len = IW_ESSID_MAX_SIZE;
    +
    + EssidBuf[ssid_len] = '\0';
    +
    + essid->flags = 1;
    + essid->length = strlen(EssidBuf);
    +
    + memcpy(extra, EssidBuf, essid->length);
    + /* wireless.c in Kernel would handle copy_to_user -- line 679 */
    + /* if (essid->pointer) {
    + * if (copy_to_user(essid->pointer, EssidBuf, essid->length)) {
    + * printk("giwessid - copy_to_user Fail\n");
    + * return -EFAULT;
    + * }
    + * }
    + */

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwnickn(struct net_device *dev,
    struct iw_request_info *info,
    struct iw_point *data, char *nickname)
    {
    - //Exist but junk--CWYang(+)
    + /* Exist but junk--CWYang(+) */
    return 0;
    }

    @@ -1082,182 +1027,180 @@ int usbdrvwext_giwnickn(struct net_devic
    struct iw_request_info *info,
    struct iw_point *data, char *nickname)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u8_t EssidLen;
    - char EssidBuf[IW_ESSID_MAX_SIZE+1];
    + struct usbdrv_private *macp = dev->ml_priv;
    + u8_t EssidLen;
    + char EssidBuf[IW_ESSID_MAX_SIZE + 1];

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - zfiWlanQuerySSID(dev, &EssidBuf[0], &EssidLen);
    - EssidBuf[EssidLen] = 0;
    + zfiWlanQuerySSID(dev, &EssidBuf[0], &EssidLen);
    + EssidBuf[EssidLen] = 0;

    - data->flags = 1;
    - data->length = strlen(EssidBuf);
    + data->flags = 1;
    + data->length = strlen(EssidBuf);

    - memcpy(nickname, EssidBuf, data->length);
    + memcpy(nickname, EssidBuf, data->length);

    return 0;
    }

    int usbdrvwext_siwrate(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frq, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frq, char *extra)
    {
    struct usbdrv_private *macp = dev->ml_priv;
    - //Array to Define Rate Number that Send to Driver
    - u16_t zcIndextoRateBG[16] = {1000, 2000, 5500, 11000, 0, 0, 0, 0, 48000,
    - 24000, 12000, 6000, 54000, 36000, 18000, 9000};
    - u16_t zcRateToMCS[] = {0xff, 0, 1, 2, 3, 0xb, 0xf, 0xa, 0xe, 0x9, 0xd,
    - 0x8, 0xc};
    - u8_t i,RateIndex = 4;
    - u16_t RateKbps;
    -
    - //printk("frq->disabled : 0x%x\n",frq->disabled);
    - //printk("frq->value : 0x%x\n",frq->value);
    -
    - RateKbps = frq->value / 1000;
    - //printk("RateKbps : %d\n", RateKbps);
    - for (i = 0; i < 16; i++)
    - {
    - if (RateKbps == zcIndextoRateBG[i])
    - RateIndex = i;
    - }
    - if (zcIndextoRateBG[RateIndex] == 0)
    - RateIndex = 0xff;
    - //printk("RateIndex : %x\n", RateIndex);
    - for (i = 0; i < 13; i++)
    - if (RateIndex == zcRateToMCS[i])
    - break;
    - //printk("Index : %x\n", i);
    - if (RateKbps == 65000)
    - {
    - RateIndex = 20;
    - printk("RateIndex : %d\n", RateIndex);
    - }
    - if (macp->DeviceOpened == 1)
    - {
    - zfiWlanSetTxRate(dev, i);
    - //zfiWlanDisable(dev);
    - //zfiWlanEnable(dev);
    - }
    + /* Array to Define Rate Number that Send to Driver */
    + u16_t zcIndextoRateBG[16] = {1000, 2000, 5500, 11000, 0, 0, 0, 0,
    + 48000, 24000, 12000, 6000, 54000, 36000, 18000, 9000};
    + u16_t zcRateToMCS[] = {0xff, 0, 1, 2, 3, 0xb, 0xf, 0xa, 0xe, 0x9, 0xd,
    + 0x8, 0xc};
    + u8_t i, RateIndex = 4;
    + u16_t RateKbps;
    +
    + /* printk("frq->disabled : 0x%x\n",frq->disabled); */
    + /* printk("frq->value : 0x%x\n",frq->value); */
    +
    + RateKbps = frq->value / 1000;
    + /* printk("RateKbps : %d\n", RateKbps); */
    + for (i = 0; i < 16; i++) {
    + if (RateKbps == zcIndextoRateBG[i])
    + RateIndex = i;
    + }
    +
    + if (zcIndextoRateBG[RateIndex] == 0)
    + RateIndex = 0xff;
    + /* printk("RateIndex : %x\n", RateIndex); */
    + for (i = 0; i < 13; i++)
    + if (RateIndex == zcRateToMCS[i])
    + break;
    + /* printk("Index : %x\n", i); */
    + if (RateKbps == 65000) {
    + RateIndex = 20;
    + printk(DEFAULT_MESSAGE_LOGLEVEL "RateIndex : %d\n", RateIndex);
    + }

    - return 0;
    + if (macp->DeviceOpened == 1) {
    + zfiWlanSetTxRate(dev, i);
    + /* zfiWlanDisable(dev); */
    + /* zfiWlanEnable(dev); */
    + }
    +
    + return 0;
    }

    int usbdrvwext_giwrate(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frq, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frq, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - frq->fixed = 0;
    - frq->disabled = 0;
    - frq->value = zfiWlanQueryRxRate(dev) * 1000;
    + frq->fixed = 0;
    + frq->disabled = 0;
    + frq->value = zfiWlanQueryRxRate(dev) * 1000;

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwrts(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *rts, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *rts, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - int val = rts->value;
    + struct usbdrv_private *macp = dev->ml_priv;
    + int val = rts->value;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - if (rts->disabled)
    - val = 2347;
    + if (rts->disabled)
    + val = 2347;

    - if ((val < 0) || (val > 2347))
    - return -EINVAL;
    + if ((val < 0) || (val > 2347))
    + return -EINVAL;

    - zfiWlanSetRtsThreshold(dev,val);
    + zfiWlanSetRtsThreshold(dev, val);

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwrts(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *rts, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *rts, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    -
    - if(!netif_running(dev))
    - return -EINVAL;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (!netif_running(dev))
    + return -EINVAL;

    - rts->value = zfiWlanQueryRtsThreshold(dev);
    - rts->disabled = (rts->value >= 2347);
    - rts->fixed = 1;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - return 0;
    + rts->value = zfiWlanQueryRtsThreshold(dev);
    + rts->disabled = (rts->value >= 2347);
    + rts->fixed = 1;

    + return 0;
    }

    int usbdrvwext_siwfrag(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frag, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frag, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u16_t fragThreshold;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u16_t fragThreshold;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - if (frag->disabled)
    - fragThreshold = 0;
    - else
    - fragThreshold = frag->value;
    + if (frag->disabled)
    + fragThreshold = 0;
    + else
    + fragThreshold = frag->value;

    - zfiWlanSetFragThreshold(dev,fragThreshold);
    + zfiWlanSetFragThreshold(dev, fragThreshold);

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwfrag(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frag, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frag, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u16 val;
    - unsigned long irqFlag;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u16 val;
    + unsigned long irqFlag;

    - if(!netif_running(dev))
    - return -EINVAL;
    + if (!netif_running(dev))
    + return -EINVAL;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - spin_lock_irqsave(&macp->cs_lock, irqFlag);
    + spin_lock_irqsave(&macp->cs_lock, irqFlag);

    - val = zfiWlanQueryFragThreshold(dev);
    + val = zfiWlanQueryFragThreshold(dev);

    - frag->value = val;
    + frag->value = val;

    - frag->disabled = (val >= 2346);
    - frag->fixed = 1;
    + frag->disabled = (val >= 2346);
    + frag->fixed = 1;

    - spin_unlock_irqrestore(&macp->cs_lock, irqFlag);
    + spin_unlock_irqrestore(&macp->cs_lock, irqFlag);

    - return 0;
    + return 0;
    }

    int usbdrvwext_siwtxpow(struct net_device *dev,
    struct iw_request_info *info,
    struct iw_param *rrq, char *extra)
    {
    - //Not support yet--CWYng(+)
    + /* Not support yet--CWYng(+) */
    return 0;
    }

    @@ -1265,7 +1208,7 @@ int usbdrvwext_giwtxpow(struct net_devic
    struct iw_request_info *info,
    struct iw_param *rrq, char *extra)
    {
    - //Not support yet--CWYng(+)
    + /* Not support yet--CWYng(+) */
    return 0;
    }

    @@ -1273,7 +1216,7 @@ int usbdrvwext_siwretry(struct net_devic
    struct iw_request_info *info,
    struct iw_param *rrq, char *extra)
    {
    - //Do nothing--CWYang(+)
    + /* Do nothing--CWYang(+) */
    return 0;
    }

    @@ -1281,665 +1224,662 @@ int usbdrvwext_giwretry(struct net_devic
    struct iw_request_info *info,
    struct iw_param *rrq, char *extra)
    {
    - //Do nothing--CWYang(+)
    + /* Do nothing--CWYang(+) */
    return 0;
    }

    int usbdrvwext_siwencode(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *erq, char *key)
    + struct iw_request_info *info,
    + struct iw_point *erq, char *key)
    {
    - struct zsKeyInfo keyInfo;
    - int i, WepState = ZM_ENCRYPTION_WEP_DISABLED;
    - struct usbdrv_private *macp = dev->ml_priv;
    -
    - if(!netif_running(dev))
    - return -EINVAL;
    -
    - if ((erq->flags & IW_ENCODE_DISABLED) == 0)
    - {
    - keyInfo.key = key;
    - keyInfo.keyLength = erq->length;
    - keyInfo.keyIndex = (erq->flags & IW_ENCODE_INDEX) - 1;
    - if (keyInfo.keyIndex >= 4)
    - keyInfo.keyIndex = 0;
    - keyInfo.flag = ZM_KEY_FLAG_DEFAULT_KEY;
    -
    - zfiWlanSetKey(dev, keyInfo);
    - WepState = ZM_ENCRYPTION_WEP_ENABLED;
    - }
    - else
    - {
    - for (i = 1; i < 4; i++)
    - zfiWlanRemoveKey(dev, 0, i);
    - WepState = ZM_ENCRYPTION_WEP_DISABLED;
    - //zfiWlanSetEncryMode(dev, ZM_NO_WEP);
    - }
    -
    - if (macp->DeviceOpened == 1)
    - {
    - zfiWlanSetWepStatus(dev, WepState);
    - zfiWlanSetFrequency(dev, zfiWlanQueryFrequency(dev), FALSE);
    - //zfiWlanSetEncryMode(dev, zfiWlanQueryEncryMode(dev));
    - //u8_t wpaieLen,wpaie[50];
    - //zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen);
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - //if (wpaieLen > 2)
    - // zfiWlanSetWpaIe(dev, wpaie, wpaieLen);
    - }
    + struct zsKeyInfo keyInfo;
    + int i;
    + int WepState = ZM_ENCRYPTION_WEP_DISABLED;
    + struct usbdrv_private *macp = dev->ml_priv;
    +
    + if (!netif_running(dev))
    + return -EINVAL;
    +
    + if ((erq->flags & IW_ENCODE_DISABLED) == 0) {
    + keyInfo.key = key;
    + keyInfo.keyLength = erq->length;
    + keyInfo.keyIndex = (erq->flags & IW_ENCODE_INDEX) - 1;
    + if (keyInfo.keyIndex >= 4)
    + keyInfo.keyIndex = 0;
    + keyInfo.flag = ZM_KEY_FLAG_DEFAULT_KEY;
    +
    + zfiWlanSetKey(dev, keyInfo);
    + WepState = ZM_ENCRYPTION_WEP_ENABLED;
    + } else {
    + for (i = 1; i < 4; i++)
    + zfiWlanRemoveKey(dev, 0, i);
    + WepState = ZM_ENCRYPTION_WEP_DISABLED;
    + /* zfiWlanSetEncryMode(dev, ZM_NO_WEP); */
    + }
    +
    + if (macp->DeviceOpened == 1) {
    + zfiWlanSetWepStatus(dev, WepState);
    + zfiWlanSetFrequency(dev, zfiWlanQueryFrequency(dev), FALSE);
    + /* zfiWlanSetEncryMode(dev, zfiWlanQueryEncryMode(dev)); */
    + /* u8_t wpaieLen,wpaie[50]; */
    + /* zfiWlanQueryWpaIe(dev, wpaie, &wpaieLen); */
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + /* if (wpaieLen > 2) */
    + /* zfiWlanSetWpaIe(dev, wpaie, wpaieLen); */
    + }

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwencode(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_point *erq, char *key)
    + struct iw_request_info *info,
    + struct iw_point *erq, char *key)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u8_t EncryptionMode;
    - u8_t keyLen = 0;
    -
    - if (macp->DeviceOpened != 1)
    - return 0;
    -
    - EncryptionMode = zfiWlanQueryEncryMode(dev);
    -
    - if (EncryptionMode)
    - {
    - erq->flags = IW_ENCODE_ENABLED;
    - }
    - else
    - {
    - erq->flags = IW_ENCODE_DISABLED;
    - }
    -
    -/* We can't return the key, so set the proper flag and return zero */
    - erq->flags |= IW_ENCODE_NOKEY;
    - memset(key, 0, 16);
    -
    -/* Copy the key to the user buffer */
    - switch(EncryptionMode)
    - {
    - case ZM_WEP64:
    - keyLen = 5;
    - break;
    - case ZM_WEP128:
    - keyLen = 13;
    - break;
    - case ZM_WEP256:
    - keyLen = 29;
    - break;
    - case ZM_AES:
    - keyLen = 16;
    - break;
    - case ZM_TKIP:
    - keyLen = 32;
    - break;
    -#ifdef ZM_ENABLE_CENC
    - case ZM_CENC:
    - keyLen = 32;
    - break;
    -#endif //ZM_ENABLE_CENC
    - case ZM_NO_WEP:
    - keyLen = 0;
    - break;
    - default :
    - keyLen = 0;
    - printk("Unknown EncryMode\n");
    - break;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u8_t EncryptionMode;
    + u8_t keyLen = 0;

    - }
    - erq->length = keyLen;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - return 0;
    + EncryptionMode = zfiWlanQueryEncryMode(dev);
    +
    + if (EncryptionMode)
    + erq->flags = IW_ENCODE_ENABLED;
    + else
    + erq->flags = IW_ENCODE_DISABLED;
    +
    + /* We can't return the key, so set the proper flag and return zero */
    + erq->flags |= IW_ENCODE_NOKEY;
    + memset(key, 0, 16);
    +
    + /* Copy the key to the user buffer */
    + switch (EncryptionMode) {
    + case ZM_WEP64:
    + keyLen = 5;
    + break;
    + case ZM_WEP128:
    + keyLen = 13;
    + break;
    + case ZM_WEP256:
    + keyLen = 29;
    + break;
    + case ZM_AES:
    + keyLen = 16;
    + break;
    + case ZM_TKIP:
    + keyLen = 32;
    + break;
    + #ifdef ZM_ENABLE_CENC
    + case ZM_CENC:
    + /* ZM_ENABLE_CENC */
    + keyLen = 32;
    + break;
    + #endif
    + case ZM_NO_WEP:
    + keyLen = 0;
    + break;
    + default:
    + keyLen = 0;
    + printk(KERN_ERR "Unknown EncryMode\n");
    + break;
    + }
    + erq->length = keyLen;
    +
    + return 0;
    }

    int usbdrvwext_siwpower(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frq, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frq, char *extra)
    {
    - struct usbdrv_private *macp = dev->ml_priv;
    - u8_t PSMode;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u8_t PSMode;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - if (frq->disabled)
    - PSMode = ZM_STA_PS_NONE;
    - else
    - PSMode = ZM_STA_PS_MAX;
    + if (frq->disabled)
    + PSMode = ZM_STA_PS_NONE;
    + else
    + PSMode = ZM_STA_PS_MAX;

    - zfiWlanSetPowerSaveMode(dev,PSMode);
    + zfiWlanSetPowerSaveMode(dev, PSMode);

    - return 0;
    + return 0;
    }

    int usbdrvwext_giwpower(struct net_device *dev,
    - struct iw_request_info *info,
    - struct iw_param *frq, char *extra)
    + struct iw_request_info *info,
    + struct iw_param *frq, char *extra)
    {
    - unsigned long irqFlag;
    - struct usbdrv_private *macp = dev->ml_priv;
    + unsigned long irqFlag;
    + struct usbdrv_private *macp = dev->ml_priv;

    - if (macp->DeviceOpened != 1)
    - return 0;
    + if (macp->DeviceOpened != 1)
    + return 0;

    - spin_lock_irqsave(&macp->cs_lock, irqFlag);
    -
    - if (zfiWlanQueryPowerSaveMode(dev) == ZM_STA_PS_NONE)
    - frq->disabled = 1;
    - else
    - frq->disabled = 0;
    -
    - spin_unlock_irqrestore(&macp->cs_lock, irqFlag);
    -
    - return 0;
    -}
    -
    -//int usbdrvwext_setparam(struct net_device *dev, struct iw_request_info *info,
    -// void *w, char *extra)
    -//{
    -// struct ieee80211vap *vap = dev->ml_priv;
    -// struct ieee80211com *ic = vap->iv_ic;
    -// struct ieee80211_rsnparms *rsn = &vap->iv_bss->ni_rsn;
    -// int *i = (int *) extra;
    -// int param = i[0]; /* parameter id is 1st */
    -// int value = i[1]; /* NB: most values are TYPE_INT */
    -// int retv = 0;
    -// int j, caps;
    -// const struct ieee80211_authenticator *auth;
    -// const struct ieee80211_aclator *acl;
    -//
    -// switch (param) {
    -// case IEEE80211_PARAM_AUTHMODE:
    -// switch (value) {
    -// case IEEE80211_AUTH_WPA: /* WPA */
    -// case IEEE80211_AUTH_8021X: /* 802.1x */
    -// case IEEE80211_AUTH_OPEN: /* open */
    -// case IEEE80211_AUTH_SHARED: /* shared-key */
    -// case IEEE80211_AUTH_AUTO: /* auto */
    -// auth = ieee80211_authenticator_get(value);
    -// if (auth == NULL)
    -// return -EINVAL;
    -// break;
    -// default:
    -// return -EINVAL;
    -// }
    -// switch (value) {
    -// case IEEE80211_AUTH_WPA: /* WPA w/ 802.1x */
    -// vap->iv_flags |= IEEE80211_F_PRIVACY;
    -// value = IEEE80211_AUTH_8021X;
    -// break;
    -// case IEEE80211_AUTH_OPEN: /* open */
    -// vap->iv_flags &= ~(IEEE80211_F_WPA|IEEE80211_F_PRIVACY);
    -// break;
    -// case IEEE80211_AUTH_SHARED: /* shared-key */
    -// case IEEE80211_AUTH_AUTO: /* auto */
    -// case IEEE80211_AUTH_8021X: /* 802.1x */
    -// vap->iv_flags &= ~IEEE80211_F_WPA;
    -// /* both require a key so mark the PRIVACY capability */
    -// vap->iv_flags |= IEEE80211_F_PRIVACY;
    -// break;
    -// }
    -// /* NB: authenticator attach/detach happens on state change */
    -// vap->iv_bss->ni_authmode = value;
    -// /* XXX mixed/mode/usage? */
    -// vap->iv_auth = auth;
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_PROTMODE:
    -// if (value > IEEE80211_PROT_RTSCTS)
    -// return -EINVAL;
    -// ic->ic_protmode = value;
    -// /* NB: if not operating in 11g this can wait */
    -// if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
    -// IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan))
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_MCASTCIPHER:
    -// if ((vap->iv_caps & cipher2cap(value)) == 0 &&
    -// !ieee80211_crypto_available(value))
    -// return -EINVAL;
    -// rsn->rsn_mcastcipher = value;
    -// if (vap->iv_flags & IEEE80211_F_WPA)
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_MCASTKEYLEN:
    -// if (!(0 < value && value < IEEE80211_KEYBUF_SIZE))
    -// return -EINVAL;
    -// /* XXX no way to verify driver capability */
    -// rsn->rsn_mcastkeylen = value;
    -// if (vap->iv_flags & IEEE80211_F_WPA)
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_UCASTCIPHERS:
    -// /*
    -// * Convert cipher set to equivalent capabilities.
    -// * NB: this logic intentionally ignores unknown and
    -// * unsupported ciphers so folks can specify 0xff or
    -// * similar and get all available ciphers.
    -// */
    -// caps = 0;
    -// for (j = 1; j < 32; j++) /* NB: skip WEP */
    -// if ((value & (1<<j)) &&
    -// ((vap->iv_caps & cipher2cap(j)) ||
    -// ieee80211_crypto_available(j)))
    -// caps |= 1<<j;
    -// if (caps == 0) /* nothing available */
    -// return -EINVAL;
    -// /* XXX verify ciphers ok for unicast use? */
    -// /* XXX disallow if running as it'll have no effect */
    -// rsn->rsn_ucastcipherset = caps;
    -// if (vap->iv_flags & IEEE80211_F_WPA)
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_UCASTCIPHER:
    -// if ((rsn->rsn_ucastcipherset & cipher2cap(value)) == 0)
    -// return -EINVAL;
    -// rsn->rsn_ucastcipher = value;
    -// break;
    -// case IEEE80211_PARAM_UCASTKEYLEN:
    -// if (!(0 < value && value < IEEE80211_KEYBUF_SIZE))
    -// return -EINVAL;
    -// /* XXX no way to verify driver capability */
    -// rsn->rsn_ucastkeylen = value;
    -// break;
    -// case IEEE80211_PARAM_KEYMGTALGS:
    -// /* XXX check */
    -// rsn->rsn_keymgmtset = value;
    -// if (vap->iv_flags & IEEE80211_F_WPA)
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_RSNCAPS:
    -// /* XXX check */
    -// rsn->rsn_caps = value;
    -// if (vap->iv_flags & IEEE80211_F_WPA)
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_WPA:
    -// if (value > 3)
    -// return -EINVAL;
    -// /* XXX verify ciphers available */
    -// vap->iv_flags &= ~IEEE80211_F_WPA;
    -// switch (value) {
    -// case 1:
    -// vap->iv_flags |= IEEE80211_F_WPA1;
    -// break;
    -// case 2:
    -// vap->iv_flags |= IEEE80211_F_WPA2;
    -// break;
    -// case 3:
    -// vap->iv_flags |= IEEE80211_F_WPA1 | IEEE80211_F_WPA2;
    -// break;
    -// }
    -// retv = ENETRESET; /* XXX? */
    -// break;
    -// case IEEE80211_PARAM_ROAMING:
    -// if (!(IEEE80211_ROAMING_DEVICE <= value &&
    -// value <= IEEE80211_ROAMING_MANUAL))
    -// return -EINVAL;
    -// ic->ic_roaming = value;
    -// break;
    -// case IEEE80211_PARAM_PRIVACY:
    -// if (value) {
    -// /* XXX check for key state? */
    -// vap->iv_flags |= IEEE80211_F_PRIVACY;
    -// } else
    -// vap->iv_flags &= ~IEEE80211_F_PRIVACY;
    -// break;
    -// case IEEE80211_PARAM_DROPUNENCRYPTED:
    -// if (value)
    -// vap->iv_flags |= IEEE80211_F_DROPUNENC;
    -// else
    -// vap->iv_flags &= ~IEEE80211_F_DROPUNENC;
    -// break;
    -// case IEEE80211_PARAM_COUNTERMEASURES:
    -// if (value) {
    -// if ((vap->iv_flags & IEEE80211_F_WPA) == 0)
    -// return -EINVAL;
    -// vap->iv_flags |= IEEE80211_F_COUNTERM;
    -// } else
    -// vap->iv_flags &= ~IEEE80211_F_COUNTERM;
    -// break;
    -// case IEEE80211_PARAM_DRIVER_CAPS:
    -// vap->iv_caps = value; /* NB: for testing */
    -// break;
    -// case IEEE80211_PARAM_MACCMD:
    -// acl = vap->iv_acl;
    -// switch (value) {
    -// case IEEE80211_MACCMD_POLICY_OPEN:
    -// case IEEE80211_MACCMD_POLICY_ALLOW:
    -// case IEEE80211_MACCMD_POLICY_DENY:
    -// if (acl == NULL) {
    -// acl = ieee80211_aclator_get("mac");
    -// if (acl == NULL || !acl->iac_attach(vap))
    -// return -EINVAL;
    -// vap->iv_acl = acl;
    -// }
    -// acl->iac_setpolicy(vap, value);
    -// break;
    -// case IEEE80211_MACCMD_FLUSH:
    -// if (acl != NULL)
    -// acl->iac_flush(vap);
    -// /* NB: silently ignore when not in use */
    -// break;
    -// case IEEE80211_MACCMD_DETACH:
    -// if (acl != NULL) {
    -// vap->iv_acl = NULL;
    -// acl->iac_detach(vap);
    -// }
    -// break;
    -// }
    -// break;
    -// case IEEE80211_PARAM_WMM:
    -// if (ic->ic_caps & IEEE80211_C_WME){
    -// if (value) {
    -// vap->iv_flags |= IEEE80211_F_WME;
    -// vap->iv_ic->ic_flags |= IEEE80211_F_WME; /* XXX needed by ic_reset */
    -// }
    -// else {
    -// vap->iv_flags &= ~IEEE80211_F_WME;
    -// vap->iv_ic->ic_flags &= ~IEEE80211_F_WME; /* XXX needed by ic_reset */
    -// }
    -// retv = ENETRESET; /* Renegotiate for capabilities */
    -// }
    -// break;
    -// case IEEE80211_PARAM_HIDESSID:
    -// if (value)
    -// vap->iv_flags |= IEEE80211_F_HIDESSID;
    -// else
    -// vap->iv_flags &= ~IEEE80211_F_HIDESSID;
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_APBRIDGE:
    -// if (value == 0)
    -// vap->iv_flags |= IEEE80211_F_NOBRIDGE;
    -// else
    -// vap->iv_flags &= ~IEEE80211_F_NOBRIDGE;
    -// break;
    -// case IEEE80211_PARAM_INACT:
    -// vap->iv_inact_run = value / IEEE80211_INACT_WAIT;
    -// break;
    -// case IEEE80211_PARAM_INACT_AUTH:
    -// vap->iv_inact_auth = value / IEEE80211_INACT_WAIT;
    -// break;
    -// case IEEE80211_PARAM_INACT_INIT:
    -// vap->iv_inact_init = value / IEEE80211_INACT_WAIT;
    -// break;
    -// case IEEE80211_PARAM_ABOLT:
    -// caps = 0;
    -// /*
    -// * Map abolt settings to capability bits;
    -// * this also strips unknown/unwanted bits.
    -// */
    -// if (value & IEEE80211_ABOLT_TURBO_PRIME)
    -// caps |= IEEE80211_ATHC_TURBOP;
    -// if (value & IEEE80211_ABOLT_COMPRESSION)
    -// caps |= IEEE80211_ATHC_COMP;
    -// if (value & IEEE80211_ABOLT_FAST_FRAME)
    -// caps |= IEEE80211_ATHC_FF;
    -// if (value & IEEE80211_ABOLT_XR)
    -// caps |= IEEE80211_ATHC_XR;
    -// if (value & IEEE80211_ABOLT_AR)
    -// caps |= IEEE80211_ATHC_AR;
    -// if (value & IEEE80211_ABOLT_BURST)
    -// caps |= IEEE80211_ATHC_BURST;
    -// if (value & IEEE80211_ABOLT_WME_ELE)
    -// caps |= IEEE80211_ATHC_WME;
    -// /* verify requested capabilities are supported */
    -// if ((caps & ic->ic_ath_cap) != caps)
    -// return -EINVAL;
    -// if (vap->iv_ath_cap != caps) {
    -// if ((vap->iv_ath_cap ^ caps) & IEEE80211_ATHC_TURBOP) {
    -// if (ieee80211_set_turbo(dev, caps & IEEE80211_ATHC_TURBOP))
    -// return -EINVAL;
    -// ieee80211_scan_flush(ic);
    -// }
    -// vap->iv_ath_cap = caps;
    -// ic->ic_athcapsetup(vap->iv_ic, vap->iv_ath_cap);
    -// retv = ENETRESET;
    -// }
    -// break;
    -// case IEEE80211_PARAM_DTIM_PERIOD:
    -// if (vap->iv_opmode != IEEE80211_M_HOSTAP &&
    -// vap->iv_opmode != IEEE80211_M_IBSS)
    -// return -EINVAL;
    -// if (IEEE80211_DTIM_MIN <= value &&
    -// value <= IEEE80211_DTIM_MAX) {
    -// vap->iv_dtim_period = value;
    -// retv = ENETRESET; /* requires restart */
    -// } else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_BEACON_INTERVAL:
    -// if (vap->iv_opmode != IEEE80211_M_HOSTAP &&
    -// vap->iv_opmode != IEEE80211_M_IBSS)
    -// return -EINVAL;
    -// if (IEEE80211_BINTVAL_MIN <= value &&
    -// value <= IEEE80211_BINTVAL_MAX) {
    -// ic->ic_lintval = value; /* XXX multi-bss */
    -// retv = ENETRESET; /* requires restart */
    -// } else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_DOTH:
    -// if (value) {
    -// ic->ic_flags |= IEEE80211_F_DOTH;
    -// }
    -// else
    -// ic->ic_flags &= ~IEEE80211_F_DOTH;
    -// retv = ENETRESET; /* XXX: need something this drastic? */
    -// break;
    -// case IEEE80211_PARAM_PWRTARGET:
    -// ic->ic_curchanmaxpwr = value;
    -// break;
    -// case IEEE80211_PARAM_GENREASSOC:
    -// IEEE80211_SEND_MGMT(vap->iv_bss, IEEE80211_FC0_SUBTYPE_REASSOC_REQ, 0);
    -// break;
    -// case IEEE80211_PARAM_COMPRESSION:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_COMP, value);
    -// break;
    -// case IEEE80211_PARAM_WMM_AGGRMODE:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_WME, value);
    -// break;
    -// case IEEE80211_PARAM_FF:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_FF, value);
    -// break;
    -// case IEEE80211_PARAM_TURBO:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_TURBOP, value);
    -// if (retv == ENETRESET) {
    -// if(ieee80211_set_turbo(dev,value))
    -// return -EINVAL;
    -// ieee80211_scan_flush(ic);
    -// }
    -// break;
    -// case IEEE80211_PARAM_XR:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_XR, value);
    -// break;
    -// case IEEE80211_PARAM_BURST:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_BURST, value);
    -// break;
    -// case IEEE80211_PARAM_AR:
    -// retv = ieee80211_setathcap(vap, IEEE80211_ATHC_AR, value);
    -// break;
    -// case IEEE80211_PARAM_PUREG:
    -// if (value)
    -// vap->iv_flags |= IEEE80211_F_PUREG;
    -// else
    -// vap->iv_flags &= ~IEEE80211_F_PUREG;
    -// /* NB: reset only if we're operating on an 11g channel */
    -// if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
    -// IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan))
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_WDS:
    -// if (value)
    -// vap->iv_flags_ext |= IEEE80211_FEXT_WDS;
    -// else
    -// vap->iv_flags_ext &= ~IEEE80211_FEXT_WDS;
    -// break;
    -// case IEEE80211_PARAM_BGSCAN:
    -// if (value) {
    -// if ((vap->iv_caps & IEEE80211_C_BGSCAN) == 0)
    -// return -EINVAL;
    -// vap->iv_flags |= IEEE80211_F_BGSCAN;
    -// } else {
    -// /* XXX racey? */
    -// vap->iv_flags &= ~IEEE80211_F_BGSCAN;
    -// ieee80211_cancel_scan(vap); /* anything current */
    -// }
    -// break;
    -// case IEEE80211_PARAM_BGSCAN_IDLE:
    -// if (value >= IEEE80211_BGSCAN_IDLE_MIN)
    -// vap->iv_bgscanidle = value*HZ/1000;
    -// else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_BGSCAN_INTERVAL:
    -// if (value >= IEEE80211_BGSCAN_INTVAL_MIN)
    -// vap->iv_bgscanintvl = value*HZ;
    -// else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_MCAST_RATE:
    -// /* units are in KILObits per second */
    -// if (value >= 256 && value <= 54000)
    -// vap->iv_mcast_rate = value;
    -// else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_COVERAGE_CLASS:
    -// if (value >= 0 && value <= IEEE80211_COVERAGE_CLASS_MAX) {
    -// ic->ic_coverageclass = value;
    -// if (IS_UP_AUTO(vap))
    -// ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
    -// retv = 0;
    -// }
    -// else
    -// retv = EINVAL;
    -// break;
    -// case IEEE80211_PARAM_COUNTRY_IE:
    -// if (value)
    -// ic->ic_flags_ext |= IEEE80211_FEXT_COUNTRYIE;
    -// else
    -// ic->ic_flags_ext &= ~IEEE80211_FEXT_COUNTRYIE;
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_REGCLASS:
    -// if (value)
    -// ic->ic_flags_ext |= IEEE80211_FEXT_REGCLASS;
    -// else
    -// ic->ic_flags_ext &= ~IEEE80211_FEXT_REGCLASS;
    -// retv = ENETRESET;
    -// break;
    -// case IEEE80211_PARAM_SCANVALID:
    -// vap->iv_scanvalid = value*HZ;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RSSI_11A:
    -// vap->iv_roam.rssi11a = value;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RSSI_11B:
    -// vap->iv_roam.rssi11bOnly = value;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RSSI_11G:
    -// vap->iv_roam.rssi11b = value;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RATE_11A:
    -// vap->iv_roam.rate11a = value;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RATE_11B:
    -// vap->iv_roam.rate11bOnly = value;
    -// break;
    -// case IEEE80211_PARAM_ROAM_RATE_11G:
    -// vap->iv_roam.rate11b = value;
    -// break;
    -// case IEEE80211_PARAM_UAPSDINFO:
    -// if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
    -// if (ic->ic_caps & IEEE80211_C_UAPSD) {
    -// if (value)
    -// IEEE80211_VAP_UAPSD_ENABLE(vap);
    -// else
    -// IEEE80211_VAP_UAPSD_DISABLE(vap);
    -// retv = ENETRESET;
    -// }
    -// }
    -// else if (vap->iv_opmode == IEEE80211_M_STA) {
    -// vap->iv_uapsdinfo = value;
    -// IEEE80211_VAP_UAPSD_ENABLE(vap);
    -// retv = ENETRESET;
    -// }
    -// break;
    -// case IEEE80211_PARAM_SLEEP:
    -// /* XXX: Forced sleep for testing. Does not actually place the
    -// * HW in sleep mode yet. this only makes sense for STAs.
    -// */
    -// if (value) {
    -// /* goto sleep */
    -// IEEE80211_VAP_GOTOSLEEP(vap);
    -// }
    -// else {
    -// /* wakeup */
    -// IEEE80211_VAP_WAKEUP(vap);
    -// }
    -// ieee80211_send_nulldata(ieee80211_ref_node(vap->iv_bss));
    -// break;
    -// case IEEE80211_PARAM_QOSNULL:
    -// /* Force a QoS Null for testing. */
    -// ieee80211_send_qosnulldata(vap->iv_bss, value);
    -// break;
    -// case IEEE80211_PARAM_PSPOLL:
    -// /* Force a PS-POLL for testing. */
    -// ieee80211_send_pspoll(vap->iv_bss);
    -// break;
    -// case IEEE80211_PARAM_EOSPDROP:
    -// if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
    -// if (value) IEEE80211_VAP_EOSPDROP_ENABLE(vap);
    -// else IEEE80211_VAP_EOSPDROP_DISABLE(vap);
    -// }
    -// break;
    -// case IEEE80211_PARAM_MARKDFS:
    -// if (value)
    -// ic->ic_flags_ext |= IEEE80211_FEXT_MARKDFS;
    -// else
    -// ic->ic_flags_ext &= ~IEEE80211_FEXT_MARKDFS;
    -// break;
    -// case IEEE80211_PARAM_CHANBW:
    -// switch (value) {
    -// case 0:
    -// ic->ic_chanbwflag = 0;
    -// break;
    -// case 1:
    -// ic->ic_chanbwflag = IEEE80211_CHAN_HALF;
    -// break;
    -// case 2:
    -// ic->ic_chanbwflag = IEEE80211_CHAN_QUARTER;
    -// break;
    -// default:
    -// retv = EINVAL;
    -// break;
    -// }
    -// break;
    -// case IEEE80211_PARAM_SHORTPREAMBLE:
    -// if (value) {
    -// ic->ic_caps |= IEEE80211_C_SHPREAMBLE;
    -// } else {
    -// ic->ic_caps &= ~IEEE80211_C_SHPREAMBLE;
    -// }
    -// retv = ENETRESET;
    -// break;
    -// default:
    -// retv = EOPNOTSUPP;
    -// break;
    -// }
    -// /* XXX should any of these cause a rescan? */
    -// if (retv == ENETRESET)
    -// retv = IS_UP_AUTO(vap) ? ieee80211_open(vap->iv_dev) : 0;
    -// return -retv;
    -//}
    + spin_lock_irqsave(&macp->cs_lock, irqFlag);
    +
    + if (zfiWlanQueryPowerSaveMode(dev) == ZM_STA_PS_NONE)
    + frq->disabled = 1;
    + else
    + frq->disabled = 0;
    +
    + spin_unlock_irqrestore(&macp->cs_lock, irqFlag);
    +
    + return 0;
    +}
    +
    +/*int usbdrvwext_setparam(struct net_device *dev, struct iw_request_info *info,
    +* void *w, char *extra)
    +*{
    +* struct ieee80211vap *vap = dev->ml_priv;
    +* struct ieee80211com *ic = vap->iv_ic;
    +* struct ieee80211_rsnparms *rsn = &vap->iv_bss->ni_rsn;
    +* int *i = (int *) extra;
    +* int param = i[0]; // parameter id is 1st
    +* int value = i[1]; // NB: most values are TYPE_INT
    +* int retv = 0;
    +* int j, caps;
    +* const struct ieee80211_authenticator *auth;
    +* const struct ieee80211_aclator *acl;
    +*
    +* switch (param) {
    +* case IEEE80211_PARAM_AUTHMODE:
    +* switch (value) {
    +* case IEEE80211_AUTH_WPA: // WPA
    +* case IEEE80211_AUTH_8021X: // 802.1x
    +* case IEEE80211_AUTH_OPEN: // open
    +* case IEEE80211_AUTH_SHARED: // shared-key
    +* case IEEE80211_AUTH_AUTO: // auto
    +* auth = ieee80211_authenticator_get(value);
    +* if (auth == NULL)
    +* return -EINVAL;
    +* break;
    +* default:
    +* return -EINVAL;
    +* }
    +* switch (value) {
    +* case IEEE80211_AUTH_WPA: // WPA w/ 802.1x
    +* vap->iv_flags |= IEEE80211_F_PRIVACY;
    +* value = IEEE80211_AUTH_8021X;
    +* break;
    +* case IEEE80211_AUTH_OPEN: // open
    +* vap->iv_flags &= ~(IEEE80211_F_WPA | IEEE80211_F_PRIVACY);
    +* break;
    +* case IEEE80211_AUTH_SHARED: // shared-key
    +* case IEEE80211_AUTH_AUTO: // auto
    +* case IEEE80211_AUTH_8021X: // 802.1x
    +* vap->iv_flags &= ~IEEE80211_F_WPA;
    +* // both require a key so mark the PRIVACY capability
    +* vap->iv_flags |= IEEE80211_F_PRIVACY;
    +* break;
    +* }
    +* // NB: authenticator attach/detach happens on state change
    +* vap->iv_bss->ni_authmode = value;
    +* // XXX mixed/mode/usage?
    +* vap->iv_auth = auth;
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_PROTMODE:
    +* if (value > IEEE80211_PROT_RTSCTS)
    +* return -EINVAL;
    +* ic->ic_protmode = value;
    +* // NB: if not operating in 11g this can wait
    +* if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
    +* IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan))
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_MCASTCIPHER:
    +* if ((vap->iv_caps & cipher2cap(value)) == 0 &&
    +* !ieee80211_crypto_available(value))
    +* return -EINVAL;
    +* rsn->rsn_mcastcipher = value;
    +* if (vap->iv_flags & IEEE80211_F_WPA)
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_MCASTKEYLEN:
    +* if (!(0 < value && value < IEEE80211_KEYBUF_SIZE))
    +* return -EINVAL;
    +* // XXX no way to verify driver capability
    +* rsn->rsn_mcastkeylen = value;
    +* if (vap->iv_flags & IEEE80211_F_WPA)
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_UCASTCIPHERS:
    +*
    +* // Convert cipher set to equivalent capabilities.
    +* // NB: this logic intentionally ignores unknown and
    +* // unsupported ciphers so folks can specify 0xff or
    +* // similar and get all available ciphers.
    +*
    +* caps = 0;
    +* for (j = 1; j < 32; j++) // NB: skip WEP
    +* if ((value & (1<<j)) &&
    +* ((vap->iv_caps & cipher2cap(j)) ||
    +* ieee80211_crypto_available(j)))
    +* caps |= 1<<j;
    +* if (caps == 0) // nothing available
    +* return -EINVAL;
    +* // XXX verify ciphers ok for unicast use?
    +* // XXX disallow if running as it'll have no effect
    +* rsn->rsn_ucastcipherset = caps;
    +* if (vap->iv_flags & IEEE80211_F_WPA)
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_UCASTCIPHER:
    +* if ((rsn->rsn_ucastcipherset & cipher2cap(value)) == 0)
    +* return -EINVAL;
    +* rsn->rsn_ucastcipher = value;
    +* break;
    +* case IEEE80211_PARAM_UCASTKEYLEN:
    +* if (!(0 < value && value < IEEE80211_KEYBUF_SIZE))
    +* return -EINVAL;
    +* // XXX no way to verify driver capability
    +* rsn->rsn_ucastkeylen = value;
    +* break;
    +* case IEEE80211_PARAM_KEYMGTALGS:
    +* // XXX check
    +* rsn->rsn_keymgmtset = value;
    +* if (vap->iv_flags & IEEE80211_F_WPA)
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_RSNCAPS:
    +* // XXX check
    +* rsn->rsn_caps = value;
    +* if (vap->iv_flags & IEEE80211_F_WPA)
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_WPA:
    +* if (value > 3)
    +* return -EINVAL;
    +* // XXX verify ciphers available
    +* vap->iv_flags &= ~IEEE80211_F_WPA;
    +* switch (value) {
    +* case 1:
    +* vap->iv_flags |= IEEE80211_F_WPA1;
    +* break;
    +* case 2:
    +* vap->iv_flags |= IEEE80211_F_WPA2;
    +* break;
    +* case 3:
    +* vap->iv_flags |= IEEE80211_F_WPA1 | IEEE80211_F_WPA2;
    +* break;
    +* }
    +* retv = ENETRESET; // XXX?
    +* break;
    +* case IEEE80211_PARAM_ROAMING:
    +* if (!(IEEE80211_ROAMING_DEVICE <= value &&
    +* value <= IEEE80211_ROAMING_MANUAL))
    +* return -EINVAL;
    +* ic->ic_roaming = value;
    +* break;
    +* case IEEE80211_PARAM_PRIVACY:
    +* if (value) {
    +* // XXX check for key state?
    +* vap->iv_flags |= IEEE80211_F_PRIVACY;
    +* } else
    +* vap->iv_flags &= ~IEEE80211_F_PRIVACY;
    +* break;
    +* case IEEE80211_PARAM_DROPUNENCRYPTED:
    +* if (value)
    +* vap->iv_flags |= IEEE80211_F_DROPUNENC;
    +* else
    +* vap->iv_flags &= ~IEEE80211_F_DROPUNENC;
    +* break;
    +* case IEEE80211_PARAM_COUNTERMEASURES:
    +* if (value) {
    +* if ((vap->iv_flags & IEEE80211_F_WPA) == 0)
    +* return -EINVAL;
    +* vap->iv_flags |= IEEE80211_F_COUNTERM;
    +* } else
    +* vap->iv_flags &= ~IEEE80211_F_COUNTERM;
    +* break;
    +* case IEEE80211_PARAM_DRIVER_CAPS:
    +* vap->iv_caps = value; // NB: for testing
    +* break;
    +* case IEEE80211_PARAM_MACCMD:
    +* acl = vap->iv_acl;
    +* switch (value) {
    +* case IEEE80211_MACCMD_POLICY_OPEN:
    +* case IEEE80211_MACCMD_POLICY_ALLOW:
    +* case IEEE80211_MACCMD_POLICY_DENY:
    +* if (acl == NULL) {
    +* acl = ieee80211_aclator_get("mac");
    +* if (acl == NULL || !acl->iac_attach(vap))
    +* return -EINVAL;
    +* vap->iv_acl = acl;
    +* }
    +* acl->iac_setpolicy(vap, value);
    +* break;
    +* case IEEE80211_MACCMD_FLUSH:
    +* if (acl != NULL)
    +* acl->iac_flush(vap);
    +* // NB: silently ignore when not in use
    +* break;
    +* case IEEE80211_MACCMD_DETACH:
    +* if (acl != NULL) {
    +* vap->iv_acl = NULL;
    +* acl->iac_detach(vap);
    +* }
    +* break;
    +* }
    +* break;
    +* case IEEE80211_PARAM_WMM:
    +* if (ic->ic_caps & IEEE80211_C_WME){
    +* if (value) {
    +* vap->iv_flags |= IEEE80211_F_WME;
    +* *//* XXX needed by ic_reset *//*
    +* vap->iv_ic->ic_flags |= IEEE80211_F_WME;
    +* }
    +* else {
    +* *//* XXX needed by ic_reset *//*
    +* vap->iv_flags &= ~IEEE80211_F_WME;
    +* vap->iv_ic->ic_flags &= ~IEEE80211_F_WME;
    +* }
    +* retv = ENETRESET; // Renegotiate for capabilities
    +* }
    +* break;
    +* case IEEE80211_PARAM_HIDESSID:
    +* if (value)
    +* vap->iv_flags |= IEEE80211_F_HIDESSID;
    +* else
    +* vap->iv_flags &= ~IEEE80211_F_HIDESSID;
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_APBRIDGE:
    +* if (value == 0)
    +* vap->iv_flags |= IEEE80211_F_NOBRIDGE;
    +* else
    +* vap->iv_flags &= ~IEEE80211_F_NOBRIDGE;
    +* break;
    +* case IEEE80211_PARAM_INACT:
    +* vap->iv_inact_run = value / IEEE80211_INACT_WAIT;
    +* break;
    +* case IEEE80211_PARAM_INACT_AUTH:
    +* vap->iv_inact_auth = value / IEEE80211_INACT_WAIT;
    +* break;
    +* case IEEE80211_PARAM_INACT_INIT:
    +* vap->iv_inact_init = value / IEEE80211_INACT_WAIT;
    +* break;
    +* case IEEE80211_PARAM_ABOLT:
    +* caps = 0;
    +*
    +* // Map abolt settings to capability bits;
    +* // this also strips unknown/unwanted bits.
    +*
    +* if (value & IEEE80211_ABOLT_TURBO_PRIME)
    +* caps |= IEEE80211_ATHC_TURBOP;
    +* if (value & IEEE80211_ABOLT_COMPRESSION)
    +* caps |= IEEE80211_ATHC_COMP;
    +* if (value & IEEE80211_ABOLT_FAST_FRAME)
    +* caps |= IEEE80211_ATHC_FF;
    +* if (value & IEEE80211_ABOLT_XR)
    +* caps |= IEEE80211_ATHC_XR;
    +* if (value & IEEE80211_ABOLT_AR)
    +* caps |= IEEE80211_ATHC_AR;
    +* if (value & IEEE80211_ABOLT_BURST)
    +* caps |= IEEE80211_ATHC_BURST;
    +* if (value & IEEE80211_ABOLT_WME_ELE)
    +* caps |= IEEE80211_ATHC_WME;
    +* // verify requested capabilities are supported
    +* if ((caps & ic->ic_ath_cap) != caps)
    +* return -EINVAL;
    +* if (vap->iv_ath_cap != caps) {
    +* if ((vap->iv_ath_cap ^ caps) & IEEE80211_ATHC_TURBOP) {
    +* if (ieee80211_set_turbo(dev,
    +* caps & IEEE80211_ATHC_TURBOP))
    +* return -EINVAL;
    +* ieee80211_scan_flush(ic);
    +* }
    +* vap->iv_ath_cap = caps;
    +* ic->ic_athcapsetup(vap->iv_ic, vap->iv_ath_cap);
    +* retv = ENETRESET;
    +* }
    +* break;
    +* case IEEE80211_PARAM_DTIM_PERIOD:
    +* if (vap->iv_opmode != IEEE80211_M_HOSTAP &&
    +* vap->iv_opmode != IEEE80211_M_IBSS)
    +* return -EINVAL;
    +* if (IEEE80211_DTIM_MIN <= value &&
    +* value <= IEEE80211_DTIM_MAX) {
    +* vap->iv_dtim_period = value;
    +* retv = ENETRESET; // requires restart
    +* } else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_BEACON_INTERVAL:
    +* if (vap->iv_opmode != IEEE80211_M_HOSTAP &&
    +* vap->iv_opmode != IEEE80211_M_IBSS)
    +* return -EINVAL;
    +* if (IEEE80211_BINTVAL_MIN <= value &&
    +* value <= IEEE80211_BINTVAL_MAX) {
    +* ic->ic_lintval = value; // XXX multi-bss
    +* retv = ENETRESET; // requires restart
    +* } else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_DOTH:
    +* if (value) {
    +* ic->ic_flags |= IEEE80211_F_DOTH;
    +* }
    +* else
    +* ic->ic_flags &= ~IEEE80211_F_DOTH;
    +* retv = ENETRESET; // XXX: need something this drastic?
    +* break;
    +* case IEEE80211_PARAM_PWRTARGET:
    +* ic->ic_curchanmaxpwr = value;
    +* break;
    +* case IEEE80211_PARAM_GENREASSOC:
    +* IEEE80211_SEND_MGMT(vap->iv_bss,
    +* IEEE80211_FC0_SUBTYPE_REASSOC_REQ, 0);
    +* break;
    +* case IEEE80211_PARAM_COMPRESSION:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_COMP, value);
    +* break;
    +* case IEEE80211_PARAM_WMM_AGGRMODE:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_WME, value);
    +* break;
    +* case IEEE80211_PARAM_FF:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_FF, value);
    +* break;
    +* case IEEE80211_PARAM_TURBO:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_TURBOP, value);
    +* if (retv == ENETRESET) {
    +* if(ieee80211_set_turbo(dev,value))
    +* return -EINVAL;
    +* ieee80211_scan_flush(ic);
    +* }
    +* break;
    +* case IEEE80211_PARAM_XR:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_XR, value);
    +* break;
    +* case IEEE80211_PARAM_BURST:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_BURST, value);
    +* break;
    +* case IEEE80211_PARAM_AR:
    +* retv = ieee80211_setathcap(vap, IEEE80211_ATHC_AR, value);
    +* break;
    +* case IEEE80211_PARAM_PUREG:
    +* if (value)
    +* vap->iv_flags |= IEEE80211_F_PUREG;
    +* else
    +* vap->iv_flags &= ~IEEE80211_F_PUREG;
    +* // NB: reset only if we're operating on an 11g channel
    +* if (ic->ic_bsschan != IEEE80211_CHAN_ANYC &&
    +* IEEE80211_IS_CHAN_ANYG(ic->ic_bsschan))
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_WDS:
    +* if (value)
    +* vap->iv_flags_ext |= IEEE80211_FEXT_WDS;
    +* else
    +* vap->iv_flags_ext &= ~IEEE80211_FEXT_WDS;
    +* break;
    +* case IEEE80211_PARAM_BGSCAN:
    +* if (value) {
    +* if ((vap->iv_caps & IEEE80211_C_BGSCAN) == 0)
    +* return -EINVAL;
    +* vap->iv_flags |= IEEE80211_F_BGSCAN;
    +* } else {
    +* // XXX racey?
    +* vap->iv_flags &= ~IEEE80211_F_BGSCAN;
    +* ieee80211_cancel_scan(vap); // anything current
    +* }
    +* break;
    +* case IEEE80211_PARAM_BGSCAN_IDLE:
    +* if (value >= IEEE80211_BGSCAN_IDLE_MIN)
    +* vap->iv_bgscanidle = value*HZ/1000;
    +* else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_BGSCAN_INTERVAL:
    +* if (value >= IEEE80211_BGSCAN_INTVAL_MIN)
    +* vap->iv_bgscanintvl = value*HZ;
    +* else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_MCAST_RATE:
    +* // units are in KILObits per second
    +* if (value >= 256 && value <= 54000)
    +* vap->iv_mcast_rate = value;
    +* else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_COVERAGE_CLASS:
    +* if (value >= 0 && value <= IEEE80211_COVERAGE_CLASS_MAX) {
    +* ic->ic_coverageclass = value;
    +* if (IS_UP_AUTO(vap))
    +* ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
    +* retv = 0;
    +* }
    +* else
    +* retv = EINVAL;
    +* break;
    +* case IEEE80211_PARAM_COUNTRY_IE:
    +* if (value)
    +* ic->ic_flags_ext |= IEEE80211_FEXT_COUNTRYIE;
    +* else
    +* ic->ic_flags_ext &= ~IEEE80211_FEXT_COUNTRYIE;
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_REGCLASS:
    +* if (value)
    +* ic->ic_flags_ext |= IEEE80211_FEXT_REGCLASS;
    +* else
    +* ic->ic_flags_ext &= ~IEEE80211_FEXT_REGCLASS;
    +* retv = ENETRESET;
    +* break;
    +* case IEEE80211_PARAM_SCANVALID:
    +* vap->iv_scanvalid = value*HZ;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RSSI_11A:
    +* vap->iv_roam.rssi11a = value;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RSSI_11B:
    +* vap->iv_roam.rssi11bOnly = value;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RSSI_11G:
    +* vap->iv_roam.rssi11b = value;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RATE_11A:
    +* vap->iv_roam.rate11a = value;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RATE_11B:
    +* vap->iv_roam.rate11bOnly = value;
    +* break;
    +* case IEEE80211_PARAM_ROAM_RATE_11G:
    +* vap->iv_roam.rate11b = value;
    +* break;
    +* case IEEE80211_PARAM_UAPSDINFO:
    +* if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
    +* if (ic->ic_caps & IEEE80211_C_UAPSD) {
    +* if (value)
    +* IEEE80211_VAP_UAPSD_ENABLE(vap);
    +* else
    +* IEEE80211_VAP_UAPSD_DISABLE(vap);
    +* retv = ENETRESET;
    +* }
    +* }
    +* else if (vap->iv_opmode == IEEE80211_M_STA) {
    +* vap->iv_uapsdinfo = value;
    +* IEEE80211_VAP_UAPSD_ENABLE(vap);
    +* retv = ENETRESET;
    +* }
    +* break;
    +* case IEEE80211_PARAM_SLEEP:
    +* // XXX: Forced sleep for testing. Does not actually place the
    +* // HW in sleep mode yet. this only makes sense for STAs.
    +*
    +* if (value) {
    +* // goto sleep
    +* IEEE80211_VAP_GOTOSLEEP(vap);
    +* }
    +* else {
    +* // wakeup
    +* IEEE80211_VAP_WAKEUP(vap);
    +* }
    +* ieee80211_send_nulldata(ieee80211_ref_node(vap->iv_bss));
    +* break;
    +* case IEEE80211_PARAM_QOSNULL:
    +* // Force a QoS Null for testing.
    +* ieee80211_send_qosnulldata(vap->iv_bss, value);
    +* break;
    +* case IEEE80211_PARAM_PSPOLL:
    +* // Force a PS-POLL for testing.
    +* ieee80211_send_pspoll(vap->iv_bss);
    +* break;
    +* case IEEE80211_PARAM_EOSPDROP:
    +* if (vap->iv_opmode == IEEE80211_M_HOSTAP) {
    +* if (value) IEEE80211_VAP_EOSPDROP_ENABLE(vap);
    +* else IEEE80211_VAP_EOSPDROP_DISABLE(vap);
    +* }
    +* break;
    +* case IEEE80211_PARAM_MARKDFS:
    +* if (value)
    +* ic->ic_flags_ext |= IEEE80211_FEXT_MARKDFS;
    +* else
    +* ic->ic_flags_ext &= ~IEEE80211_FEXT_MARKDFS;
    +* break;
    +* case IEEE80211_PARAM_CHANBW:
    +* switch (value) {
    +* case 0:
    +* ic->ic_chanbwflag = 0;
    +* break;
    +* case 1:
    +* ic->ic_chanbwflag = IEEE80211_CHAN_HALF;
    +* break;
    +* case 2:
    +* ic->ic_chanbwflag = IEEE80211_CHAN_QUARTER;
    +* break;
    +* default:
    +* retv = EINVAL;
    +* break;
    +* }
    +* break;
    +* case IEEE80211_PARAM_SHORTPREAMBLE:
    +* if (value) {
    +* ic->ic_caps |= IEEE80211_C_SHPREAMBLE;
    +* } else {
    +* ic->ic_caps &= ~IEEE80211_C_SHPREAMBLE;
    +* }
    +* retv = ENETRESET;
    +* break;
    +* default:
    +* retv = EOPNOTSUPP;
    +* break;
    +* }
    +* // XXX should any of these cause a rescan?
    +* if (retv == ENETRESET)
    +* retv = IS_UP_AUTO(vap) ? ieee80211_open(vap->iv_dev) : 0;
    +* return -retv;
    +*}
    +*/

    int usbdrvwext_setmode(struct net_device *dev, struct iw_request_info *info,
    - void *w, char *extra)
    + void *w, char *extra)
    {
    return 0;
    }
    @@ -1947,158 +1887,139 @@ int usbdrvwext_setmode(struct net_device
    int usbdrvwext_getmode(struct net_device *dev, struct iw_request_info *info,
    void *w, char *extra)
    {
    - //struct usbdrv_private *macp = dev->ml_priv;
    + /* struct usbdrv_private *macp = dev->ml_priv; */
    struct iw_point *wri = (struct iw_point *)extra;
    char mode[8];

    - strcpy(mode,"11g");
    - return (copy_to_user(wri->pointer, mode, 6) ? -EFAULT : 0);
    + strcpy(mode, "11g");
    + return copy_to_user(wri->pointer, mode, 6) ? -EFAULT : 0;
    }

    int zfLnxPrivateIoctl(struct net_device *dev, struct zdap_ioctl* zdreq)
    {
    - //void* regp = macp->regp;
    + /* void* regp = macp->regp; */
    u16_t cmd;
    - //u32_t temp;
    - u32_t* p;
    + /* u32_t temp; */
    + u32_t *p;
    u32_t i;

    cmd = zdreq->cmd;
    - switch(cmd)
    - {
    + switch (cmd) {
    case ZM_IOCTL_REG_READ:
    zfiDbgReadReg(dev, zdreq->addr);
    break;
    -
    case ZM_IOCTL_REG_WRITE:
    zfiDbgWriteReg(dev, zdreq->addr, zdreq->value);
    break;
    -
    case ZM_IOCTL_MEM_READ:
    p = (u32_t *) bus_to_virt(zdreq->addr);
    - printk(KERN_DEBUG "usbdrv: read memory addr: 0x%08x value: 0x%08x\n", zdreq->addr, *p);
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "usbdrv: read memory addr: 0x%08x value:
    + " 0x%08x\n", zdreq->addr, *p);
    break;
    -
    case ZM_IOCTL_MEM_WRITE:
    p = (u32_t *) bus_to_virt(zdreq->addr);
    *p = zdreq->value;
    - printk(KERN_DEBUG "usbdrv: write value: 0x%08x to memory addr: 0x%08x\n", zdreq->value, zdreq->addr);
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "usbdrv : write value : 0x%08x to memory addr :
    + " 0x%08x\n", zdreq->value, zdreq->addr);
    break;
    -
    - case ZM_IOCTL_TALLY :
    + case ZM_IOCTL_TALLY:
    zfiWlanShowTally(dev);
    if (zdreq->addr)
    zfiWlanResetTally(dev);
    break;
    + case ZM_IOCTL_TEST:
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "ZM_IOCTL_TEST:len=%d\n", zdreq->addr);
    + /* zfiWlanReadReg(dev, 0x10f400); */
    + /* zfiWlanReadReg(dev, 0x10f404); */
    + printk(DEFAULT_MESSAGE_LOGLEVEL "IOCTL TEST\n");
    + #if 1
    + /* print packet */
    + for (i = 0; i < zdreq->addr; i++) {
    + if ((i&0x7) == 0)
    + printk(DEFAULT_MESSAGE_LOGLEVEL "\n");
    + printk(DEFAULT_MESSAGE_LOGLEVEL "%02X ",
    + (unsigned char)zdreq->data[i]);
    + }
    + printk(DEFAULT_MESSAGE_LOGLEVEL "\n");
    + #endif

    - case ZM_IOCTL_TEST :
    - printk(KERN_DEBUG "ZM_IOCTL_TEST:len=%d\n", zdreq->addr);
    - //zfiWlanReadReg(dev, 0x10f400);
    - //zfiWlanReadReg(dev, 0x10f404);
    - printk("IOCTL TEST\n");
    - #if 1
    - //print packet
    - for (i=0; i<zdreq->addr; i++)
    - {
    - if ((i&0x7) == 0)
    - {
    - printk("\n");
    - }
    - printk("%02X ", (unsigned char)zdreq->data[i]);
    - }
    - printk("\n");
    - #endif
    -
    -
    - #if 0 //For Test?? 1 to 0 by CWYang(-)
    - {
    - struct sk_buff* s;
    -
    - /* Allocate a skb */
    - s = alloc_skb(2000, GFP_ATOMIC);
    -
    - /* Copy data to skb */
    - for (i=0; i<zdreq->addr; i++)
    - {
    - s->data[i] = zdreq->data[i];
    - }
    - s->len = zdreq->addr;
    -
    - /* Call zfIdlRecv() */
    - zfiRecv80211(dev, s, NULL);
    - }
    - #endif
    -
    - break;
    -
    -
    -/****************************** ZDCONFIG ******************************/
    - case ZM_IOCTL_FRAG :
    - zfiWlanSetFragThreshold(dev, zdreq->addr);
    - break;
    -
    - case ZM_IOCTL_RTS :
    - zfiWlanSetRtsThreshold(dev, zdreq->addr);
    - break;
    -
    - case ZM_IOCTL_SCAN :
    - zfiWlanScan(dev);
    - break;
    -
    - case ZM_IOCTL_KEY :
    - {
    - u8_t key[29];
    - struct zsKeyInfo keyInfo;
    - u32_t i;
    -
    - for (i=0; i<29; i++)
    - {
    - key[i] = 0;
    - }
    -
    - for (i=0; i<zdreq->addr; i++)
    - {
    - key[i] = zdreq->data[i];
    - }
    -
    - printk("key len=%d, key=%02x%02x%02x%02x%02x...\n",
    - zdreq->addr, key[0], key[1], key[2], key[3], key[4]);
    -
    - keyInfo.keyLength = zdreq->addr;
    - keyInfo.keyIndex = 0;
    - keyInfo.flag = 0;
    - keyInfo.key = key;
    - zfiWlanSetKey(dev, keyInfo);
    - }
    - break;
    -
    - case ZM_IOCTL_RATE :
    - zfiWlanSetTxRate(dev, zdreq->addr);
    - break;
    -
    - case ZM_IOCTL_ENCRYPTION_MODE :
    - zfiWlanSetEncryMode(dev, zdreq->addr);
    -
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - break;
    - //CWYang(+)
    - case ZM_IOCTL_SIGNAL_STRENGTH :
    - {
    - u8_t buffer[2];
    - zfiWlanQuerySignalInfo(dev, &buffer[0]);
    - printk("Current Signal Strength : %02d\n", buffer[0]);
    - }
    - break;
    - //CWYang(+)
    - case ZM_IOCTL_SIGNAL_QUALITY :
    - {
    - u8_t buffer[2];
    - zfiWlanQuerySignalInfo(dev, &buffer[0]);
    - printk("Current Signal Quality : %02d\n", buffer[1]);
    - }
    - break;
    + /* For Test?? 1 to 0 by CWYang(-) */
    + #if 0 {
    + struct sk_buff *s;
    +
    + /* Allocate a skb */
    + s = alloc_skb(2000, GFP_ATOMIC);
    +
    + /* Copy data to skb */
    + for (i = 0; i < zdreq->addr; i++)
    + s->data[i] = zdreq->data[i];
    + s->len = zdreq->addr;
    +
    + /* Call zfIdlRecv() */
    + zfiRecv80211(dev, s, NULL);
    + }
    + #endif
    + break;
    + /************************* ZDCONFIG ***************************/
    + case ZM_IOCTL_FRAG:
    + zfiWlanSetFragThreshold(dev, zdreq->addr);
    + break;
    + case ZM_IOCTL_RTS:
    + zfiWlanSetRtsThreshold(dev, zdreq->addr);
    + break;
    + case ZM_IOCTL_SCAN:
    + zfiWlanScan(dev);
    + break;
    + case ZM_IOCTL_KEY: {
    + u8_t key[29];
    + struct zsKeyInfo keyInfo;
    + u32_t i;
    +
    + for (i = 0; i < 29; i++)
    + key[i] = 0;
    +
    + for (i = 0; i < zdreq->addr; i++)
    + key[i] = zdreq->data[i];
    +
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "key len=%d, key=%02x%02x%02x%02x%02x...\n",
    + zdreq->addr, key[0], key[1], key[2], key[3], key[4]);
    +
    + keyInfo.keyLength = zdreq->addr;
    + keyInfo.keyIndex = 0;
    + keyInfo.flag = 0;
    + keyInfo.key = key;
    + zfiWlanSetKey(dev, keyInfo);
    + }
    + break;
    + case ZM_IOCTL_RATE:
    + zfiWlanSetTxRate(dev, zdreq->addr);
    + break;
    + case ZM_IOCTL_ENCRYPTION_MODE:
    + zfiWlanSetEncryMode(dev, zdreq->addr);

    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + break;
    + /* CWYang(+) */
    + case ZM_IOCTL_SIGNAL_STRENGTH: {
    + u8_t buffer[2];
    + zfiWlanQuerySignalInfo(dev, &buffer[0]);
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "Current Signal Strength : %02d\n", buffer[0]);
    + }
    + break;
    + /* CWYang(+) */
    + case ZM_IOCTL_SIGNAL_QUALITY: {
    + u8_t buffer[2];
    + zfiWlanQuerySignalInfo(dev, &buffer[0]);
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "Current Signal Quality : %02d\n", buffer[1]);
    + }
    + break;
    case ZM_IOCTL_SET_PIBSS_MODE:
    if (zdreq->addr == 1)
    zfiWlanSetWlanMode(dev, ZM_MODE_PSEUDO);
    @@ -2107,11 +2028,9 @@ int zfLnxPrivateIoctl(struct net_device

    zfiWlanDisable(dev, 0);
    zfiWlanEnable(dev);
    -
    break;
    -/****************************** ZDCONFIG ******************************/
    -
    - default :
    + /********************* ZDCONFIG ***********************/
    + default:
    printk(KERN_ERR "usbdrv: error command = %x\n", cmd);
    break;
    }
    @@ -2121,793 +2040,736 @@ int zfLnxPrivateIoctl(struct net_device

    int usbdrv_wpa_ioctl(struct net_device *dev, struct athr_wlan_param *zdparm)
    {
    - int ret = 0;
    - u8_t bc_addr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    - u8_t mac_addr[80];
    - struct zsKeyInfo keyInfo;
    - struct usbdrv_private *macp = dev->ml_priv;
    - u16_t vapId = 0;
    -
    - //zmw_get_wlan_dev(dev);
    -
    - switch(zdparm->cmd)
    - {
    - case ZD_CMD_SET_ENCRYPT_KEY:
    -
    - /* Set up key information */
    - keyInfo.keyLength = zdparm->u.crypt.key_len;
    - keyInfo.keyIndex = zdparm->u.crypt.idx;
    - if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) // AP Mode
    - keyInfo.flag = ZM_KEY_FLAG_AUTHENTICATOR;
    - else
    - keyInfo.flag = 0;
    - keyInfo.key = zdparm->u.crypt.key;
    - keyInfo.initIv = zdparm->u.crypt.seq;
    - keyInfo.macAddr = (u16_t *)zdparm->sta_addr;
    -
    - /* Identify the MAC address information */
    - if (memcmp(zdparm->sta_addr, bc_addr, sizeof(bc_addr)) == 0)
    - {
    - keyInfo.flag |= ZM_KEY_FLAG_GK;
    - }
    - else
    - {
    - keyInfo.flag |= ZM_KEY_FLAG_PK;
    - }
    -
    - if (!strcmp(zdparm->u.crypt.alg, "NONE"))
    - {
    - //u8_t zero_mac[]={0,0,0,0,0,0};
    -
    - /* Set key length to zero */
    - keyInfo.keyLength = 0;
    -
    - if (zdparm->sta_addr[0] & 1)//del group key
    - {
    - //if (macp->cardSetting.WPAIeLen==0)
    - //{//802.1x dynamic WEP
    - // mDynKeyMode = 0;
    - // mKeyFormat[0] = 0;
    - // mPrivacyInvoked[0]=FALSE;
    - // mCap[0] &= ~CAP_PRIVACY;
    - // macp->cardSetting.EncryOnOff[0]=0;
    - //}
    - //mWpaBcKeyLen = mGkInstalled = 0;
    - }
    - else
    - {
    - //if (memcmp(zero_mac,zdparm->sta_addr, 6)==0)
    - //{
    - // mDynKeyMode=0;
    - // mKeyFormat[0]=0;
    - // pSetting->DynKeyMode=0;
    - // pSetting->EncryMode[0]=0;
    - // mDynKeyMode=0;
    - //}
    - }
    -
    - printk(KERN_ERR "Set Encryption Type NONE\n");
    - return ret;
    - }
    - else if (!strcmp(zdparm->u.crypt.alg, "TKIP"))
    - {
    - zfiWlanSetEncryMode(dev, ZM_TKIP);
    - //Linux Supplicant will inverse Tx/Rx key
    - //So we inverse it back //CWYang(+)
    - //zfMemoryCopy(&temp[0], &keyInfo.key[16], 8);
    - //zfMemoryCopy(&keyInfo.key[16], keyInfo.key[24], 8);
    - //zfMemoryCopy(&keyInfo.key[24], &temp[0], 8);
    - //u8_t temp;
    - //int k;
    - //for (k = 0; k < 8; k++)
    - //{
    - // temp = keyInfo.key[16 + k];
    - // keyInfo.key[16 + k] = keyInfo.key[24 + k];
    - // keyInfo.key[24 + k] = temp;
    - //}
    - //CamEncryType = ZM_TKIP;
    - ////if (idx == 0)
    - //{// Pairwise key
    - // mKeyFormat[0] = CamEncryType;
    - // mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_TKIP;
    - //}
    - }
    - else if (!strcmp(zdparm->u.crypt.alg, "CCMP"))
    - {
    - zfiWlanSetEncryMode(dev, ZM_AES);
    - //CamEncryType = ZM_AES;
    - ////if (idx == 0)
    - //{// Pairwise key
    - // mKeyFormat[0] = CamEncryType;
    - // mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_AES;
    - //}
    - }
    - else if (!strcmp(zdparm->u.crypt.alg, "WEP"))
    - {
    - if (keyInfo.keyLength == 5)
    - { // WEP 64
    - zfiWlanSetEncryMode(dev, ZM_WEP64);
    - // CamEncryType = ZM_WEP64;
    - // tmpDynKeyMode=DYN_KEY_WEP64;
    - }
    - else if (keyInfo.keyLength == 13)
    - {//keylen=13, WEP 128
    - zfiWlanSetEncryMode(dev, ZM_WEP128);
    - // CamEncryType = ZM_WEP128;
    - // tmpDynKeyMode=DYN_KEY_WEP128;
    - }
    - else
    - {
    - zfiWlanSetEncryMode(dev, ZM_WEP256);
    - }
    -
    - // For Dynamic WEP key (Non-WPA Radius), the key ID range: 0-3
    - // In WPA/RSN mode, the key ID range: 1-3, usually, a broadcast key.
    - // For WEP key setting: we set mDynKeyMode and mKeyFormat in following case:
    - // 1. For 802.1x dynamically generated WEP key method.
    - // 2. For WPA/RSN mode, but key id == 0. (But this is an impossible case)
    - // So, only check case 1.
    - //if (macp->cardSetting.WPAIeLen==0)
    - //{
    - // mKeyFormat[0] = CamEncryType;
    - // mDynKeyMode = pSetting->DynKeyMode = tmpDynKeyMode;
    - // mPrivacyInvoked[0]=TRUE;
    - // mCap[0] |= CAP_PRIVACY;
    - // macp->cardSetting.EncryOnOff[0]=1;
    - //}
    - }
    -
    - /* DUMP key context */
    -//#ifdef WPA_DEBUG
    - if (keyInfo.keyLength > 0)
    - {
    - int ii;
    - printk("Otus: Key Context:\n");
    - for(ii = 0; ii < keyInfo.keyLength;)
    - {
    - printk("0x%02x ", keyInfo.key[ii]);
    - if((++ii % 16) == 0)
    - printk("\n");
    - }
    - printk("\n");
    - }
    -//#endif
    -
    - /* Set encrypt mode */
    - //zfiWlanSetEncryMode(dev, CamEncryType);
    - vapId = zfLnxGetVapId(dev);
    - if (vapId == 0xffff)
    - keyInfo.vapId = 0;
    - else
    - keyInfo.vapId = vapId + 1;
    - keyInfo.vapAddr[0] = keyInfo.macAddr[0];
    - keyInfo.vapAddr[1] = keyInfo.macAddr[1];
    - keyInfo.vapAddr[2] = keyInfo.macAddr[2];
    -
    - zfiWlanSetKey(dev, keyInfo);
    -
    - //zfiWlanDisable(dev);
    - //zfiWlanEnable(dev);
    - break;
    -
    - case ZD_CMD_SET_MLME:
    - printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_SET_MLME\n");
    -
    - /* Translate STA's address */
    - sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x", zdparm->sta_addr[0], zdparm->sta_addr[1],
    - zdparm->sta_addr[2], zdparm->sta_addr[3], zdparm->sta_addr[4], zdparm->sta_addr[5]);
    -
    - switch(zdparm->u.mlme.cmd)
    - {
    - case MLME_STA_DEAUTH:
    - printk(" -------Call zfiWlanDeauth, reason:%d\n",zdparm->u.mlme.reason_code);
    - if(zfiWlanDeauth(dev, (u16_t*) zdparm->sta_addr, zdparm->u.mlme.reason_code) != 0)
    - printk(KERN_ERR "Can't deauthencate STA: %s\n", mac_addr);
    - else
    - printk(KERN_ERR "Deauthenticate STA: %s with reason code: %d\n", mac_addr, zdparm->u.mlme.reason_code);
    - break;
    -
    - case MLME_STA_DISASSOC:
    - printk(" -------Call zfiWlanDeauth, reason:%d\n",zdparm->u.mlme.reason_code);
    - if(zfiWlanDeauth(dev, (u16_t*) zdparm->sta_addr, zdparm->u.mlme.reason_code) != 0)
    - printk(KERN_ERR "Can't disassociate STA: %s\n", mac_addr);
    - else
    - printk(KERN_ERR "Disassociate STA: %s with reason code: %d\n", mac_addr, zdparm->u.mlme.reason_code);
    - break;
    -
    - default:
    - printk(KERN_ERR "MLME command: 0x%04x not support\n", zdparm->u.mlme.cmd);
    - break;
    - }
    -
    - break;
    -
    - case ZD_CMD_SCAN_REQ:
    - printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_SCAN_REQ\n");
    - break;
    -
    - case ZD_CMD_SET_GENERIC_ELEMENT:
    - printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_SET_GENERIC_ELEMENT\n");
    -
    - /* Copy the WPA IE */
    - //zm_msg1_mm(ZM_LV_0, "CWY - wpaie Length : ", zdparm->u.generic_elem.len);
    - printk(KERN_ERR "wpaie Length : %d\n", zdparm->u.generic_elem.len);
    - if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) // AP Mode
    - {
    - zfiWlanSetWpaIe(dev, zdparm->u.generic_elem.data, zdparm->u.generic_elem.len);
    - }
    - else
    - {
    - macp->supLen = zdparm->u.generic_elem.len;
    - memcpy(macp->supIe, zdparm->u.generic_elem.data, zdparm->u.generic_elem.len);
    - }
    - zfiWlanSetWpaSupport(dev, 1);
    - //zfiWlanSetWpaIe(dev, zdparm->u.generic_elem.data, zdparm->u.generic_elem.len);
    - {
    - int ii;
    - u8_t len = zdparm->u.generic_elem.len;
    - u8_t *wpaie = (u8_t *)zdparm->u.generic_elem.data;
    -
    - printk(KERN_ERR "wd->ap.wpaLen: %d\n", len);
    -
    - /* DUMP WPA IE */
    - for(ii = 0; ii < len;)
    - {
    - printk(KERN_ERR "0x%02x ", wpaie[ii]);
    -
    - if((++ii % 16) == 0)
    - printk(KERN_ERR "\n");
    - }
    - printk(KERN_ERR "\n");
    - }
    -
    -// #ifdef ZM_HOSTAPD_SUPPORT
    - //if (wd->wlanMode == ZM_MODE_AP)
    - //{// Update Beacon FIFO in the next TBTT.
    - // memcpy(&mWPAIe, pSetting->WPAIe, pSetting->WPAIeLen);
    - // printk(KERN_ERR "Copy WPA IE into mWPAIe\n");
    - //}
    -// #endif
    - break;
    -
    -// #ifdef ZM_HOSTAPD_SUPPORT
    - case ZD_CMD_GET_TSC:
    - printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_GET_TSC\n");
    - break;
    -// #endif
    -
    - default:
    - printk(KERN_ERR "usbdrv_wpa_ioctl default: 0x%04x\n", zdparm->cmd);
    - ret = -EINVAL;
    - break;
    - }
    + int ret = 0;
    + u8_t bc_addr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    + u8_t mac_addr[80];
    + struct zsKeyInfo keyInfo;
    + struct usbdrv_private *macp = dev->ml_priv;
    + u16_t vapId = 0;
    +
    + /* zmw_get_wlan_dev(dev); */
    +
    + switch (zdparm->cmd) {
    + case ZD_CMD_SET_ENCRYPT_KEY:
    + /* Set up key information */
    + keyInfo.keyLength = zdparm->u.crypt.key_len;
    + keyInfo.keyIndex = zdparm->u.crypt.idx;
    + if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) {
    + /* AP Mode */
    + keyInfo.flag = ZM_KEY_FLAG_AUTHENTICATOR;
    + } else
    + keyInfo.flag = 0;
    + keyInfo.key = zdparm->u.crypt.key;
    + keyInfo.initIv = zdparm->u.crypt.seq;
    + keyInfo.macAddr = (u16_t *)zdparm->sta_addr;
    +
    + /* Identify the MAC address information */
    + if (memcmp(zdparm->sta_addr, bc_addr, sizeof(bc_addr)) == 0)
    + keyInfo.flag |= ZM_KEY_FLAG_GK;
    + else
    + keyInfo.flag |= ZM_KEY_FLAG_PK;
    +
    + if (!strcmp(zdparm->u.crypt.alg, "NONE")) {
    + /* u8_t zero_mac[]={0,0,0,0,0,0}; */
    +
    + /* Set key length to zero */
    + keyInfo.keyLength = 0;
    +
    + /* del group key */
    + if (zdparm->sta_addr[0] & 1) {
    + /* if (macp->cardSetting.WPAIeLen==0)
    + * { 802.1x dynamic WEP
    + * mDynKeyMode = 0;
    + * mKeyFormat[0] = 0;
    + * mPrivacyInvoked[0]=FALSE;
    + * mCap[0] &= ~CAP_PRIVACY;
    + * macp->cardSetting.EncryOnOff[0]=0;
    + * }
    + * mWpaBcKeyLen = mGkInstalled = 0;
    + */
    + } else {
    + /* if (memcmp(zero_mac,zdparm->sta_addr, 6)==0)
    + * {
    + * mDynKeyMode=0;
    + * mKeyFormat[0]=0;
    + * pSetting->DynKeyMode=0;
    + * pSetting->EncryMode[0]=0;
    + * mDynKeyMode=0;
    + * }
    + */
    + }
    +
    + printk(KERN_ERR "Set Encryption Type NONE\n");
    + return ret;
    + } else if (!strcmp(zdparm->u.crypt.alg, "TKIP")) {
    + zfiWlanSetEncryMode(dev, ZM_TKIP);
    + /* //Linux Supplicant will inverse Tx/Rx key
    + * //So we inverse it back, CWYang(+)
    + * zfMemoryCopy(&temp[0], &keyInfo.key[16], 8);
    + * zfMemoryCopy(&keyInfo.key[16], keyInfo.key[24], 8);
    + * zfMemoryCopy(&keyInfo.key[24], &temp[0], 8);
    + * u8_t temp;
    + * int k;
    + * for (k = 0; k < 8; k++)
    + * {
    + * temp = keyInfo.key[16 + k];
    + * keyInfo.key[16 + k] = keyInfo.key[24 + k];
    + * keyInfo.key[24 + k] = temp;
    + * }
    + * CamEncryType = ZM_TKIP;
    + * if (idx == 0)
    + * { // Pairwise key
    + * mKeyFormat[0] = CamEncryType;
    + * mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_TKIP;
    + * }
    + */
    + } else if (!strcmp(zdparm->u.crypt.alg, "CCMP")) {
    + zfiWlanSetEncryMode(dev, ZM_AES);
    + /* CamEncryType = ZM_AES;
    + * if (idx == 0)
    + * { // Pairwise key
    + * mKeyFormat[0] = CamEncryType;
    + * mDynKeyMode = pSetting->DynKeyMode = DYN_KEY_AES;
    + * }
    + */
    + } else if (!strcmp(zdparm->u.crypt.alg, "WEP")) {
    + if (keyInfo.keyLength == 5) {
    + /* WEP 64 */
    + zfiWlanSetEncryMode(dev, ZM_WEP64);
    + /* CamEncryType = ZM_WEP64; */
    + /* tmpDynKeyMode=DYN_KEY_WEP64; */
    + } else if (keyInfo.keyLength == 13) {
    + /* keylen=13, WEP 128 */
    + zfiWlanSetEncryMode(dev, ZM_WEP128);
    + /* CamEncryType = ZM_WEP128; */
    + /* tmpDynKeyMode=DYN_KEY_WEP128; */
    + } else {
    + zfiWlanSetEncryMode(dev, ZM_WEP256);
    + }
    +
    + /* For Dynamic WEP key (Non-WPA Radius), the key ID range: 0-3
    + * In WPA/RSN mode, the key ID range: 1-3, usually, a broadcast key.
    + * For WEP key setting: we set mDynKeyMode and mKeyFormat in following
    + * case:
    + * 1. For 802.1x dynamically generated WEP key method.
    + * 2. For WPA/RSN mode, but key id == 0.
    + * (But this is an impossible case)
    + * So, only check case 1.
    + * if (macp->cardSetting.WPAIeLen==0)
    + * {
    + * mKeyFormat[0] = CamEncryType;
    + * mDynKeyMode = pSetting->DynKeyMode = tmpDynKeyMode;
    + * mPrivacyInvoked[0]=TRUE;
    + * mCap[0] |= CAP_PRIVACY;
    + * macp->cardSetting.EncryOnOff[0]=1;
    + * }
    + */
    + }
    +
    + /* DUMP key context */
    + /* #ifdef WPA_DEBUG */
    + if (keyInfo.keyLength > 0) {
    + int ii;
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "Otus: Key Context:\n");
    + for (ii = 0; ii < keyInfo.keyLength; ) {
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + "0x%02x ", keyInfo.key[ii]);
    + if ((++ii % 16) == 0)
    + printk(DEFAULT_MESSAGE_LOGLEVEL "\n");
    + }
    + printk(DEFAULT_MESSAGE_LOGLEVEL "\n");
    + }
    + /* #endif */
    +
    + /* Set encrypt mode */
    + /* zfiWlanSetEncryMode(dev, CamEncryType); */
    + vapId = zfLnxGetVapId(dev);
    + if (vapId == 0xffff)
    + keyInfo.vapId = 0;
    + else
    + keyInfo.vapId = vapId + 1;
    + keyInfo.vapAddr[0] = keyInfo.macAddr[0];
    + keyInfo.vapAddr[1] = keyInfo.macAddr[1];
    + keyInfo.vapAddr[2] = keyInfo.macAddr[2];

    - return ret;
    + zfiWlanSetKey(dev, keyInfo);
    +
    + /* zfiWlanDisable(dev); */
    + /* zfiWlanEnable(dev); */
    + break;
    + case ZD_CMD_SET_MLME:
    + printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_SET_MLME\n");
    +
    + /* Translate STA's address */
    + sprintf(mac_addr, "%02x:%02x:%02x:%02x:%02x:%02x",
    + zdparm->sta_addr[0], zdparm->sta_addr[1],
    + zdparm->sta_addr[2], zdparm->sta_addr[3],
    + zdparm->sta_addr[4], zdparm->sta_addr[5]);
    +
    + switch (zdparm->u.mlme.cmd) {
    + case MLME_STA_DEAUTH:
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + " -------Call zfiWlanDeauth, reason:%d\n",
    + zdparm->u.mlme.reason_code);
    + if (zfiWlanDeauth(dev, (u16_t *) zdparm->sta_addr,
    + zdparm->u.mlme.reason_code) != 0)
    + printk(KERN_ERR "Can't deauthencate STA: %s\n",
    + mac_addr);
    + else
    + printk(KERN_ERR "Deauthenticate STA: %s"
    + "with reason code: %d\n",
    + mac_addr, zdparm->u.mlme.reason_code);
    + break;
    + case MLME_STA_DISASSOC:
    + printk(DEFAULT_MESSAGE_LOGLEVEL
    + " -------Call zfiWlanDeauth, reason:%d\n",
    + zdparm->u.mlme.reason_code);
    + if (zfiWlanDeauth(dev, (u16_t *) zdparm->sta_addr,
    + zdparm->u.mlme.reason_code) != 0)
    + printk(KERN_ERR "Can't disassociate STA: %s\n",
    + mac_addr);
    + else
    + printk(KERN_ERR "Disassociate STA: %s"
    + "with reason code: %d\n",
    + mac_addr, zdparm->u.mlme.reason_code);
    + break;
    + default:
    + printk(KERN_ERR "MLME command: 0x%04x not support\n",
    + zdparm->u.mlme.cmd);
    + break;
    + }
    +
    + break;
    + case ZD_CMD_SCAN_REQ:
    + printk(KERN_ERR "usbdrv_wpa_ioctl: ZD_CMD_SCAN_REQ\n");
    + break;
    + case ZD_CMD_SET_GENERIC_ELEMENT:
    + printk(KERN_ERR "usbdrv_wpa_ioctl:
    + " ZD_CMD_SET_GENERIC_ELEMENT\n");
    +
    + /* Copy the WPA IE
    + * zm_msg1_mm(ZM_LV_0, "CWY - wpaie Length : ",
    + * zdparm->u.generic_elem.len);
    + */
    + printk(KERN_ERR "wpaie Length : % d\n",
    + zdparm->u.generic_elem.len);
    + if (zfiWlanQueryWlanMode(dev) == ZM_MODE_AP) {
    + /* AP Mode */
    + zfiWlanSetWpaIe(dev, zdparm->u.generic_elem.data,
    + zdparm->u.generic_elem.len);
    + } else {
    + macp->supLen = zdparm->u.generic_elem.len;
    + memcpy(macp->supIe, zdparm->u.generic_elem.data,
    + zdparm->u.generic_elem.len);
    + }
    + zfiWlanSetWpaSupport(dev, 1);
    + /* zfiWlanSetWpaIe(dev, zdparm->u.generic_elem.data,
    + * zdparm->u.generic_elem.len);
    + */
    + int ii;
    + u8_t len = zdparm->u.generic_elem.len;
    + u8_t *wpaie = (u8_t *)zdparm->u.generic_elem.data;
    +
    + printk(KERN_ERR "wd->ap.wpaLen : % d\n", len);
    +
    + /* DUMP WPA IE */
    + for(ii = 0; ii < len;) {
    + printk(KERN_ERR "0x%02x ", wpaie[ii]);
    +
    + if((++ii % 16) == 0)
    + printk(KERN_ERR "\n");
    + }
    + printk(KERN_ERR "\n");
    +
    + /* #ifdef ZM_HOSTAPD_SUPPORT
    + * if (wd->wlanMode == ZM_MODE_AP)
    + * {// Update Beacon FIFO in the next TBTT.
    + * memcpy(&mWPAIe, pSetting->WPAIe, pSetting->WPAIeLen);
    + * printk(KERN_ERR "Copy WPA IE into mWPAIe\n");
    + * }
    + * #endif
    + */
    + break;
    +
    + /* #ifdef ZM_HOSTAPD_SUPPORT */
    + case ZD_CMD_GET_TSC:
    + printk(KERN_ERR "usbdrv_wpa_ioctl : ZD_CMD_GET_TSC\n");
    + break;
    + /* #endif */
    +
    + default:
    + printk(KERN_ERR "usbdrv_wpa_ioctl default : 0x%04x\n",
    + zdparm->cmd);
    + ret = -EINVAL;
    + break;
    + }
    +
    + return ret;
    }

    #ifdef ZM_ENABLE_CENC
    int usbdrv_cenc_ioctl(struct net_device *dev, struct zydas_cenc_param *zdparm)
    {
    - //struct usbdrv_private *macp = dev->ml_priv;
    - struct zsKeyInfo keyInfo;
    - u16_t apId;
    - u8_t bc_addr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    - int ret = 0;
    - int ii;
    -
    - /* Get the AP Id */
    - apId = zfLnxGetVapId(dev);
    -
    - if (apId == 0xffff)
    - {
    - apId = 0;
    - }
    - else
    - {
    - apId = apId+1;
    - }
    -
    - switch (zdparm->cmd)
    - {
    - case ZM_CMD_CENC_SETCENC:
    - printk(KERN_ERR "ZM_CMD_CENC_SETCENC\n");
    - printk(KERN_ERR "length: %d\n", zdparm->len);
    - printk(KERN_ERR "policy: %d\n", zdparm->u.info.cenc_policy);
    - break;
    - case ZM_CMD_CENC_SETKEY:
    - //ret = wai_ioctl_setkey(vap, ioctl_msg);
    - printk(KERN_ERR "ZM_CMD_CENC_SETKEY\n");
    -
    - printk(KERN_ERR "MAC address= ");
    - for(ii = 0; ii < 6; ii++)
    - {
    - printk(KERN_ERR "0x%02x ", zdparm->u.crypt.sta_addr[ii]);
    - }
    - printk(KERN_ERR "\n");
    -
    - printk(KERN_ERR "Key Index: %d\n", zdparm->u.crypt.keyid);
    - printk(KERN_ERR "Encryption key= ");
    - for(ii = 0; ii < 16; ii++)
    - {
    - printk(KERN_ERR "0x%02x ", zdparm->u.crypt.key[ii]);
    - }
    - printk(KERN_ERR "\n");
    -
    - printk(KERN_ERR "MIC key= ");
    - for(ii = 16; ii < ZM_CENC_KEY_SIZE; ii++)
    - {
    - printk(KERN_ERR "0x%02x ", zdparm->u.crypt.key[ii]);
    - }
    - printk(KERN_ERR "\n");
    -
    - /* Set up key information */
    - keyInfo.keyLength = ZM_CENC_KEY_SIZE;
    - keyInfo.keyIndex = zdparm->u.crypt.keyid;
    - keyInfo.flag = ZM_KEY_FLAG_AUTHENTICATOR | ZM_KEY_FLAG_CENC;
    - keyInfo.key = zdparm->u.crypt.key;
    - keyInfo.macAddr = (u16_t *)zdparm->u.crypt.sta_addr;
    -
    - /* Identify the MAC address information */
    - if (memcmp(zdparm->u.crypt.sta_addr, bc_addr, sizeof(bc_addr)) == 0)
    - {
    - keyInfo.flag |= ZM_KEY_FLAG_GK;
    - keyInfo.vapId = apId;
    - memcpy(keyInfo.vapAddr, dev->dev_addr, ETH_ALEN);
    - }
    - else
    - {
    - keyInfo.flag |= ZM_KEY_FLAG_PK;
    - }
    -
    - zfiWlanSetKey(dev, keyInfo);
    -
    - break;
    - case ZM_CMD_CENC_REKEY:
    - //ret = wai_ioctl_rekey(vap, ioctl_msg);
    - printk(KERN_ERR "ZM_CMD_CENC_REKEY\n");
    - break;
    - default:
    - ret = -EOPNOTSUPP;
    - break;
    -
    - }
    -
    - //if (retv == ENETRESET)
    - // retv = IS_UP_AUTO(vap) ? ieee80211_open(vap->iv_dev) : 0;
    + /* struct usbdrv_private *macp = dev->ml_priv; */
    + struct zsKeyInfo keyInfo;
    + u16_t apId;
    + u8_t bc_addr[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    + int ret = 0;
    + int ii;
    +
    + /* Get the AP Id */
    + apId = zfLnxGetVapId(dev);
    +
    + if (apId == 0xffff) {
    + apId = 0;
    + } else {
    + apId = apId + 1;
    + }

    - return ret;
    -}
    -#endif //ZM_ENABLE_CENC
    -/////////////////////////////////////////
    -int usbdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
    -{
    -// struct usbdrv_private *macp;
    -// void *regp;
    - struct zdap_ioctl zdreq;
    - struct iwreq *wrq = (struct iwreq *)ifr;
    - struct athr_wlan_param zdparm;
    - struct usbdrv_private *macp = dev->ml_priv;
    + switch (zdparm->cmd) {
    + case ZM_CMD_CENC_SETCENC:
    + printk(KERN_ERR "ZM_CMD_CENC_SETCENC\n");
    + printk(KERN_ERR "length : % d\n", zdparm->len);
    + printk(KERN_ERR "policy : % d\n", zdparm->u.info.cenc_policy);
    + break;
    + case ZM_CMD_CENC_SETKEY:
    + /* ret = wai_ioctl_setkey(vap, ioctl_msg); */
    + printk(KERN_ERR "ZM_CMD_CENC_SETKEY\n");
    +
    + printk(KERN_ERR "MAC address = ");
    + for (ii = 0; ii < 6; ii++) {
    + printk(KERN_ERR "0x%02x ",
    + zdparm->u.crypt.sta_addr[ii]);
    + }
    + printk(KERN_ERR "\n");

    - int err = 0;
    - int changed = 0;
    + printk(KERN_ERR "Key Index : % d\n", zdparm->u.crypt.keyid);
    + printk(KERN_ERR "Encryption key = ");
    + for (ii = 0; ii < 16; ii++) {
    + printk(KERN_ERR "0x%02x ", zdparm->u.crypt.key[ii]);
    + }
    + printk(KERN_ERR "\n");

    -// regp = macp->regp;
    + printk(KERN_ERR "MIC key = ");
    + for(ii = 16; ii < ZM_CENC_KEY_SIZE; ii++) {
    + printk(KERN_ERR "0x%02x ", zdparm->u.crypt.key[ii]);
    + }
    + printk(KERN_ERR "\n");

    - if(!netif_running(dev))
    - return -EINVAL;
    + /* Set up key information */
    + keyInfo.keyLength = ZM_CENC_KEY_SIZE;
    + keyInfo.keyIndex = zdparm->u.crypt.keyid;
    + keyInfo.flag = ZM_KEY_FLAG_AUTHENTICATOR | ZM_KEY_FLAG_CENC;
    + keyInfo.key = zdparm->u.crypt.key;
    + keyInfo.macAddr = (u16_t *)zdparm->u.crypt.sta_addr;
    +
    + /* Identify the MAC address information */
    + if (memcmp(zdparm->u.crypt.sta_addr, bc_addr,
    + sizeof(bc_addr)) == 0) {
    + keyInfo.flag |= ZM_KEY_FLAG_GK;
    + keyInfo.vapId = apId;
    + memcpy(keyInfo.vapAddr, dev->dev_addr, ETH_ALEN);
    + } else {
    + keyInfo.flag |= ZM_KEY_FLAG_PK;
    + }

    - switch (cmd)
    - {
    - case SIOCGIWNAME:
    - strcpy(wrq->u.name, "IEEE 802.11-DS");
    - break;
    + zfiWlanSetKey(dev, keyInfo);

    - case SIOCGIWAP:
    - err = usbdrvwext_giwap(dev, NULL, &wrq->u.ap_addr, NULL);
    - break;
    + break;
    + case ZM_CMD_CENC_REKEY:
    + /* ret = wai_ioctl_rekey(vap, ioctl_msg); */
    + printk(KERN_ERR "ZM_CMD_CENC_REKEY\n");
    + break;
    + default:
    + ret = -EOPNOTSUPP;
    + break;
    + }

    + /* if (retv == ENETRESET) */
    + /* retv = IS_UP_AUTO(vap) ? ieee80211_open(vap->iv_dev) : 0; */

    - case SIOCSIWAP:
    - err = usbdrvwext_siwap(dev, NULL, &wrq->u.ap_addr, NULL);
    - break;
    + return ret;
    +}
    +#endif /* ZM_ENABLE_CENC */

    +int usbdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
    +{
    + /* struct usbdrv_private *macp; */
    + /* void *regp; */
    + struct zdap_ioctl zdreq;
    + struct iwreq *wrq = (struct iwreq *)ifr;
    + struct athr_wlan_param zdparm;
    + struct usbdrv_private *macp = dev->ml_priv;

    - case SIOCGIWMODE:
    - err = usbdrvwext_giwmode(dev, NULL, &wrq->u.mode, NULL);
    - break;
    + int err = 0;
    + int changed = 0;

    + /* regp = macp->regp; */

    - case SIOCSIWESSID:
    - printk(KERN_ERR "CWY - usbdrvwext_siwessid\n");
    - //err = usbdrv_ioctl_setessid(dev, &wrq->u.essid);
    - err = usbdrvwext_siwessid(dev, NULL, &wrq->u.essid, NULL);
    + if (!netif_running(dev))
    + return -EINVAL;

    - if (! err)
    - changed = 1;
    - break;
    + switch (cmd) {
    + case SIOCGIWNAME:
    + strcpy(wrq->u.name, "IEEE 802.11-DS");
    + break;
    + case SIOCGIWAP:
    + err = usbdrvwext_giwap(dev, NULL, &wrq->u.ap_addr, NULL);
    + break;
    + case SIOCSIWAP:
    + err = usbdrvwext_siwap(dev, NULL, &wrq->u.ap_addr, NULL);
    + break;
    + case SIOCGIWMODE:
    + err = usbdrvwext_giwmode(dev, NULL, &wrq->u.mode, NULL);
    + break;
    + case SIOCSIWESSID:
    + printk(KERN_ERR "CWY - usbdrvwext_siwessid\n");
    + /* err = usbdrv_ioctl_setessid(dev, &wrq->u.essid); */
    + err = usbdrvwext_siwessid(dev, NULL, &wrq->u.essid, NULL);

    + if (!err)
    + changed = 1;
    + break;
    + case SIOCGIWESSID:
    + err = usbdrvwext_giwessid(dev, NULL, &wrq->u.essid, NULL);
    + break;
    + case SIOCSIWRTS:
    + err = usbdrv_ioctl_setrts(dev, &wrq->u.rts);
    + if (! err)
    + changed = 1;
    + break;
    + /* set_auth */
    + case SIOCIWFIRSTPRIV + 0x2: {
    + /* printk("CWY - SIOCIWFIRSTPRIV + 0x2(set_auth)\n"); */
    + if (!capable(CAP_NET_ADMIN)) {
    + err = -EPERM;
    + break;
    + }
    + int val = *((int *) wrq->u.name);
    + if ((val < 0) || (val > 2)) {
    + err = -EINVAL;
    + break;
    + } else {
    + zfiWlanSetAuthenticationMode(dev, val);

    - case SIOCGIWESSID:
    - err = usbdrvwext_giwessid(dev, NULL, &wrq->u.essid, NULL);
    - break;
    + if (macp->DeviceOpened == 1) {
    + zfiWlanDisable(dev, 0);
    + zfiWlanEnable(dev);
    + }

    + err = 0;
    + changed = 1;
    + }
    + }
    + break;
    + /* get_auth */
    + case SIOCIWFIRSTPRIV + 0x3: {
    + int AuthMode = ZM_AUTH_MODE_OPEN;

    - case SIOCSIWRTS:
    + /* printk("CWY - SIOCIWFIRSTPRIV + 0x3(get_auth)\n"); */

    - err = usbdrv_ioctl_setrts(dev, &wrq->u.rts);
    - if (! err)
    - changed = 1;
    - break;
    + if (wrq->u.data.pointer) {
    + wrq->u.data.flags = 1;

    + AuthMode = zfiWlanQueryAuthenticationMode(dev, 0);
    + if (AuthMode == ZM_AUTH_MODE_OPEN) {
    + wrq->u.data.length = 12;

    - case SIOCIWFIRSTPRIV + 0x2: /* set_auth */
    - {
    - //printk("CWY - SIOCIWFIRSTPRIV + 0x2 (set_auth)\n");
    - if (! capable(CAP_NET_ADMIN))
    - {
    - err = -EPERM;
    - break;
    - }
    - {
    - int val = *( (int *) wrq->u.name );
    - if ((val < 0) || (val > 2))
    - {
    - err = -EINVAL;
    - break;
    + if (copy_to_user(wrq->u.data.pointer,
    + "open system", 12)) {
    + return -EFAULT;
    }
    - else
    - {
    - zfiWlanSetAuthenticationMode(dev, val);
    + } else if (AuthMode == ZM_AUTH_MODE_SHARED_KEY) {
    + wrq->u.data.length = 11;

    - if (macp->DeviceOpened == 1)
    - {
    - zfiWlanDisable(dev, 0);
    - zfiWlanEnable(dev);
    - }
    + if (copy_to_user(wrq->u.data.pointer,
    + "shared key", 11)) {
    + return -EFAULT;
    + }
    + } else if (AuthMode == ZM_AUTH_MODE_AUTO) {
    + wrq->u.data.length = 10;

    - err = 0;
    - changed = 1;
    + if (copy_to_user(wrq->u.data.pointer,
    + "auto mode", 10)) {
    + return -EFAULT;
    }
    + } else {
    + return -EFAULT;
    }
    }
    - break;
    + }
    + break;
    + /* debug command */
    + case ZDAPIOCTL:
    + if (copy_from_user(&zdreq, ifr->ifr_data, sizeof(zdreq))) {
    + printk(KERN_ERR "usbdrv : copy_from_user error\n");
    + return -EFAULT;
    + }

    - case SIOCIWFIRSTPRIV + 0x3: /* get_auth */
    - {
    - int AuthMode = ZM_AUTH_MODE_OPEN;
    -
    - //printk("CWY - SIOCIWFIRSTPRIV + 0x3 (get_auth)\n");
    -
    - if (wrq->u.data.pointer)
    - {
    - wrq->u.data.flags = 1;
    + /* printk(DEFAULT_MESSAGE_LOGLEVEL
    + * "usbdrv : cmd = % 2x, reg = 0x%04lx,
    + *value = 0x%08lx\n",
    + * zdreq.cmd, zdreq.addr, zdreq.value);
    + */
    + zfLnxPrivateIoctl(dev, &zdreq);

    - AuthMode = zfiWlanQueryAuthenticationMode(dev, 0);
    - if (AuthMode == ZM_AUTH_MODE_OPEN)
    - {
    - wrq->u.data.length = 12;
    + err = 0;
    + break;
    + case ZD_IOCTL_WPA:
    + if (copy_from_user(&zdparm, ifr->ifr_data,
    + sizeof(struct athr_wlan_param))) {
    + printk(KERN_ERR "usbdrv : copy_from_user error\n");
    + return -EFAULT;
    + }

    - if (copy_to_user(wrq->u.data.pointer, "open system", 12))
    - {
    - return -EFAULT;
    - }
    - }
    - else if (AuthMode == ZM_AUTH_MODE_SHARED_KEY)
    - {
    - wrq->u.data.length = 11;
    + usbdrv_wpa_ioctl(dev, &zdparm);
    + err = 0;
    + break;
    + case ZD_IOCTL_PARAM: {
    + int *p;
    + int op;
    + int arg;
    +
    + /* Point to the name field and retrieve the
    + * op and arg elements.
    + */
    + p = (int *)wrq->u.name;
    + op = *p++;
    + arg = *p;
    +
    + if (op == ZD_PARAM_ROAMING) {
    + printk(KERN_ERR
    + "*************ZD_PARAM_ROAMING : % d\n", arg);
    + /* macp->cardSetting.ap_scan=(U8)arg; */
    + }
    + if (op == ZD_PARAM_PRIVACY) {
    + printk(KERN_ERR "ZD_IOCTL_PRIVACY : ");

    - if (copy_to_user(wrq->u.data.pointer, "shared key", 11))
    - {
    - return -EFAULT;
    - }
    - }
    - else if (AuthMode == ZM_AUTH_MODE_AUTO)
    - {
    - wrq->u.data.length = 10;
    + /* Turn on the privacy invoke flag */
    + if (arg) {
    + /* mCap[0] |= CAP_PRIVACY; */
    + /* macp->cardSetting.EncryOnOff[0] = 1; */
    + printk(KERN_ERR "enable\n");
    +
    + } else {
    + /* mCap[0] &= ~CAP_PRIVACY; */
    + /* macp->cardSetting.EncryOnOff[0] = 0; */
    + printk(KERN_ERR "disable\n");
    + }
    + /* changed=1; */
    + }
    + if (op == ZD_PARAM_WPA) {
    +
    + printk(KERN_ERR "ZD_PARAM_WPA : ");

    - if (copy_to_user(wrq->u.data.pointer, "auto mode", 10))
    + if (arg) {
    + printk(KERN_ERR "enable\n");
    +
    + if (zfiWlanQueryWlanMode(dev) != ZM_MODE_AP) {
    + printk(KERN_ERR "Station Mode\n");
    + /* zfiWlanQueryWpaIe(dev, (u8_t *)
    + &wpaIe, &wpalen); */
    + /* printk("wpaIe : % 2x, % 2x, % 2x\n",
    + wpaIe[21], wpaIe[22], wpaIe[23]); */
    + /* printk("rsnIe : % 2x, % 2x, % 2x\n",
    + wpaIe[17], wpaIe[18], wpaIe[19]); */
    + if ((macp->supIe[21] == 0x50) &&
    + (macp->supIe[22] == 0xf2) &&
    + (macp->supIe[23] == 0x2)) {
    + printk(KERN_ERR
    + "wd->sta.authMode = ZM_AUTH_MODE_WPAPSK\n");
    + /* wd->sta.authMode = ZM_AUTH_MODE_WPAPSK; */
    + /* wd->ws.authMode = ZM_AUTH_MODE_WPAPSK; */
    + zfiWlanSetAuthenticationMode(dev,
    + ZM_AUTH_MODE_WPAPSK);
    + } else if ((macp->supIe[21] == 0x50) &&
    + (macp->supIe[22] == 0xf2) &&
    + (macp->supIe[23] == 0x1)) {
    + printk(KERN_ERR
    + "wd->sta.authMode = ZM_AUTH_MODE_WPA\n");
    + /* wd->sta.authMode = ZM_AUTH_MODE_WPA; */
    + /* wd->ws.authMode = ZM_AUTH_MODE_WPA; */
    + zfiWlanSetAuthenticationMode(dev,
    + ZM_AUTH_MODE_WPA);
    + } else if ((macp->supIe[17] == 0xf) &&
    + (macp->supIe[18] == 0xac) &&
    + (macp->supIe[19] == 0x2))
    {
    - return -EFAULT;
    - }
    - }
    - else
    + printk(KERN_ERR
    + "wd->sta.authMode = ZM_AUTH_MODE_WPA2PSK\n");
    + /* wd->sta.authMode = ZM_AUTH_MODE_WPA2PSK; */
    + /* wd->ws.authMode = ZM_AUTH_MODE_WPA2PSK; */
    + zfiWlanSetAuthenticationMode(dev,
    + ZM_AUTH_MODE_WPA2PSK);
    + } else if ((macp->supIe[17] == 0xf) &&
    + (macp->supIe[18] == 0xac) &&
    + (macp->supIe[19] == 0x1))
    {
    - return -EFAULT;
    + printk(KERN_ERR
    + "wd->sta.authMode = ZM_AUTH_MODE_WPA2\n");
    + /* wd->sta.authMode = ZM_AUTH_MODE_WPA2; */
    + /* wd->ws.authMode = ZM_AUTH_MODE_WPA2; */
    + zfiWlanSetAuthenticationMode(dev,
    + ZM_AUTH_MODE_WPA2);
    + }
    + /* WPA or WPAPSK */
    + if ((macp->supIe[21] == 0x50) ||
    + (macp->supIe[22] == 0xf2)) {
    + if (macp->supIe[11] == 0x2) {
    + printk(KERN_ERR
    + "wd->sta.wepStatus = ZM_ENCRYPTION_TKIP\n");
    + /* wd->sta.wepStatus = ZM_ENCRYPTION_TKIP; */
    + /* wd->ws.wepStatus = ZM_ENCRYPTION_TKIP; */
    + zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_TKIP);
    + } else {
    + printk(KERN_ERR
    + "wd->sta.wepStatus = ZM_ENCRYPTION_AES\n");
    + /* wd->sta.wepStatus = ZM_ENCRYPTION_AES; */
    + /* wd->ws.wepStatus = ZM_ENCRYPTION_AES; */
    + zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_AES);
    }
    }
    + //WPA2 or WPA2PSK
    + if ((macp->supIe[17] == 0xf) ||
    + (macp->supIe[18] == 0xac)) {
    + if (macp->supIe[13] == 0x2) {
    + printk(KERN_ERR
    + "wd->sta.wepStatus = ZM_ENCRYPTION_TKIP\n");
    + /* wd->sta.wepStatus = ZM_ENCRYPTION_TKIP; */
    + /* wd->ws.wepStatus = ZM_ENCRYPTION_TKIP; */
    + zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_TKIP);
    + } else {
    + printk(KERN_ERR
    + "wd->sta.wepStatus = ZM_ENCRYPTION_AES\n");
    + /* wd->sta.wepStatus = ZM_ENCRYPTION_AES; */
    + /* wd->ws.wepStatus = ZM_ENCRYPTION_AES; */
    + zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_AES);
    + }
    + }
    + }
    + zfiWlanSetWpaSupport(dev, 1);
    + } else {
    + /* Reset the WPA related variables */
    + printk(KERN_ERR "disable\n");
    +
    + zfiWlanSetWpaSupport(dev, 0);
    + zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_OPEN);
    + zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_WEP_DISABLED);
    +
    + /* Now we only set the length in the WPA IE
    + * field to zero.
    + *macp->cardSetting.WPAIe[1] = 0;
    + */
    + }
    + }
    +
    + if (op == ZD_PARAM_COUNTERMEASURES) {
    + printk(KERN_ERR
    + "****************ZD_PARAM_COUNTERMEASURES : ");
    +
    + if(arg) {
    + /* mCounterMeasureState=1; */
    + printk(KERN_ERR "enable\n");
    + } else {
    + /* mCounterMeasureState=0; */
    + printk(KERN_ERR "disable\n");
    + }
    + }
    + if (op == ZD_PARAM_DROPUNENCRYPTED) {
    + printk(KERN_ERR "ZD_PARAM_DROPUNENCRYPTED : ");
    +
    + if(arg) {
    + printk(KERN_ERR "enable\n");
    + } else {
    + printk(KERN_ERR "disable\n");
    + }
    }
    + if (op == ZD_PARAM_AUTH_ALGS) {
    + printk(KERN_ERR "ZD_PARAM_AUTH_ALGS : ");
    +
    + if (arg == 0) {
    + printk(KERN_ERR "OPEN_SYSTEM\n");
    + } else {
    + printk(KERN_ERR "SHARED_KEY\n");
    + }
    + }
    + if (op == ZD_PARAM_WPS_FILTER) {
    + printk(KERN_ERR "ZD_PARAM_WPS_FILTER : ");
    +
    + if (arg) {
    + /* mCounterMeasureState=1; */
    + macp->forwardMgmt = 1;
    + printk(KERN_ERR "enable\n");
    + } else {
    + /* mCounterMeasureState=0; */
    + macp->forwardMgmt = 0;
    + printk(KERN_ERR "disable\n");
    + }
    + }
    + }
    + err = 0;
    + break;
    + case ZD_IOCTL_GETWPAIE: {
    + struct ieee80211req_wpaie req_wpaie;
    + u16_t apId, i, j;
    +
    + /* Get the AP Id */
    + apId = zfLnxGetVapId(dev);
    +
    + if (apId == 0xffff) {
    + apId = 0;
    + } else {
    + apId = apId + 1;
    + }
    +
    + if (copy_from_user(&req_wpaie, ifr->ifr_data,
    + sizeof(struct ieee80211req_wpaie))) {
    + printk(KERN_ERR "usbdrv : copy_from_user error\n");
    + return -EFAULT;
    + }
    +
    + for (i = 0; i < ZM_OAL_MAX_STA_SUPPORT; i++) {
    + for (j = 0; j < IEEE80211_ADDR_LEN; j++) {
    + if (macp->stawpaie[i].wpa_macaddr[j] !=
    + req_wpaie.wpa_macaddr[j])
    + break;
    + }
    + if (j == 6)
    break;
    + }

    + if (i < ZM_OAL_MAX_STA_SUPPORT) {
    + /* printk("ZD_IOCTL_GETWPAIE - sta index = % d\n", i); */
    + memcpy(req_wpaie.wpa_ie, macp->stawpaie[i].wpa_ie,
    + IEEE80211_MAX_IE_SIZE);
    + }

    - case ZDAPIOCTL: //debug command
    - if (copy_from_user(&zdreq, ifr->ifr_data, sizeof (zdreq)))
    - {
    - printk(KERN_ERR "usbdrv: copy_from_user error\n");
    - return -EFAULT;
    - }
    -
    - //printk(KERN_DEBUG "usbdrv: cmd=%2x, reg=0x%04lx, value=0x%08lx\n",
    - // zdreq.cmd, zdreq.addr, zdreq.value);
    -
    - zfLnxPrivateIoctl(dev, &zdreq);
    -
    - err = 0;
    - break;
    -
    - case ZD_IOCTL_WPA:
    - if (copy_from_user(&zdparm, ifr->ifr_data, sizeof(struct athr_wlan_param)))
    - {
    - printk(KERN_ERR "usbdrv: copy_from_user error\n");
    - return -EFAULT;
    - }
    -
    - usbdrv_wpa_ioctl(dev, &zdparm);
    - err = 0;
    - break;
    -
    - case ZD_IOCTL_PARAM:
    - {
    - int *p;
    - int op;
    - int arg;
    -
    - /* Point to the name field and retrieve the
    - * op and arg elements. */
    - p = (int *)wrq->u.name;
    - op = *p++;
    - arg = *p;
    -
    - if(op == ZD_PARAM_ROAMING)
    - {
    - printk(KERN_ERR "************* ZD_PARAM_ROAMING: %d\n", arg);
    - //macp->cardSetting.ap_scan=(U8)arg;
    - }
    - if(op == ZD_PARAM_PRIVACY)
    - {
    - printk(KERN_ERR "ZD_IOCTL_PRIVACY: ");
    -
    - /* Turn on the privacy invoke flag */
    - if(arg)
    - {
    - // mCap[0] |= CAP_PRIVACY;
    - // macp->cardSetting.EncryOnOff[0] = 1;
    - printk(KERN_ERR "enable\n");
    -
    - }
    - else
    - {
    - // mCap[0] &= ~CAP_PRIVACY;
    - // macp->cardSetting.EncryOnOff[0] = 0;
    - printk(KERN_ERR "disable\n");
    - }
    - //changed=1;
    - }
    - if(op == ZD_PARAM_WPA)
    - {
    - printk(KERN_ERR "ZD_PARAM_WPA: ");
    -
    - if(arg)
    - {
    - printk(KERN_ERR "enable\n");
    -
    - if (zfiWlanQueryWlanMode(dev) != ZM_MODE_AP)
    - {
    - printk(KERN_ERR "Station Mode\n");
    - //zfiWlanQueryWpaIe(dev, (u8_t *)&wpaIe, &wpalen);
    - //printk("wpaIe : %2x,%2x,%2x\n", wpaIe[21], wpaIe[22], wpaIe[23]);
    - //printk("rsnIe : %2x,%2x,%2x\n", wpaIe[17], wpaIe[18], wpaIe[19]);
    - if ((macp->supIe[21] == 0x50) &&
    - (macp->supIe[22] == 0xf2) &&
    - (macp->supIe[23] == 0x2))
    - {
    - printk(KERN_ERR "wd->sta.authMode = ZM_AUTH_MODE_WPAPSK\n");
    - //wd->sta.authMode = ZM_AUTH_MODE_WPAPSK;
    - //wd->ws.authMode = ZM_AUTH_MODE_WPAPSK;
    - zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_WPAPSK);
    - }
    - else if ((macp->supIe[21] == 0x50) &&
    - (macp->supIe[22] == 0xf2) &&
    - (macp->supIe[23] == 0x1))
    - {
    - printk(KERN_ERR "wd->sta.authMode = ZM_AUTH_MODE_WPA\n");
    - //wd->sta.authMode = ZM_AUTH_MODE_WPA;
    - //wd->ws.authMode = ZM_AUTH_MODE_WPA;
    - zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_WPA);
    - }
    - else if ((macp->supIe[17] == 0xf) &&
    - (macp->supIe[18] == 0xac) &&
    - (macp->supIe[19] == 0x2))
    - {
    - printk(KERN_ERR "wd->sta.authMode = ZM_AUTH_MODE_WPA2PSK\n");
    - //wd->sta.authMode = ZM_AUTH_MODE_WPA2PSK;
    - //wd->ws.authMode = ZM_AUTH_MODE_WPA2PSK;
    - zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_WPA2PSK);
    - }
    - else if ((macp->supIe[17] == 0xf) &&
    - (macp->supIe[18] == 0xac) &&
    - (macp->supIe[19] == 0x1))
    - {
    - printk(KERN_ERR "wd->sta.authMode = ZM_AUTH_MODE_WPA2\n");
    - //wd->sta.authMode = ZM_AUTH_MODE_WPA2;
    - //wd->ws.authMode = ZM_AUTH_MODE_WPA2;
    - zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_WPA2);
    - }
    - if ((macp->supIe[21] == 0x50) || (macp->supIe[22] == 0xf2))//WPA or WPAPSK
    - {
    - if (macp->supIe[11] == 0x2)
    - {
    - printk(KERN_ERR "wd->sta.wepStatus = ZM_ENCRYPTION_TKIP\n");
    - //wd->sta.wepStatus = ZM_ENCRYPTION_TKIP;
    - //wd->ws.wepStatus = ZM_ENCRYPTION_TKIP;
    - zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_TKIP);
    - }
    - else
    - {
    - printk(KERN_ERR "wd->sta.wepStatus = ZM_ENCRYPTION_AES\n");
    - //wd->sta.wepStatus = ZM_ENCRYPTION_AES;
    - //wd->ws.wepStatus = ZM_ENCRYPTION_AES;
    - zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_AES);
    - }
    - }
    - if ((macp->supIe[17] == 0xf) || (macp->supIe[18] == 0xac)) //WPA2 or WPA2PSK
    - {
    - if (macp->supIe[13] == 0x2)
    - {
    - printk(KERN_ERR "wd->sta.wepStatus = ZM_ENCRYPTION_TKIP\n");
    - //wd->sta.wepStatus = ZM_ENCRYPTION_TKIP;
    - //wd->ws.wepStatus = ZM_ENCRYPTION_TKIP;
    - zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_TKIP);
    - }
    - else
    - {
    - printk(KERN_ERR "wd->sta.wepStatus = ZM_ENCRYPTION_AES\n");
    - //wd->sta.wepStatus = ZM_ENCRYPTION_AES;
    - //wd->ws.wepStatus = ZM_ENCRYPTION_AES;
    - zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_AES);
    - }
    - }
    - }
    - zfiWlanSetWpaSupport(dev, 1);
    - }
    - else
    - {
    - /* Reset the WPA related variables */
    - printk(KERN_ERR "disable\n");
    -
    - zfiWlanSetWpaSupport(dev, 0);
    - zfiWlanSetAuthenticationMode(dev, ZM_AUTH_MODE_OPEN);
    - zfiWlanSetWepStatus(dev, ZM_ENCRYPTION_WEP_DISABLED);
    -
    - /* Now we only set the length in the WPA IE
    - * field to zero. */
    - //macp->cardSetting.WPAIe[1] = 0;
    - }
    - }
    - if(op == ZD_PARAM_COUNTERMEASURES)
    - {
    - printk(KERN_ERR "================ZD_PARAM_COUNTERMEASURES: ");
    -
    - if(arg)
    - {
    - // mCounterMeasureState=1;
    - printk(KERN_ERR "enable\n");
    - }
    - else
    - {
    - // mCounterMeasureState=0;
    - printk(KERN_ERR "disable\n");
    - }
    - }
    - if(op == ZD_PARAM_DROPUNENCRYPTED)
    - {
    - printk(KERN_ERR "ZD_PARAM_DROPUNENCRYPTED: ");
    -
    - if(arg)
    - {
    - printk(KERN_ERR "enable\n");
    - }
    - else
    - {
    - printk(KERN_ERR "disable\n");
    - }
    - }
    - if(op == ZD_PARAM_AUTH_ALGS)
    - {
    - printk(KERN_ERR "ZD_PARAM_AUTH_ALGS: ");
    -
    - if(arg == 0)
    - {
    - printk(KERN_ERR "OPEN_SYSTEM\n");
    - }
    - else
    - {
    - printk(KERN_ERR "SHARED_KEY\n");
    - }
    - }
    - if(op == ZD_PARAM_WPS_FILTER)
    - {
    - printk(KERN_ERR "ZD_PARAM_WPS_FILTER: ");
    -
    - if(arg)
    - {
    - // mCounterMeasureState=1;
    - macp->forwardMgmt = 1;
    - printk(KERN_ERR "enable\n");
    - }
    - else
    - {
    - // mCounterMeasureState=0;
    - macp->forwardMgmt = 0;
    - printk(KERN_ERR "disable\n");
    - }
    - }
    - }
    - err = 0;
    - break;
    -
    - case ZD_IOCTL_GETWPAIE:
    - {
    - struct ieee80211req_wpaie req_wpaie;
    - u16_t apId, i, j;
    -
    - /* Get the AP Id */
    - apId = zfLnxGetVapId(dev);
    -
    - if (apId == 0xffff)
    - {
    - apId = 0;
    - }
    - else
    - {
    - apId = apId+1;
    - }
    -
    - if (copy_from_user(&req_wpaie, ifr->ifr_data, sizeof(struct ieee80211req_wpaie))){
    - printk(KERN_ERR "usbdrv: copy_from_user error\n");
    - return -EFAULT;
    - }
    -
    - for(i = 0; i < ZM_OAL_MAX_STA_SUPPORT; i++)
    - {
    - for(j = 0; j < IEEE80211_ADDR_LEN; j++)
    - {
    - if (macp->stawpaie[i].wpa_macaddr[j] != req_wpaie.wpa_macaddr[j])
    - break;
    - }
    - if (j == 6)
    - break;
    - }
    - if (i < ZM_OAL_MAX_STA_SUPPORT)
    - {
    - //printk("ZD_IOCTL_GETWPAIE - sta index = %d\n", i);
    - memcpy(req_wpaie.wpa_ie, macp->stawpaie[i].wpa_ie, IEEE80211_MAX_IE_SIZE);
    - }
    -
    - if (copy_to_user(wrq->u.data.pointer, &req_wpaie, sizeof(struct ieee80211req_wpaie)))
    - {
    - return -EFAULT;
    - }
    - }
    + if (copy_to_user(wrq->u.data.pointer, &req_wpaie,
    + sizeof(struct ieee80211req_wpaie))) {
    + return -EFAULT;
    + }
    + }

    - err = 0;
    - break;
    -#ifdef ZM_ENABLE_CENC
    - case ZM_IOCTL_CENC:
    - if (copy_from_user(&macp->zd_wpa_req, ifr->ifr_data, sizeof(struct athr_wlan_param)))
    - {
    - printk(KERN_ERR "usbdrv: copy_from_user error\n");
    - return -EFAULT;
    - }
    -
    - usbdrv_cenc_ioctl(dev, (struct zydas_cenc_param *)&macp->zd_wpa_req);
    - err = 0;
    - break;
    -#endif //ZM_ENABLE_CENC
    - default:
    - err = -EOPNOTSUPP;
    - break;
    - }
    + err = 0;
    + break;
    + #ifdef ZM_ENABLE_CENC
    + case ZM_IOCTL_CENC:
    + if (copy_from_user(&macp->zd_wpa_req, ifr->ifr_data,
    + sizeof(struct athr_wlan_param))) {
    + printk(KERN_ERR "usbdrv : copy_from_user error\n");
    + return -EFAULT;
    + }

    + usbdrv_cenc_ioctl(dev,
    + (struct zydas_cenc_param *)&macp->zd_wpa_req);
    + err = 0;
    + break;
    + #endif /* ZM_ENABLE_CENC */
    + default:
    + err = -EOPNOTSUPP;
    + break;
    + }

    - return err;
    + return err;
    }

    \
     
     \ /
      Last update: 2009-04-26 10:23    [W:0.288 / U:59.380 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site