Changeset 053fc2b in mainline for uspace/lib/ieee80211/src/ieee80211_impl.c
- Timestamp:
- 2015-04-10T13:52:11Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a931b7b
- Parents:
- d7dadcb4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/ieee80211/src/ieee80211_impl.c
rd7dadcb4 r053fc2b 90 90 * @return EOK. 91 91 */ 92 int ieee80211_bssid_change_impl(ieee80211_dev_t *ieee80211_dev) 92 int ieee80211_bssid_change_impl(ieee80211_dev_t *ieee80211_dev, 93 bool connected) 93 94 { 94 95 return EOK; … … 118 119 int ieee80211_scan_impl(ieee80211_dev_t *ieee80211_dev) 119 120 { 120 if(ieee80211_is_connected(ieee80211_dev)) 121 return EOK; 122 123 fibril_mutex_lock(&ieee80211_dev->ap_list.scan_mutex); 124 125 /* Remove old entries we don't receive beacons from. */ 126 ieee80211_scan_result_list_t *result_list = 127 &ieee80211_dev->ap_list; 128 list_foreach_safe(result_list->list, cur_link, next_link) { 129 ieee80211_scan_result_link_t *cur_result = 130 list_get_instance(cur_link, 131 ieee80211_scan_result_link_t, 132 link); 133 if((time(NULL) - cur_result->last_beacon) > 134 MAX_KEEP_SCAN_SPAN_SEC) { 135 ieee80211_scan_result_list_remove(result_list, 136 cur_result); 121 fibril_mutex_lock(&ieee80211_dev->scan_mutex); 122 123 if(ieee80211_get_auth_phase(ieee80211_dev) == 124 IEEE80211_AUTH_DISCONNECTED) { 125 fibril_mutex_lock(&ieee80211_dev->ap_list.results_mutex); 126 /* Remove old entries we don't receive beacons from. */ 127 ieee80211_scan_result_list_t *result_list = 128 &ieee80211_dev->ap_list; 129 list_foreach_safe(result_list->list, cur_link, next_link) { 130 ieee80211_scan_result_link_t *cur_result = 131 list_get_instance(cur_link, 132 ieee80211_scan_result_link_t, 133 link); 134 if((time(NULL) - cur_result->last_beacon) > 135 MAX_KEEP_SCAN_SPAN_SEC) { 136 ieee80211_scan_result_list_remove(result_list, 137 cur_result); 138 } 137 139 } 138 } 139 140 fibril_mutex_unlock(&ieee80211_dev->ap_list.scan_mutex); 141 142 uint16_t orig_freq = ieee80211_dev->current_freq; 143 144 for(uint16_t freq = IEEE80211_FIRST_FREQ; 145 freq <= IEEE80211_MAX_FREQ; 146 freq += IEEE80211_CHANNEL_GAP) { 147 ieee80211_dev->ops->set_freq(ieee80211_dev, freq); 148 ieee80211_probe_request(ieee80211_dev, NULL); 149 150 /* Wait for probe responses. */ 151 usleep(100000); 152 } 153 154 ieee80211_dev->ops->set_freq(ieee80211_dev, orig_freq); 155 156 fibril_mutex_lock(&ieee80211_dev->ap_list.scan_mutex); 157 time(&ieee80211_dev->ap_list.last_scan); 158 fibril_mutex_unlock(&ieee80211_dev->ap_list.scan_mutex); 140 fibril_mutex_unlock(&ieee80211_dev->ap_list.results_mutex); 141 142 uint16_t orig_freq = ieee80211_dev->current_freq; 143 144 for(uint16_t freq = IEEE80211_FIRST_FREQ; 145 freq <= IEEE80211_MAX_FREQ; 146 freq += IEEE80211_CHANNEL_GAP) { 147 if(ieee80211_pending_connect_request(ieee80211_dev)) { 148 break; 149 } 150 151 ieee80211_dev->ops->set_freq(ieee80211_dev, freq); 152 ieee80211_probe_request(ieee80211_dev, NULL); 153 154 /* Wait for probe responses. */ 155 async_usleep(SCAN_CHANNEL_WAIT_USEC); 156 } 157 158 ieee80211_dev->ops->set_freq(ieee80211_dev, orig_freq); 159 } 160 161 fibril_mutex_unlock(&ieee80211_dev->scan_mutex); 159 162 160 163 return EOK;
Note:
See TracChangeset
for help on using the changeset viewer.