diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/scan.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/scan.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c index ecebff681bb..ca3761965e8 100644 --- a/drivers/net/wireless/mwifiex/scan.c +++ b/drivers/net/wireless/mwifiex/scan.c | |||
@@ -1464,9 +1464,9 @@ int mwifiex_check_network_compatibility(struct mwifiex_private *priv, | |||
1464 | } | 1464 | } |
1465 | 1465 | ||
1466 | static int | 1466 | static int |
1467 | mwifiex_update_curr_bss_params(struct mwifiex_private *priv, | 1467 | mwifiex_update_curr_bss_params(struct mwifiex_private *priv, u8 *bssid, |
1468 | u8 *bssid, s32 rssi, const u8 *ie_buf, | 1468 | s32 rssi, const u8 *ie_buf, size_t ie_len, |
1469 | size_t ie_len, u16 beacon_period, u16 cap_info_bitmap) | 1469 | u16 beacon_period, u16 cap_info_bitmap, u8 band) |
1470 | { | 1470 | { |
1471 | struct mwifiex_bssdescriptor *bss_desc = NULL; | 1471 | struct mwifiex_bssdescriptor *bss_desc = NULL; |
1472 | int ret; | 1472 | int ret; |
@@ -1489,7 +1489,7 @@ mwifiex_update_curr_bss_params(struct mwifiex_private *priv, | |||
1489 | 1489 | ||
1490 | ret = mwifiex_fill_new_bss_desc(priv, bssid, rssi, beacon_ie, | 1490 | ret = mwifiex_fill_new_bss_desc(priv, bssid, rssi, beacon_ie, |
1491 | ie_len, beacon_period, | 1491 | ie_len, beacon_period, |
1492 | cap_info_bitmap, bss_desc); | 1492 | cap_info_bitmap, band, bss_desc); |
1493 | if (ret) | 1493 | if (ret) |
1494 | goto done; | 1494 | goto done; |
1495 | 1495 | ||
@@ -1533,6 +1533,11 @@ done: | |||
1533 | return 0; | 1533 | return 0; |
1534 | } | 1534 | } |
1535 | 1535 | ||
1536 | static void mwifiex_free_bss_priv(struct cfg80211_bss *bss) | ||
1537 | { | ||
1538 | kfree(bss->priv); | ||
1539 | } | ||
1540 | |||
1536 | /* | 1541 | /* |
1537 | * This function handles the command response of scan. | 1542 | * This function handles the command response of scan. |
1538 | * | 1543 | * |
@@ -1571,6 +1576,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, | |||
1571 | struct chan_band_param_set *chan_band; | 1576 | struct chan_band_param_set *chan_band; |
1572 | u8 is_bgscan_resp; | 1577 | u8 is_bgscan_resp; |
1573 | unsigned long flags; | 1578 | unsigned long flags; |
1579 | struct cfg80211_bss *bss; | ||
1574 | 1580 | ||
1575 | is_bgscan_resp = (le16_to_cpu(resp->command) | 1581 | is_bgscan_resp = (le16_to_cpu(resp->command) |
1576 | == HostCmd_CMD_802_11_BG_SCAN_QUERY); | 1582 | == HostCmd_CMD_802_11_BG_SCAN_QUERY); |
@@ -1752,10 +1758,12 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, | |||
1752 | chan = ieee80211_get_channel(priv->wdev->wiphy, freq); | 1758 | chan = ieee80211_get_channel(priv->wdev->wiphy, freq); |
1753 | 1759 | ||
1754 | if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) { | 1760 | if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) { |
1755 | cfg80211_inform_bss(priv->wdev->wiphy, chan, | 1761 | bss = cfg80211_inform_bss(priv->wdev->wiphy, |
1756 | bssid, network_tsf, cap_info_bitmap, | 1762 | chan, bssid, network_tsf, |
1757 | beacon_period, ie_buf, ie_len, rssi, | 1763 | cap_info_bitmap, beacon_period, |
1758 | GFP_KERNEL); | 1764 | ie_buf, ie_len, rssi, GFP_KERNEL); |
1765 | *(u8 *)bss->priv = band; | ||
1766 | bss->free_priv = mwifiex_free_bss_priv; | ||
1759 | 1767 | ||
1760 | if (priv->media_connected && !memcmp(bssid, | 1768 | if (priv->media_connected && !memcmp(bssid, |
1761 | priv->curr_bss_params.bss_descriptor | 1769 | priv->curr_bss_params.bss_descriptor |
@@ -1763,7 +1771,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, | |||
1763 | mwifiex_update_curr_bss_params(priv, | 1771 | mwifiex_update_curr_bss_params(priv, |
1764 | bssid, rssi, ie_buf, | 1772 | bssid, rssi, ie_buf, |
1765 | ie_len, beacon_period, | 1773 | ie_len, beacon_period, |
1766 | cap_info_bitmap); | 1774 | cap_info_bitmap, band); |
1767 | } | 1775 | } |
1768 | } else { | 1776 | } else { |
1769 | dev_dbg(adapter->dev, "missing BSS channel IE\n"); | 1777 | dev_dbg(adapter->dev, "missing BSS channel IE\n"); |