int ips_leave23a(struct rtw_adapter *padapter) { struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv; struct security_priv *psecuritypriv = &padapter->securitypriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; int result = _SUCCESS; int keyid; down(&pwrpriv->lock); if (pwrpriv->rf_pwrstate == rf_off && !pwrpriv->bips_processing) { pwrpriv->bips_processing = true; pwrpriv->change_rfpwrstate = rf_on; pwrpriv->ips_leave23a_cnts++; DBG_8723A("==>ips_leave23a cnts:%d\n", pwrpriv->ips_leave23a_cnts); result = rtw_ips_pwr_up23a(padapter); if (result == _SUCCESS) pwrpriv->rf_pwrstate = rf_on; DBG_8723A_LEVEL(_drv_always_, "nolinked power save leave\n"); if (psecuritypriv->dot11PrivacyAlgrthm == WLAN_CIPHER_SUITE_WEP40 || psecuritypriv->dot11PrivacyAlgrthm == WLAN_CIPHER_SUITE_WEP104) { DBG_8723A("==>%s, channel(%d), processing(%x)\n", __func__, padapter->mlmeextpriv.cur_channel, pwrpriv->bips_processing); set_channel_bwmode23a(padapter, padapter->mlmeextpriv.cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); for (keyid = 0; keyid < 4; keyid++) { if (pmlmepriv->key_mask & BIT(keyid)) { if (keyid == psecuritypriv->dot11PrivacyKeyIndex) result = rtw_set_key23a(padapter, psecuritypriv, keyid, 1); else result = rtw_set_key23a(padapter, psecuritypriv, keyid, 0); } } } DBG_8723A("==> ips_leave23a.....LED(0x%08x)...\n", rtl8723au_read32(padapter, 0x4c)); pwrpriv->bips_processing = false; pwrpriv->bkeepfwalive = false; pwrpriv->bpower_saving = false; } up(&pwrpriv->lock); return result; }
static void sreset_restore_security_station(struct rtw_adapter *padapter) { struct mlme_priv *mlmepriv = &padapter->mlmepriv; struct sta_priv *pstapriv = &padapter->stapriv; struct sta_info *psta; struct mlme_ext_info *pmlmeinfo = &padapter->mlmeextpriv.mlmext_info; u8 val8; if (pmlmeinfo->auth_algo == dot11AuthAlgrthm_8021X) val8 = 0xcc; else val8 = 0xcf; rtl8723a_set_sec_cfg(padapter, val8); if (padapter->securitypriv.dot11PrivacyAlgrthm == WLAN_CIPHER_SUITE_TKIP || padapter->securitypriv.dot11PrivacyAlgrthm == WLAN_CIPHER_SUITE_CCMP) { psta = rtw_get_stainfo23a(pstapriv, get_bssid(mlmepriv)); if (psta == NULL) { /* DEBUG_ERR(("Set wpa_set_encryption: Obtain Sta_info fail\n")); */ } else { /* pairwise key */ rtw_setstakey_cmd23a(padapter, (unsigned char *)psta, true); /* group key */ rtw_set_key23a(padapter,&padapter->securitypriv, padapter->securitypriv.dot118021XGrpKeyid, 0); } } }