void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork)
{
-
struct __queue *free_queue = &pmlmepriv->free_bss_pool;
if (!pnetwork)
phead = get_list_head(scanned_queue);
list_for_each_safe(plist, tmp, phead) {
-
pnetwork = list_entry(plist, struct wlan_network, list);
_rtw_free_network(pmlmepriv, pnetwork, isfreeall);
-
}
spin_unlock_bh(&scanned_queue->lock);
ret = true;
return ret;
-
}
inline int is_same_ess(struct wlan_bssid_ex *a, struct wlan_bssid_ex *b)
(d_cap & WLAN_CAPABILITY_IBSS)) &&
((s_cap & WLAN_CAPABILITY_ESS) ==
(d_cap & WLAN_CAPABILITY_ESS));
-
}
struct wlan_network *_rtw_find_same_network(struct __queue *scanned_queue, struct wlan_network *network)
phead = get_list_head(scanned_queue);
list_for_each(plist, phead) {
-
pwlan = list_entry(plist, struct wlan_network, list);
if (!pwlan->fixed) {
}
}
return oldest;
-
}
void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
sq_final = dst->phy_info.signal_quality;
rssi_final = dst->rssi;
}
-
}
if (update_ie) {
if (!oldest || time_after(oldest->last_scanned, pnetwork->last_scanned))
oldest = pnetwork;
-
}
/* If we didn't find a match, then get a new network slot to initialize
pnetwork->network.phy_info.signal_quality = 0;
list_add_tail(&pnetwork->list, &queue->queue);
-
}
} else {
/* we have an entry and we are going to update it. But this entry may
return true;
else
return false;
-
}
if (adapter->registrypriv.wifi_spec == 1) { /* for correct flow of 8021X to do.... */
u8 *p = NULL;
pmlmepriv->to_join = false;
if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED)) {
-
set_fwstate(pmlmepriv, _FW_LINKED);
if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
pmlmeext->scan_abort = true;
while (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)
&& jiffies_to_msecs(start) <= 200) {
-
if (adapter->bDriverStopped || adapter->bSurpriseRemoved)
break;
}
return psta;
-
}
/* pnetwork : returns from rtw_joinbss_event_callback */
if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
-
rtw_free_stainfo(adapter, psta);
if (adapter->stapriv.asoc_sta_count == 1) {/* a sta + bc/mc_stainfo (not Ibss_stainfo) */
u8 ret = _SUCCESS;
+
spin_lock_bh(&pmlmepriv->scanned_queue.lock);
/* free old ibss network */
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.mac_address);
if (ret != _SUCCESS)
goto unlock;
}
-
}
unlock:
/* indicate disconnect for the case that join_timeout and check_fwstate != FW_LINKED */
rtw_cfg80211_indicate_disconnect(adapter);
-
}
spin_unlock_bh(&pmlmepriv->lock);
if (pmlmepriv->auto_scan_int_ms != 0
&& jiffies_to_msecs(jiffies - pmlmepriv->scan_start_time) > pmlmepriv->auto_scan_int_ms) {
-
if (!padapter->registrypriv.wifi_spec) {
if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY | _FW_UNDER_LINKING) == true)
goto exit;
phead = get_list_head(queue);
list_for_each(mlme->pscanned, phead) {
-
pnetwork = list_entry(mlme->pscanned, struct wlan_network,
list);
rtw_check_roaming_candidate(mlme, &candidate, pnetwork);
-
}
if (!candidate) {
phead = get_list_head(queue);
list_for_each(pmlmepriv->pscanned, phead) {
-
pnetwork = list_entry(pmlmepriv->pscanned,
struct wlan_network, list);
rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork);
-
}
if (!candidate) {
adapter->securitypriv.key_mask |= BIT(psetkeyparm->keyid);
switch (psetkeyparm->algorithm) {
-
case _WEP40_:
keylen = 5;
memcpy(&psetkeyparm->key[0], &psecuritypriv->dot11DefKey[keyid].skey[0], keylen);
}
return ielength;
-
}
/* Ported from 8185: IsInPreAuthKeyList().
}
return phtpriv->ht_option;
-
}
/* the function is > passive_level (in critical_section) */
max_ampdu_sz = 1 << (max_ampdu_sz+3); /* max_ampdu_sz (kbytes); */
phtpriv->rx_ampdu_maxlen = max_ampdu_sz;
-
}
len = 0;
rtw_addbareq_cmd(padapter, (u8) priority, pattrib->ra);
}
}
-
}
void rtw_append_exented_cap(struct adapter *padapter, u8 *out_ie, uint *pout_len)
_rtw_roaming(padapter, tgt_network);
spin_unlock_bh(&pmlmepriv->lock);
}
+
void _rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
{
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;