Commit c1bda44a authored by Ivo van Doorn's avatar Ivo van Doorn Committed by James Ketrenos

When an assoc_resp is received the network structure is not completely

initialized which can cause problems for drivers that expect the network
structure to be completely filled in.

This patch will make sure the network is filled in as much as possible.
Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJames Ketrenos <jketreno@linux.intel.com>
parent ff9e00f1
......@@ -1106,10 +1106,41 @@ static int ieee80211_handle_assoc_resp(struct ieee80211_device *ieee, struct iee
//network->atim_window = le16_to_cpu(frame->aid) & (0x3FFF);
network->atim_window = le16_to_cpu(frame->aid);
network->listen_interval = le16_to_cpu(frame->status);
memcpy(network->bssid, frame->header.addr3, ETH_ALEN);
network->capability = le16_to_cpu(frame->capability);
network->last_scanned = jiffies;
network->rates_len = network->rates_ex_len = 0;
network->last_associate = 0;
network->ssid_len = 0;
network->erp_value = (network->capability & WLAN_CAPABILITY_IBSS) ? 0x3 : 0x0;
if (stats->freq == IEEE80211_52GHZ_BAND) {
/* for A band (No DS info) */
network->channel = stats->received_channel;
} else
network->flags |= NETWORK_HAS_CCK;
network->wpa_ie_len = 0;
network->rsn_ie_len = 0;
if(ieee80211_parse_info_param(frame->info_element, stats->len - sizeof(*frame), network))
return 1;
network->mode = 0;
if (stats->freq == IEEE80211_52GHZ_BAND)
network->mode = IEEE_A;
else {
if (network->flags & NETWORK_HAS_OFDM)
network->mode |= IEEE_G;
if (network->flags & NETWORK_HAS_CCK)
network->mode |= IEEE_B;
}
if (ieee80211_is_empty_essid(network->ssid, network->ssid_len))
network->flags |= NETWORK_EMPTY_ESSID;
memcpy(&network->stats, stats, sizeof(network->stats));
if (ieee->handle_assoc_response != NULL)
ieee->handle_assoc_response(dev, frame, network);
......@@ -1126,6 +1157,7 @@ static inline int ieee80211_network_init(struct ieee80211_device *ieee, struct i
network->qos_data.active = 0;
network->qos_data.supported = 0;
network->qos_data.param_count = 0;
network->qos_data.old_param_count = 0;
/* Pull out fixed field data */
memcpy(network->bssid, beacon->header.addr3, ETH_ALEN);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment