diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c index 185d3903073d..39f8ca8373d2 100644 --- a/drivers/staging/rtl8192e/r8192E_core.c +++ b/drivers/staging/rtl8192e/r8192E_core.c @@ -3231,267 +3231,6 @@ rtl819x_ifcheck_resetornot(struct net_device *dev) } - -static void CamRestoreAllEntry(struct net_device *dev) -{ - u8 EntryId = 0; - struct r8192_priv *priv = ieee80211_priv(dev); - const u8* MacAddr = priv->ieee80211->current_network.bssid; - - static const 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}}; - static const u8 CAM_CONST_BROAD[] = - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - - RT_TRACE(COMP_SEC, "CamRestoreAllEntry: \n"); - - - if ((priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP40)|| - (priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP104)) - { - - for(EntryId=0; EntryId<4; EntryId++) - { - { - MacAddr = CAM_CONST_ADDR[EntryId]; - setKey(dev, - EntryId , - EntryId, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } - } - - } - else if(priv->ieee80211->pairwise_key_type == KEY_TYPE_TKIP) - { - - { - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - (u8*)dev->dev_addr, - 0, - NULL); - else - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } - } - else if(priv->ieee80211->pairwise_key_type == KEY_TYPE_CCMP) - { - - { - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - (u8*)dev->dev_addr, - 0, - NULL); - else - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } - } - - - - if(priv->ieee80211->group_key_type == KEY_TYPE_TKIP) - { - MacAddr = CAM_CONST_BROAD; - for(EntryId=1 ; EntryId<4 ; EntryId++) - { - { - setKey(dev, - EntryId, - EntryId, - priv->ieee80211->group_key_type, - MacAddr, - 0, - NULL); - } - } - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 0, - 0, - priv->ieee80211->group_key_type, - CAM_CONST_ADDR[0], - 0, - NULL); - } - else if(priv->ieee80211->group_key_type == KEY_TYPE_CCMP) - { - MacAddr = CAM_CONST_BROAD; - for(EntryId=1; EntryId<4 ; EntryId++) - { - { - setKey(dev, - EntryId , - EntryId, - priv->ieee80211->group_key_type, - MacAddr, - 0, - NULL); - } - } - - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 0 , - 0, - priv->ieee80211->group_key_type, - CAM_CONST_ADDR[0], - 0, - NULL); - } -} - -/* - * This function is used to fix Tx/Rx stop bug temporarily. - * This function will do "system reset" to NIC when Tx or Rx is stuck. - * The method checking Tx/Rx stuck of this function is supported by FW, - * which reports Tx and Rx counter to register 0x128 and 0x130. - */ -static void rtl819x_ifsilentreset(struct net_device *dev) -{ - struct r8192_priv *priv = ieee80211_priv(dev); - u8 reset_times = 0; - int reset_status = 0; - struct ieee80211_device *ieee = priv->ieee80211; - - - return; - - // 2007.07.20. If we need to check CCK stop, please uncomment this line. - //bStuck = Adapter->HalFunc.CheckHWStopHandler(Adapter); - - if(priv->ResetProgress==RESET_TYPE_NORESET) - { -RESET_START: -#ifdef ENABLE_LPS - //LZM for PS-Poll AID issue. 090429 - if(priv->ieee80211->state == IEEE80211_LINKED) - LeisurePSLeave(dev); -#endif - - RT_TRACE(COMP_RESET,"=========>Reset progress!! \n"); - - // Set the variable for reset. - priv->ResetProgress = RESET_TYPE_SILENT; -// rtl8192_close(dev); - - down(&priv->wx_sem); - if(priv->up == 0) - { - RT_TRACE(COMP_ERR,"%s():the driver is not up! return\n",__FUNCTION__); - up(&priv->wx_sem); - return ; - } - priv->up = 0; - RT_TRACE(COMP_RESET,"%s():======>start to down the driver\n",__FUNCTION__); - if(!netif_queue_stopped(dev)) - netif_stop_queue(dev); - - dm_backup_dynamic_mechanism_state(dev); - - rtl8192_irq_disable(dev); - rtl8192_cancel_deferred_work(priv); - deinit_hal_dm(dev); - del_timer_sync(&priv->watch_dog_timer); - ieee->sync_scan_hurryup = 1; - if(ieee->state == IEEE80211_LINKED) - { - down(&ieee->wx_sem); - printk("ieee->state is IEEE80211_LINKED\n"); - ieee80211_stop_send_beacons(priv->ieee80211); - del_timer_sync(&ieee->associate_timer); - cancel_delayed_work(&ieee->associate_retry_wq); - ieee80211_stop_scan(ieee); - up(&ieee->wx_sem); - } - else{ - printk("ieee->state is NOT LINKED\n"); - ieee80211_softmac_stop_protocol(priv->ieee80211,true); - } - rtl8192_halt_adapter(dev, true); - up(&priv->wx_sem); - RT_TRACE(COMP_RESET,"%s():<==========down process is finished\n",__FUNCTION__); - RT_TRACE(COMP_RESET,"%s():===========>start to up the driver\n",__FUNCTION__); - reset_status = _rtl8192_up(dev); - - RT_TRACE(COMP_RESET,"%s():<===========up process is finished\n",__FUNCTION__); - if(reset_status == -1) - { - if(reset_times < 3) - { - reset_times++; - goto RESET_START; - } - else - { - RT_TRACE(COMP_ERR," ERR!!! %s(): Reset Failed!!\n",__FUNCTION__); - } - } - ieee->is_silent_reset = 1; - EnableHWSecurityConfig8192(dev); - if(ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_INFRA) - { - ieee->set_chan(ieee->dev, ieee->current_network.channel); - - queue_work(ieee->wq, &ieee->associate_complete_wq); - - } - else if(ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_ADHOC) - { - ieee->set_chan(ieee->dev, ieee->current_network.channel); - ieee->link_change(ieee->dev); - - // notify_wx_assoc_event(ieee); - - ieee80211_start_send_beacons(ieee); - - if (ieee->data_hard_resume) - ieee->data_hard_resume(ieee->dev); - netif_carrier_on(ieee->dev); - } - - CamRestoreAllEntry(dev); - - // Restore the previous setting for all dynamic mechanism - dm_restore_dynamic_mechanism_state(dev); - - priv->ResetProgress = RESET_TYPE_NORESET; - priv->reset_count++; - - priv->bForcedSilentReset =false; - priv->bResetInProgress = false; - - // For test --> force write UFWP. - write_nic_byte(priv, UFWP, 1); - RT_TRACE(COMP_RESET, "Reset finished!! ====>[%d]\n", priv->reset_count); - } -} - #ifdef ENABLE_IPS void InactivePsWorkItemCallback(struct net_device *dev) { @@ -3850,7 +3589,6 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work) if( ((priv->force_reset) || (!priv->bDisableNormalResetCheck && ResetType==RESET_TYPE_SILENT))) // This is control by OID set in Pomelo { priv->watchdog_last_time = 1; - rtl819x_ifsilentreset(dev); } else priv->watchdog_last_time = 0;