nl80211: Support no_encrypt=1 with send_mlme()
This allows send_mlme() to be used to replace send_frame() for the test cases where unencrypted Deauthentication/Disassociation frames need to be sent out even when using PMF for the association. This is currently supported only when monitor interface is used for AP mode management frames. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
665a3007fb
commit
27cc06d073
1 changed files with 9 additions and 9 deletions
|
@ -3715,19 +3715,19 @@ static int wpa_driver_nl80211_send_mlme(struct i802_bss *bss, const u8 *data,
|
|||
int offchanok,
|
||||
unsigned int wait_time,
|
||||
const u16 *csa_offs,
|
||||
size_t csa_offs_len)
|
||||
size_t csa_offs_len, int no_encrypt)
|
||||
{
|
||||
struct wpa_driver_nl80211_data *drv = bss->drv;
|
||||
struct ieee80211_mgmt *mgmt;
|
||||
int encrypt = 1;
|
||||
int encrypt = !no_encrypt;
|
||||
u16 fc;
|
||||
|
||||
mgmt = (struct ieee80211_mgmt *) data;
|
||||
fc = le_to_host16(mgmt->frame_control);
|
||||
wpa_printf(MSG_DEBUG, "nl80211: send_mlme - da= " MACSTR
|
||||
" noack=%d freq=%u no_cck=%d offchanok=%d wait_time=%u fc=0x%x (%s) nlmode=%d",
|
||||
" noack=%d freq=%u no_cck=%d offchanok=%d wait_time=%u no_encrypt=%d fc=0x%x (%s) nlmode=%d",
|
||||
MAC2STR(mgmt->da), noack, freq, no_cck, offchanok, wait_time,
|
||||
fc, fc2str(fc), drv->nlmode);
|
||||
no_encrypt, fc, fc2str(fc), drv->nlmode);
|
||||
|
||||
if ((is_sta_interface(drv->nlmode) ||
|
||||
drv->nlmode == NL80211_IFTYPE_P2P_DEVICE) &&
|
||||
|
@ -6724,7 +6724,7 @@ static int i802_sta_deauth(void *priv, const u8 *own_addr, const u8 *addr,
|
|||
return wpa_driver_nl80211_send_mlme(bss, (u8 *) &mgmt,
|
||||
IEEE80211_HDRLEN +
|
||||
sizeof(mgmt.u.deauth), 0, 0, 0, 0,
|
||||
0, NULL, 0);
|
||||
0, NULL, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -6751,7 +6751,7 @@ static int i802_sta_disassoc(void *priv, const u8 *own_addr, const u8 *addr,
|
|||
return wpa_driver_nl80211_send_mlme(bss, (u8 *) &mgmt,
|
||||
IEEE80211_HDRLEN +
|
||||
sizeof(mgmt.u.disassoc), 0, 0, 0, 0,
|
||||
0, NULL, 0);
|
||||
0, NULL, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -7574,7 +7574,7 @@ static int wpa_driver_nl80211_send_action(struct i802_bss *bss,
|
|||
!drv->use_monitor))
|
||||
ret = wpa_driver_nl80211_send_mlme(bss, buf, 24 + data_len,
|
||||
0, freq, no_cck, 1,
|
||||
wait_time, NULL, 0);
|
||||
wait_time, NULL, 0, 0);
|
||||
else
|
||||
ret = nl80211_send_frame_cmd(bss, freq, wait_time, buf,
|
||||
24 + data_len,
|
||||
|
@ -8410,7 +8410,7 @@ static void nl80211_send_null_frame(struct i802_bss *bss, const u8 *own_addr,
|
|||
os_memcpy(nulldata.hdr.IEEE80211_SA_FROMDS, own_addr, ETH_ALEN);
|
||||
|
||||
if (wpa_driver_nl80211_send_mlme(bss, (u8 *) &nulldata, size, 0, 0, 0,
|
||||
0, 0, NULL, 0) < 0)
|
||||
0, 0, NULL, 0, 0) < 0)
|
||||
wpa_printf(MSG_DEBUG, "nl80211_send_null_frame: Failed to "
|
||||
"send poll frame");
|
||||
}
|
||||
|
@ -8757,7 +8757,7 @@ static int driver_nl80211_send_mlme(void *priv, const u8 *data,
|
|||
struct i802_bss *bss = priv;
|
||||
return wpa_driver_nl80211_send_mlme(bss, data, data_len, noack,
|
||||
freq, 0, 0, 0, csa_offs,
|
||||
csa_offs_len);
|
||||
csa_offs_len, no_encrypt);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue