diff options
Diffstat (limited to 'drivers/staging/rtl8192e/r8192E_wx.c')
-rw-r--r-- | drivers/staging/rtl8192e/r8192E_wx.c | 170 |
1 files changed, 36 insertions, 134 deletions
diff --git a/drivers/staging/rtl8192e/r8192E_wx.c b/drivers/staging/rtl8192e/r8192E_wx.c index 5ae65164af5c..adad91b0b6b1 100644 --- a/drivers/staging/rtl8192e/r8192E_wx.c +++ b/drivers/staging/rtl8192e/r8192E_wx.c @@ -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, }; |