aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwifiex/scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/mwifiex/scan.c')
-rw-r--r--drivers/net/wireless/mwifiex/scan.c26
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
1466static int 1466static int
1467mwifiex_update_curr_bss_params(struct mwifiex_private *priv, 1467mwifiex_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
1536static 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");