mac80211: allow calling ieee80211_ap_probereq_get() during auth/assoc
Drivers might need getting the probe request (e.g. in order to extract the ssid) even during auth/assoc. Make ieee80211_ap_probereq_get() support it by considering auth_data/assoc_data as well. Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
e4e32459c2
commit
d9b3b28b93
|
@ -1612,6 +1612,7 @@ struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,
|
|||
{
|
||||
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||||
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
||||
struct cfg80211_bss *cbss;
|
||||
struct sk_buff *skb;
|
||||
const u8 *ssid;
|
||||
int ssid_len;
|
||||
|
@ -1621,16 +1622,22 @@ struct sk_buff *ieee80211_ap_probereq_get(struct ieee80211_hw *hw,
|
|||
|
||||
ASSERT_MGD_MTX(ifmgd);
|
||||
|
||||
if (!ifmgd->associated)
|
||||
if (ifmgd->associated)
|
||||
cbss = ifmgd->associated;
|
||||
else if (ifmgd->auth_data)
|
||||
cbss = ifmgd->auth_data->bss;
|
||||
else if (ifmgd->assoc_data)
|
||||
cbss = ifmgd->assoc_data->bss;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
ssid = ieee80211_bss_get_ie(ifmgd->associated, WLAN_EID_SSID);
|
||||
ssid = ieee80211_bss_get_ie(cbss, WLAN_EID_SSID);
|
||||
if (WARN_ON_ONCE(ssid == NULL))
|
||||
ssid_len = 0;
|
||||
else
|
||||
ssid_len = ssid[1];
|
||||
|
||||
skb = ieee80211_build_probe_req(sdata, ifmgd->associated->bssid,
|
||||
skb = ieee80211_build_probe_req(sdata, cbss->bssid,
|
||||
(u32) -1, ssid + 2, ssid_len,
|
||||
NULL, 0, true);
|
||||
|
||||
|
|
Loading…
Reference in New Issue