static void MgntDisconnectIBSS( struct net_device* dev ) { struct r8192_priv *priv = ieee80211_priv(dev); //RT_OP_MODE OpMode; u8 i; bool bFilterOutNonAssociatedBSSID = false; //IEEE80211_DEBUG(IEEE80211_DL_TRACE, "XXXXXXXXXX MgntDisconnect IBSS\n"); priv->ieee80211->state = IEEE80211_NOLINK; // PlatformZeroMemory( pMgntInfo->Bssid, 6 ); for(i=0;i<6;i++) priv->ieee80211->current_network.bssid[i]= 0x55; priv->OpMode = RT_OP_MODE_NO_LINK; 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]); { 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_stop_send_beacons(priv->ieee80211); // If disconnect, clear RCR CBSSID bit bFilterOutNonAssociatedBSSID = false; { u32 RegRCR, Type; Type = bFilterOutNonAssociatedBSSID; RegRCR = read_nic_dword(dev,RCR); priv->ReceiveConfig = RegRCR; if (Type == true) RegRCR |= (RCR_CBSSID); else if (Type == false) RegRCR &= (~RCR_CBSSID); { write_nic_dword(dev, RCR,RegRCR); priv->ReceiveConfig = RegRCR; } } //MgntIndicateMediaStatus( Adapter, RT_MEDIA_DISCONNECT, GENERAL_INDICATE ); notify_wx_assoc_event(priv->ieee80211); }
static void MgntDisconnectIBSS(struct r8192_priv *priv) { u8 i; bool bFilterOutNonAssociatedBSSID = false; priv->ieee80211->state = IEEE80211_NOLINK; for(i=0;i<6;i++) priv->ieee80211->current_network.bssid[i]= 0x55; priv->OpMode = RT_OP_MODE_NO_LINK; 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]); { 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_stop_send_beacons(priv->ieee80211); // If disconnect, clear RCR CBSSID bit bFilterOutNonAssociatedBSSID = false; { u32 RegRCR, Type; Type = bFilterOutNonAssociatedBSSID; RegRCR = read_nic_dword(priv, RCR); priv->ReceiveConfig = RegRCR; if (Type == true) RegRCR |= (RCR_CBSSID); else if (Type == false) RegRCR &= (~RCR_CBSSID); { write_nic_dword(priv, RCR, RegRCR); priv->ReceiveConfig = RegRCR; } } notify_wx_assoc_event(priv->ieee80211); }