static void MlmeDisassociateRequest(struct r8192_priv *priv, u8 *asSta, u8 asRsn) { u8 i; RemovePeerTS(priv->ieee80211, asSta); SendDisassociation( priv->ieee80211, asSta, asRsn ); if(memcpy(priv->ieee80211->current_network.bssid,asSta,6) == NULL) { //ShuChen TODO: change media status. //ShuChen TODO: What to do when disassociate. priv->ieee80211->state = IEEE80211_NOLINK; for(i=0;i<6;i++) priv->ieee80211->current_network.bssid[i] = 0x22; priv->OpMode = RT_OP_MODE_NO_LINK; { RT_OP_MODE OpMode = priv->OpMode; u8 btMsr = read_nic_byte(priv, MSR); btMsr &= 0xfc; switch(OpMode) { case RT_OP_MODE_INFRASTRUCTURE: btMsr |= MSR_LINK_MANAGED; break; case RT_OP_MODE_IBSS: btMsr |= MSR_LINK_ADHOC; // led link set separate break; case RT_OP_MODE_AP: btMsr |= MSR_LINK_MASTER; break; default: btMsr |= MSR_LINK_NONE; break; } write_nic_byte(priv, MSR, btMsr); } ieee80211_disassociate(priv->ieee80211); write_nic_word(priv, BSSIDR, ((u16*)priv->ieee80211->current_network.bssid)[0]); write_nic_dword(priv, BSSIDR+2, ((u32*)(priv->ieee80211->current_network.bssid+2))[0]); } }
static void MlmeDisassociateRequest( struct net_device* dev, u8* asSta, u8 asRsn ) { struct r8192_priv *priv = ieee80211_priv(dev); u8 i; RemovePeerTS(priv->ieee80211, asSta); SendDisassociation( priv->ieee80211, asSta, asRsn ); if(memcpy(priv->ieee80211->current_network.bssid,asSta,6) == NULL) { //ShuChen TODO: change media status. //ShuChen TODO: What to do when disassociate. priv->ieee80211->state = IEEE80211_NOLINK; //pMgntInfo->AsocTimestamp = 0; for(i=0;i<6;i++) priv->ieee80211->current_network.bssid[i] = 0x22; // pMgntInfo->mBrates.Length = 0; // Adapter->HalFunc.SetHwRegHandler( Adapter, HW_VAR_BASIC_RATE, (pu1Byte)(&pMgntInfo->mBrates) ); priv->OpMode = RT_OP_MODE_NO_LINK; { RT_OP_MODE OpMode = priv->OpMode; //LED_CTL_MODE LedAction = LED_CTL_NO_LINK; u8 btMsr = read_nic_byte(dev, MSR); btMsr &= 0xfc; switch(OpMode) { case RT_OP_MODE_INFRASTRUCTURE: btMsr |= MSR_LINK_MANAGED; //LedAction = LED_CTL_LINK; break; case RT_OP_MODE_IBSS: btMsr |= MSR_LINK_ADHOC; // led link set seperate break; case RT_OP_MODE_AP: btMsr |= MSR_LINK_MASTER; //LedAction = LED_CTL_LINK; break; default: btMsr |= MSR_LINK_NONE; break; } write_nic_byte(dev, MSR, btMsr); // LED control //Adapter->HalFunc.LedControlHandler(Adapter, LedAction); } ieee80211_disassociate(priv->ieee80211); write_nic_word(dev, BSSIDR, ((u16*)priv->ieee80211->current_network.bssid)[0]); write_nic_dword(dev, BSSIDR+2, ((u32*)(priv->ieee80211->current_network.bssid+2))[0]); } }