nl80211: Get rid of separate wpa_driver_nl80211_send_frame()
Merge this function into wpa_driver_nl80211_send_mlme() that is now the only caller for the previously shared helper function. This is a step towards cleaning up the overly complex code path for sending Management frames. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
e695927862
commit
0dae4354f7
1 changed files with 37 additions and 60 deletions
|
@ -3654,61 +3654,6 @@ int wpa_driver_nl80211_authenticate_retry(struct wpa_driver_nl80211_data *drv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int wpa_driver_nl80211_send_frame(struct i802_bss *bss,
|
|
||||||
const void *data, size_t len,
|
|
||||||
int encrypt, int noack,
|
|
||||||
unsigned int freq, int no_cck,
|
|
||||||
int offchanok, unsigned int wait_time,
|
|
||||||
const u16 *csa_offs,
|
|
||||||
size_t csa_offs_len)
|
|
||||||
{
|
|
||||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
|
||||||
u64 cookie;
|
|
||||||
int res;
|
|
||||||
|
|
||||||
if (freq == 0 && drv->nlmode == NL80211_IFTYPE_ADHOC) {
|
|
||||||
freq = nl80211_get_assoc_freq(drv);
|
|
||||||
wpa_printf(MSG_DEBUG,
|
|
||||||
"nl80211: send_frame - Use assoc_freq=%u for IBSS",
|
|
||||||
freq);
|
|
||||||
}
|
|
||||||
if (freq == 0) {
|
|
||||||
wpa_printf(MSG_DEBUG, "nl80211: send_frame - Use bss->freq=%u",
|
|
||||||
bss->freq);
|
|
||||||
freq = bss->freq;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (drv->use_monitor) {
|
|
||||||
wpa_printf(MSG_DEBUG, "nl80211: send_frame(freq=%u bss->freq=%u) -> send_monitor",
|
|
||||||
freq, bss->freq);
|
|
||||||
return nl80211_send_monitor(drv, data, len, encrypt, noack);
|
|
||||||
}
|
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "nl80211: send_frame -> send_frame_cmd");
|
|
||||||
res = nl80211_send_frame_cmd(bss, freq, wait_time, data, len,
|
|
||||||
&cookie, no_cck, noack, offchanok,
|
|
||||||
csa_offs, csa_offs_len);
|
|
||||||
if (res == 0 && !noack) {
|
|
||||||
const struct ieee80211_mgmt *mgmt;
|
|
||||||
u16 fc;
|
|
||||||
|
|
||||||
mgmt = (const struct ieee80211_mgmt *) data;
|
|
||||||
fc = le_to_host16(mgmt->frame_control);
|
|
||||||
if (WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
|
|
||||||
WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_ACTION) {
|
|
||||||
wpa_printf(MSG_MSGDUMP,
|
|
||||||
"nl80211: Update send_action_cookie from 0x%llx to 0x%llx",
|
|
||||||
(long long unsigned int)
|
|
||||||
drv->send_action_cookie,
|
|
||||||
(long long unsigned int) cookie);
|
|
||||||
drv->send_action_cookie = cookie;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data,
|
static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data,
|
||||||
size_t data_len, int noack,
|
size_t data_len, int noack,
|
||||||
unsigned int freq, int no_cck,
|
unsigned int freq, int no_cck,
|
||||||
|
@ -3721,6 +3666,8 @@ static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data,
|
||||||
struct ieee80211_mgmt *mgmt;
|
struct ieee80211_mgmt *mgmt;
|
||||||
int encrypt = !no_encrypt;
|
int encrypt = !no_encrypt;
|
||||||
u16 fc;
|
u16 fc;
|
||||||
|
u64 cookie;
|
||||||
|
int res;
|
||||||
|
|
||||||
mgmt = (struct ieee80211_mgmt *) data;
|
mgmt = (struct ieee80211_mgmt *) data;
|
||||||
fc = le_to_host16(mgmt->frame_control);
|
fc = le_to_host16(mgmt->frame_control);
|
||||||
|
@ -3777,11 +3724,41 @@ static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data,
|
||||||
encrypt = 0;
|
encrypt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "nl80211: send_mlme -> send_frame");
|
if (freq == 0 && drv->nlmode == NL80211_IFTYPE_ADHOC) {
|
||||||
return wpa_driver_nl80211_send_frame(bss, data, data_len, encrypt,
|
freq = nl80211_get_assoc_freq(drv);
|
||||||
noack, freq, no_cck, offchanok,
|
wpa_printf(MSG_DEBUG,
|
||||||
wait_time, csa_offs,
|
"nl80211: send_mlme - Use assoc_freq=%u for IBSS",
|
||||||
csa_offs_len);
|
freq);
|
||||||
|
}
|
||||||
|
if (freq == 0) {
|
||||||
|
wpa_printf(MSG_DEBUG, "nl80211: send_mlme - Use bss->freq=%u",
|
||||||
|
bss->freq);
|
||||||
|
freq = bss->freq;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (drv->use_monitor) {
|
||||||
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"nl80211: send_frame(freq=%u bss->freq=%u) -> send_monitor",
|
||||||
|
freq, bss->freq);
|
||||||
|
return nl80211_send_monitor(drv, data, data_len, encrypt,
|
||||||
|
noack);
|
||||||
|
}
|
||||||
|
|
||||||
|
wpa_printf(MSG_DEBUG, "nl80211: send_mlme -> send_frame_cmd");
|
||||||
|
res = nl80211_send_frame_cmd(bss, freq, wait_time, data, data_len,
|
||||||
|
&cookie, no_cck, noack, offchanok,
|
||||||
|
csa_offs, csa_offs_len);
|
||||||
|
if (res == 0 && !noack &&
|
||||||
|
WLAN_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
|
||||||
|
WLAN_FC_GET_STYPE(fc) == WLAN_FC_STYPE_ACTION) {
|
||||||
|
wpa_printf(MSG_MSGDUMP,
|
||||||
|
"nl80211: Update send_action_cookie from 0x%llx to 0x%llx",
|
||||||
|
(long long unsigned int) drv->send_action_cookie,
|
||||||
|
(long long unsigned int) cookie);
|
||||||
|
drv->send_action_cookie = cookie;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue