mirror of https://gitee.com/openkylin/linux.git
brcmfmac: Use local storage for ssid iovar
Reviewed-by: Arend Van Spriel <arend@broadcom.com> Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Signed-off-by: Hante Meuleman <meuleman@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
1678ba8ed3
commit
675f5d82a7
|
@ -1031,11 +1031,11 @@ brcmf_cfg80211_escan(struct wiphy *wiphy, struct brcmf_cfg80211_vif *vif,
|
||||||
struct brcmf_if *ifp = vif->ifp;
|
struct brcmf_if *ifp = vif->ifp;
|
||||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||||
struct cfg80211_ssid *ssids;
|
struct cfg80211_ssid *ssids;
|
||||||
struct brcmf_cfg80211_scan_req *sr = &cfg->scan_req_int;
|
|
||||||
u32 passive_scan;
|
u32 passive_scan;
|
||||||
bool escan_req;
|
bool escan_req;
|
||||||
bool spec_scan;
|
bool spec_scan;
|
||||||
s32 err;
|
s32 err;
|
||||||
|
struct brcmf_ssid_le ssid_le;
|
||||||
u32 SSID_len;
|
u32 SSID_len;
|
||||||
|
|
||||||
brcmf_dbg(SCAN, "START ESCAN\n");
|
brcmf_dbg(SCAN, "START ESCAN\n");
|
||||||
|
@ -1088,13 +1088,13 @@ brcmf_cfg80211_escan(struct wiphy *wiphy, struct brcmf_cfg80211_vif *vif,
|
||||||
} else {
|
} else {
|
||||||
brcmf_dbg(SCAN, "ssid \"%s\", ssid_len (%d)\n",
|
brcmf_dbg(SCAN, "ssid \"%s\", ssid_len (%d)\n",
|
||||||
ssids->ssid, ssids->ssid_len);
|
ssids->ssid, ssids->ssid_len);
|
||||||
memset(&sr->ssid_le, 0, sizeof(sr->ssid_le));
|
memset(&ssid_le, 0, sizeof(ssid_le));
|
||||||
SSID_len = min_t(u8, sizeof(sr->ssid_le.SSID), ssids->ssid_len);
|
SSID_len = min_t(u8, sizeof(ssid_le.SSID), ssids->ssid_len);
|
||||||
sr->ssid_le.SSID_len = cpu_to_le32(0);
|
ssid_le.SSID_len = cpu_to_le32(0);
|
||||||
spec_scan = false;
|
spec_scan = false;
|
||||||
if (SSID_len) {
|
if (SSID_len) {
|
||||||
memcpy(sr->ssid_le.SSID, ssids->ssid, SSID_len);
|
memcpy(ssid_le.SSID, ssids->ssid, SSID_len);
|
||||||
sr->ssid_le.SSID_len = cpu_to_le32(SSID_len);
|
ssid_le.SSID_len = cpu_to_le32(SSID_len);
|
||||||
spec_scan = true;
|
spec_scan = true;
|
||||||
} else
|
} else
|
||||||
brcmf_dbg(SCAN, "Broadcast scan\n");
|
brcmf_dbg(SCAN, "Broadcast scan\n");
|
||||||
|
@ -1107,12 +1107,12 @@ brcmf_cfg80211_escan(struct wiphy *wiphy, struct brcmf_cfg80211_vif *vif,
|
||||||
goto scan_out;
|
goto scan_out;
|
||||||
}
|
}
|
||||||
brcmf_scan_config_mpc(ifp, 0);
|
brcmf_scan_config_mpc(ifp, 0);
|
||||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCAN,
|
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCAN, &ssid_le,
|
||||||
&sr->ssid_le, sizeof(sr->ssid_le));
|
sizeof(ssid_le));
|
||||||
if (err) {
|
if (err) {
|
||||||
if (err == -EBUSY)
|
if (err == -EBUSY)
|
||||||
brcmf_dbg(INFO, "BUSY: scan for \"%s\" canceled\n",
|
brcmf_dbg(INFO, "BUSY: scan for \"%s\" canceled\n",
|
||||||
sr->ssid_le.SSID);
|
ssid_le.SSID);
|
||||||
else
|
else
|
||||||
brcmf_err("WLC_SCAN error (%d)\n", err);
|
brcmf_err("WLC_SCAN error (%d)\n", err);
|
||||||
|
|
||||||
|
|
|
@ -99,11 +99,6 @@ struct brcmf_cfg80211_conf {
|
||||||
struct ieee80211_channel channel;
|
struct ieee80211_channel channel;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* basic structure of scan request */
|
|
||||||
struct brcmf_cfg80211_scan_req {
|
|
||||||
struct brcmf_ssid_le ssid_le;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* basic structure of information element */
|
/* basic structure of information element */
|
||||||
struct brcmf_cfg80211_ie {
|
struct brcmf_cfg80211_ie {
|
||||||
u16 offset;
|
u16 offset;
|
||||||
|
@ -337,7 +332,6 @@ struct brcmf_cfg80211_vif_event {
|
||||||
* @scan_request: cfg80211 scan request object.
|
* @scan_request: cfg80211 scan request object.
|
||||||
* @usr_sync: mainly for dongle up/down synchronization.
|
* @usr_sync: mainly for dongle up/down synchronization.
|
||||||
* @bss_list: bss_list holding scanned ap information.
|
* @bss_list: bss_list holding scanned ap information.
|
||||||
* @scan_req_int: internal scan request object.
|
|
||||||
* @bss_info: bss information for cfg80211 layer.
|
* @bss_info: bss information for cfg80211 layer.
|
||||||
* @ie: information element object for internal purpose.
|
* @ie: information element object for internal purpose.
|
||||||
* @conn_info: association info.
|
* @conn_info: association info.
|
||||||
|
@ -372,7 +366,6 @@ struct brcmf_cfg80211_info {
|
||||||
struct brcmf_btcoex_info *btcoex;
|
struct brcmf_btcoex_info *btcoex;
|
||||||
struct cfg80211_scan_request *scan_request;
|
struct cfg80211_scan_request *scan_request;
|
||||||
struct mutex usr_sync;
|
struct mutex usr_sync;
|
||||||
struct brcmf_cfg80211_scan_req scan_req_int;
|
|
||||||
struct wl_cfg80211_bss_info *bss_info;
|
struct wl_cfg80211_bss_info *bss_info;
|
||||||
struct brcmf_cfg80211_ie ie;
|
struct brcmf_cfg80211_ie ie;
|
||||||
struct brcmf_cfg80211_connect_info conn_info;
|
struct brcmf_cfg80211_connect_info conn_info;
|
||||||
|
|
Loading…
Reference in New Issue