]> Pileus Git - ~andy/linux/blobdiff - drivers/staging/rtl8192e/r8192E_wx.c
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
[~andy/linux] / drivers / staging / rtl8192e / r8192E_wx.c
index 5ae65164af5c7c039cdc8dd41f89f64c5ccfe934..adad91b0b6b105f3b81a1823c9f35959b3cbe65e 100644 (file)
@@ -215,14 +215,14 @@ static int r8192_wx_set_mode(struct net_device *dev, struct iw_request_info *a,
        if (priv->bHwRadioOff)
                return 0;
 
-       rtState = priv->ieee80211->eRFPowerState;
+       rtState = priv->eRFPowerState;
        down(&priv->wx_sem);
 #ifdef ENABLE_IPS
        if(wrqu->mode == IW_MODE_ADHOC){
 
-               if(priv->ieee80211->PowerSaveControl.bInactivePs){
+               if (priv->PowerSaveControl.bInactivePs) {
                        if(rtState == eRfOff){
-                               if(priv->ieee80211->RfOffReason > RF_CHANGE_BY_IPS)
+                               if(priv->RfOffReason > RF_CHANGE_BY_IPS)
                                {
                                        RT_TRACE(COMP_ERR, "%s(): RF is OFF.\n",__FUNCTION__);
                                        up(&priv->wx_sem);
@@ -231,7 +231,7 @@ static int r8192_wx_set_mode(struct net_device *dev, struct iw_request_info *a,
                                else{
                                        RT_TRACE(COMP_ERR, "%s(): IPSLeave\n",__FUNCTION__);
                                        down(&priv->ieee80211->ips_sem);
-                                       IPSLeave(dev);
+                                       IPSLeave(priv);
                                        up(&priv->ieee80211->ips_sem);
                                }
                        }
@@ -301,8 +301,6 @@ static int rtl8180_wx_get_range(struct net_device *dev,
 //     range->old_num_channels;
 //     range->old_num_frequency;
 //     range->old_freq[6]; /* Filler to keep "version" at the same offset */
-       if(priv->rf_set_sens != NULL)
-               range->sensitivity = priv->max_sens;    /* signal level threshold range */
 
        range->max_qual.qual = 100;
        /* TODO: Find real max RSSI and stick here */
@@ -366,10 +364,10 @@ static int rtl8180_wx_get_range(struct net_device *dev,
        }
        range->num_frequency = val;
        range->num_channels = val;
-#if WIRELESS_EXT > 17
+
        range->enc_capa = IW_ENC_CAPA_WPA|IW_ENC_CAPA_WPA2|
                          IW_ENC_CAPA_CIPHER_TKIP|IW_ENC_CAPA_CIPHER_CCMP;
-#endif
+
        tmp->scan_capa = 0x01;
        return 0;
 }
@@ -386,7 +384,7 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
        if (priv->bHwRadioOff)
                return 0;
 
-       rtState = priv->ieee80211->eRFPowerState;
+       rtState = priv->eRFPowerState;
 
        if(!priv->up) return -ENETDOWN;
        if (priv->ieee80211->LinkDetectInfo.bBusyTraffic == true)
@@ -408,9 +406,9 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
 #ifdef ENABLE_IPS
        priv->ieee80211->actscanning = true;
        if(priv->ieee80211->state != IEEE80211_LINKED){
-               if(priv->ieee80211->PowerSaveControl.bInactivePs){
+               if (priv->PowerSaveControl.bInactivePs) {
                        if(rtState == eRfOff){
-                               if(priv->ieee80211->RfOffReason > RF_CHANGE_BY_IPS)
+                               if(priv->RfOffReason > RF_CHANGE_BY_IPS)
                                {
                                        RT_TRACE(COMP_ERR, "%s(): RF is OFF.\n",__FUNCTION__);
                                        up(&priv->wx_sem);
@@ -419,7 +417,7 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
                                else{
                                        //RT_TRACE(COMP_PS, "%s(): IPSLeave\n",__FUNCTION__);
                                        down(&priv->ieee80211->ips_sem);
-                                       IPSLeave(dev);
+                                       IPSLeave(priv);
                                        up(&priv->ieee80211->ips_sem);
                                }
                        }
@@ -477,12 +475,12 @@ static int r8192_wx_set_essid(struct net_device *dev,
        if (priv->bHwRadioOff)
                return 0;
 
-       rtState = priv->ieee80211->eRFPowerState;
+       rtState = priv->eRFPowerState;
        down(&priv->wx_sem);
 
 #ifdef ENABLE_IPS
         down(&priv->ieee80211->ips_sem);
-        IPSLeave(dev);
+        IPSLeave(priv);
         up(&priv->ieee80211->ips_sem);
 #endif
        ret = ieee80211_wx_set_essid(priv->ieee80211,a,wrqu,b);
@@ -592,7 +590,7 @@ static int r8192_wx_set_wap(struct net_device *dev,
 
 #ifdef ENABLE_IPS
         down(&priv->ieee80211->ips_sem);
-        IPSLeave(dev);
+        IPSLeave(priv);
         up(&priv->ieee80211->ips_sem);
 #endif
        ret = ieee80211_wx_set_wap(priv->ieee80211,info,awrq,extra);
@@ -649,13 +647,13 @@ static int r8192_wx_set_enc(struct net_device *dev,
         priv->ieee80211->wx_set_enc = 1;
 #ifdef ENABLE_IPS
         down(&priv->ieee80211->ips_sem);
-        IPSLeave(dev);
+        IPSLeave(priv);
         up(&priv->ieee80211->ips_sem);
 #endif
 
        down(&priv->wx_sem);
 
-       RT_TRACE(COMP_SEC, "Setting SW wep key");
+       RT_TRACE(COMP_SEC, "Setting SW wep key\n");
        ret = ieee80211_wx_set_encode(priv->ieee80211,info,wrqu,key);
 
        up(&priv->wx_sem);
@@ -687,78 +685,20 @@ static int r8192_wx_set_enc(struct net_device *dev,
                //printk("-------====>length:%d, key_idx:%d, flag:%x\n", wrqu->encoding.length, key_idx, wrqu->encoding.flags);
                if(wrqu->encoding.length==0x5){
                ieee->pairwise_key_type = KEY_TYPE_WEP40;
-                       EnableHWSecurityConfig8192(dev);
-                       setKey( dev,
-                               key_idx,                //EntryNo
-                               key_idx,                //KeyIndex
-                               KEY_TYPE_WEP40,         //KeyType
-                               zero_addr[key_idx],
-                               0,                      //DefaultKey
-                               hwkey);                 //KeyContent
-
-#if 0
-                       if(key_idx == 0){
-
-                               //write_nic_byte(dev, SECR, 7);
-                               setKey( dev,
-                                       4,                      //EntryNo
-                                       key_idx,                      //KeyIndex
-                                       KEY_TYPE_WEP40,        //KeyType
-                                       broadcast_addr,         //addr
-                                       0,                      //DefaultKey
-                                       hwkey);                 //KeyContent
-                       }
-#endif
+                       EnableHWSecurityConfig8192(priv);
+                       setKey(priv, key_idx, key_idx, KEY_TYPE_WEP40,
+                              zero_addr[key_idx], 0, hwkey);
                }
 
                else if(wrqu->encoding.length==0xd){
                        ieee->pairwise_key_type = KEY_TYPE_WEP104;
-                               EnableHWSecurityConfig8192(dev);
-                       setKey( dev,
-                               key_idx,                //EntryNo
-                               key_idx,                //KeyIndex
-                               KEY_TYPE_WEP104,        //KeyType
-                               zero_addr[key_idx],
-                               0,                      //DefaultKey
-                               hwkey);                 //KeyContent
-#if 0
-                       if(key_idx == 0){
-
-                               //write_nic_byte(dev, SECR, 7);
-                               setKey( dev,
-                                       4,                      //EntryNo
-                                       key_idx,                      //KeyIndex
-                                       KEY_TYPE_WEP104,        //KeyType
-                                       broadcast_addr,         //addr
-                                       0,                      //DefaultKey
-                                       hwkey);                 //KeyContent
-                       }
-#endif
+                               EnableHWSecurityConfig8192(priv);
+                       setKey(priv, key_idx, key_idx, KEY_TYPE_WEP104,
+                              zero_addr[key_idx], 0, hwkey);
                }
                else printk("wrong type in WEP, not WEP40 and WEP104\n");
-
-
        }
 
-#if 0
-       //consider the setting different key index situation
-       //wrqu->encoding.flags = 801 means that we set key with index "1"
-       if(wrqu->encoding.length==0 && (wrqu->encoding.flags >>8) == 0x8 ){
-               printk("===>1\n");
-               //write_nic_byte(dev, SECR, 7);
-               EnableHWSecurityConfig8192(dev);
-               //copy wpa config from default key(key0~key3) to broadcast key(key5)
-               //
-               key_idx = (wrqu->encoding.flags & 0xf)-1 ;
-               write_cam(dev, (4*6),   0xffff0000|read_cam(dev, key_idx*6) );
-               write_cam(dev, (4*6)+1, 0xffffffff);
-               write_cam(dev, (4*6)+2, read_cam(dev, (key_idx*6)+2) );
-               write_cam(dev, (4*6)+3, read_cam(dev, (key_idx*6)+3) );
-               write_cam(dev, (4*6)+4, read_cam(dev, (key_idx*6)+4) );
-               write_cam(dev, (4*6)+5, read_cam(dev, (key_idx*6)+5) );
-       }
-#endif
-
        priv->ieee80211->wx_set_enc = 0;
 
        return ret;
@@ -820,7 +760,7 @@ static int r8192_wx_set_retry(struct net_device *dev,
         * I'm unsure if whole reset is really needed
         */
 
-       rtl8192_commit(dev);
+       rtl8192_commit(priv);
        /*
        if(priv->up){
                rtl8180_rtx_disable(dev);
@@ -902,7 +842,6 @@ exit:
        return err;
 }
 
-#if (WIRELESS_EXT >= 18)
 static int r8192_wx_set_enc_ext(struct net_device *dev,
                                         struct iw_request_info *info,
                                         union iwreq_data *wrqu, char *extra)
@@ -920,7 +859,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev,
 
 #ifdef ENABLE_IPS
         down(&priv->ieee80211->ips_sem);
-        IPSLeave(dev);
+        IPSLeave(priv);
         up(&priv->ieee80211->ips_sem);
 #endif
 
@@ -932,19 +871,13 @@ static int r8192_wx_set_enc_ext(struct net_device *dev,
                u32 key[4] = {0};
                struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
                struct iw_point *encoding = &wrqu->encoding;
-#if 0
-               static u8 CAM_CONST_ADDR[4][6] = {
-                       {0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
-                       {0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
-                       {0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
-                       {0x00, 0x00, 0x00, 0x00, 0x00, 0x03}};
-#endif
                u8 idx = 0, alg = 0, group = 0;
+
                if ((encoding->flags & IW_ENCODE_DISABLED) ||
                ext->alg == IW_ENCODE_ALG_NONE) //none is not allowed to use hwsec WB 2008.07.01
                {
                        ieee->pairwise_key_type = ieee->group_key_type = KEY_TYPE_NA;
-                       CamResetAllEntry(dev);
+                       CamResetAllEntry(priv);
                        goto end_hw_sec;
                }
                alg =  (ext->alg == IW_ENCODE_ALG_CCMP)?KEY_TYPE_CCMP:ext->alg; // as IW_ENCODE_ALG_CCMP is defined to be 3 and KEY_TYPE_CCMP is defined to 4;
@@ -958,7 +891,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev,
                        if ((ext->key_len == 13) && (alg == KEY_TYPE_WEP40) )
                                alg = KEY_TYPE_WEP104;
                        ieee->pairwise_key_type = alg;
-                       EnableHWSecurityConfig8192(dev);
+                       EnableHWSecurityConfig8192(priv);
                }
                memcpy((u8*)key, ext->key, 16); //we only get 16 bytes key.why? WB 2008.7.1
 
@@ -966,37 +899,20 @@ static int r8192_wx_set_enc_ext(struct net_device *dev,
                {
                        if (ext->key_len == 13)
                                ieee->pairwise_key_type = alg = KEY_TYPE_WEP104;
-                       setKey( dev,
-                                       idx,//EntryNo
-                                       idx, //KeyIndex
-                                       alg,  //KeyType
-                                       zero, //MacAddr
-                                       0,              //DefaultKey
-                                       key);           //KeyContent
+                       setKey(priv, idx, idx, alg, zero, 0, key);
                }
                else if (group)
                {
                        ieee->group_key_type = alg;
-                       setKey( dev,
-                                       idx,//EntryNo
-                                       idx, //KeyIndex
-                                       alg,  //KeyType
-                                       broadcast_addr, //MacAddr
-                                       0,              //DefaultKey
-                                       key);           //KeyContent
+                       setKey(priv, idx, idx, alg, broadcast_addr, 0, key);
                }
                else //pairwise key
                {
                        if ((ieee->pairwise_key_type == KEY_TYPE_CCMP) && ieee->pHTInfo->bCurrentHTSupport){
-                                                       write_nic_byte(dev, 0x173, 1); //fix aes bug
+                                                       write_nic_byte(priv, 0x173, 1); //fix aes bug
                        }
-                       setKey( dev,
-                                       4,//EntryNo
-                                       idx, //KeyIndex
-                                       alg,  //KeyType
-                                       (u8*)ieee->ap_mac_addr, //MacAddr
-                                       0,              //DefaultKey
-                                       key);           //KeyContent
+                       setKey(priv, 4, idx, alg,
+                              (u8*)ieee->ap_mac_addr, 0, key);
                }
 
 
@@ -1042,7 +958,7 @@ static int r8192_wx_set_mlme(struct net_device *dev,
        up(&priv->wx_sem);
        return ret;
 }
-#endif
+
 static int r8192_wx_set_gen_ie(struct net_device *dev,
                                         struct iw_request_info *info,
                                         union iwreq_data *data, char *extra)
@@ -1074,7 +990,7 @@ static int r8192_wx_adapter_power_status(struct net_device *dev,
 {
        struct r8192_priv *priv = ieee80211_priv(dev);
 #ifdef ENABLE_LPS
-       PRT_POWER_SAVE_CONTROL pPSC = (PRT_POWER_SAVE_CONTROL)(&(priv->ieee80211->PowerSaveControl));
+       PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl;
        struct ieee80211_device* ieee = priv->ieee80211;
 #endif
        down(&priv->wx_sem);
@@ -1090,7 +1006,7 @@ static int r8192_wx_adapter_power_status(struct net_device *dev,
        } else {
                //LZM for PS-Poll AID issue. 090429
                if(priv->ieee80211->state == IEEE80211_LINKED)
-                       LeisurePSLeave(dev);
+                       LeisurePSLeave(priv->ieee80211);
 
                priv->ps_force = true;
                pPSC->bLeisurePs = false;
@@ -1128,11 +1044,7 @@ static iw_handler r8192_wx_handlers[] =
         NULL,                     /* SIOCWIWTHRSPY */
         r8192_wx_set_wap,                /* SIOCSIWAP */
         r8192_wx_get_wap,         /* SIOCGIWAP */
-#if (WIRELESS_EXT >= 18)
-        r8192_wx_set_mlme,                     /* MLME-- */
-#else
-        NULL,
-#endif
+       r8192_wx_set_mlme,        /* MLME-- */
         dummy,                     /* SIOCGIWAPLIST -- depricated */
         r8192_wx_set_scan,        /* SIOCSIWSCAN */
         r8192_wx_get_scan,        /* SIOCGIWSCAN */
@@ -1160,15 +1072,9 @@ static iw_handler r8192_wx_handlers[] =
        NULL,                   /*---hole---*/
        r8192_wx_set_gen_ie,//NULL,                     /* SIOCSIWGENIE */
        NULL,                   /* SIOCSIWGENIE */
-#if (WIRELESS_EXT >= 18)
        r8192_wx_set_auth,//NULL,                       /* SIOCSIWAUTH */
        NULL,//r8192_wx_get_auth,//NULL,                        /* SIOCSIWAUTH */
        r8192_wx_set_enc_ext,                   /* SIOCSIWENCODEEXT */
-#else
-       NULL,
-       NULL,
-       NULL,
-#endif
        NULL,//r8192_wx_get_enc_ext,//NULL,                     /* SIOCSIWENCODEEXT */
        NULL,                   /* SIOCSIWPMKSA */
        NULL,                    /*---hole---*/
@@ -1216,8 +1122,7 @@ static iw_handler r8192_private_handler[] = {
        r8192_wx_adapter_power_status,
 };
 
-//#if WIRELESS_EXT >= 17
-struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev)
+static struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev)
 {
        struct r8192_priv *priv = ieee80211_priv(dev);
        struct ieee80211_device* ieee = priv->ieee80211;
@@ -1245,7 +1150,6 @@ struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev)
        wstats->qual.updated = IW_QUAL_ALL_UPDATED | IW_QUAL_DBM;
        return wstats;
 }
-//#endif
 
 
 struct iw_handler_def  r8192_wx_handlers_def={
@@ -1254,8 +1158,6 @@ struct iw_handler_def  r8192_wx_handlers_def={
        .private = r8192_private_handler,
        .num_private = sizeof(r8192_private_handler) / sizeof(iw_handler),
        .num_private_args = sizeof(r8192_private_args) / sizeof(struct iw_priv_args),
-#if WIRELESS_EXT >= 17
        .get_wireless_stats = r8192_get_wireless_stats,
-#endif
        .private_args = (struct iw_priv_args *)r8192_private_args,
 };