atheros: Enable raw management frame receive for FILS builds
This is needed to be able to process authentication and association frames for FILS. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
2b7a8ec473
commit
d7cff1d871
1 changed files with 10 additions and 10 deletions
|
@ -55,7 +55,7 @@
|
||||||
#include "netlink.h"
|
#include "netlink.h"
|
||||||
#include "linux_ioctl.h"
|
#include "linux_ioctl.h"
|
||||||
|
|
||||||
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_IEEE80211R) || defined(CONFIG_HS20) || defined(CONFIG_WNM) || defined(CONFIG_WPS)
|
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_IEEE80211R) || defined(CONFIG_HS20) || defined(CONFIG_WNM) || defined(CONFIG_WPS) || defined(CONFIG_FILS)
|
||||||
#define ATHEROS_USE_RAW_RECEIVE
|
#define ATHEROS_USE_RAW_RECEIVE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -951,11 +951,11 @@ static int atheros_receive_pkt(struct atheros_driver_data *drv)
|
||||||
#ifdef CONFIG_WPS
|
#ifdef CONFIG_WPS
|
||||||
filt.app_filterype |= IEEE80211_FILTER_TYPE_PROBE_REQ;
|
filt.app_filterype |= IEEE80211_FILTER_TYPE_PROBE_REQ;
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_IEEE80211R)
|
#if defined(CONFIG_IEEE80211W) || defined(CONFIG_IEEE80211R) || defined(CONFIG_FILS)
|
||||||
filt.app_filterype |= (IEEE80211_FILTER_TYPE_ASSOC_REQ |
|
filt.app_filterype |= (IEEE80211_FILTER_TYPE_ASSOC_REQ |
|
||||||
IEEE80211_FILTER_TYPE_AUTH |
|
IEEE80211_FILTER_TYPE_AUTH |
|
||||||
IEEE80211_FILTER_TYPE_ACTION);
|
IEEE80211_FILTER_TYPE_ACTION);
|
||||||
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W || CONFIG_FILS */
|
||||||
#ifdef CONFIG_WNM
|
#ifdef CONFIG_WNM
|
||||||
filt.app_filterype |= IEEE80211_FILTER_TYPE_ACTION;
|
filt.app_filterype |= IEEE80211_FILTER_TYPE_ACTION;
|
||||||
#endif /* CONFIG_WNM */
|
#endif /* CONFIG_WNM */
|
||||||
|
@ -969,12 +969,12 @@ static int atheros_receive_pkt(struct atheros_driver_data *drv)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_WPS) || defined(CONFIG_IEEE80211R)
|
#if defined(CONFIG_WPS) || defined(CONFIG_IEEE80211R) || defined(CONFIG_FILS)
|
||||||
drv->sock_raw = l2_packet_init(drv->iface, NULL, ETH_P_80211_RAW,
|
drv->sock_raw = l2_packet_init(drv->iface, NULL, ETH_P_80211_RAW,
|
||||||
atheros_raw_receive, drv, 1);
|
atheros_raw_receive, drv, 1);
|
||||||
if (drv->sock_raw == NULL)
|
if (drv->sock_raw == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
#endif /* CONFIG_WPS || CONFIG_IEEE80211R */
|
#endif /* CONFIG_WPS || CONFIG_IEEE80211R || CONFIG_FILS */
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1054,7 +1054,7 @@ atheros_set_ap_wps_ie(void *priv, const struct wpabuf *beacon,
|
||||||
#define atheros_set_ap_wps_ie NULL
|
#define atheros_set_ap_wps_ie NULL
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W)
|
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W) || defined(CONFIG_FILS)
|
||||||
static int
|
static int
|
||||||
atheros_sta_auth(void *priv, const u8 *own_addr, const u8 *addr, u16 seq,
|
atheros_sta_auth(void *priv, const u8 *own_addr, const u8 *addr, u16 seq,
|
||||||
u16 status_code, const u8 *ie, size_t len)
|
u16 status_code, const u8 *ie, size_t len)
|
||||||
|
@ -1130,7 +1130,7 @@ atheros_sta_assoc(void *priv, const u8 *own_addr, const u8 *addr,
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211R || CONFIG_IEEE80211W || CONFIG_FILS */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
atheros_new_sta(struct atheros_driver_data *drv, u8 addr[IEEE80211_ADDR_LEN])
|
atheros_new_sta(struct atheros_driver_data *drv, u8 addr[IEEE80211_ADDR_LEN])
|
||||||
|
@ -1277,7 +1277,7 @@ atheros_wireless_event_wireless_custom(struct atheros_driver_data *drv,
|
||||||
atheros_raw_receive(drv, NULL,
|
atheros_raw_receive(drv, NULL,
|
||||||
(u8 *) custom + MGMT_FRAM_TAG_SIZE, len);
|
(u8 *) custom + MGMT_FRAM_TAG_SIZE, len);
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W)
|
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W) || defined(CONFIG_FILS)
|
||||||
} else if (os_strncmp(custom, "Manage.assoc_req ", 17) == 0) {
|
} else if (os_strncmp(custom, "Manage.assoc_req ", 17) == 0) {
|
||||||
/* Format: "Manage.assoc_req <frame len>" | zero padding |
|
/* Format: "Manage.assoc_req <frame len>" | zero padding |
|
||||||
* frame */
|
* frame */
|
||||||
|
@ -1301,7 +1301,7 @@ atheros_wireless_event_wireless_custom(struct atheros_driver_data *drv,
|
||||||
}
|
}
|
||||||
atheros_raw_receive(drv, NULL,
|
atheros_raw_receive(drv, NULL,
|
||||||
(u8 *) custom + MGMT_FRAM_TAG_SIZE, len);
|
(u8 *) custom + MGMT_FRAM_TAG_SIZE, len);
|
||||||
#endif /* CONFIG_IEEE80211W || CONFIG_IEEE80211R */
|
#endif /* CONFIG_IEEE80211W || CONFIG_IEEE80211R || CONFIG_FILS */
|
||||||
#ifdef ATHEROS_USE_RAW_RECEIVE
|
#ifdef ATHEROS_USE_RAW_RECEIVE
|
||||||
} else if (os_strncmp(custom, "Manage.action ", 14) == 0) {
|
} else if (os_strncmp(custom, "Manage.action ", 14) == 0) {
|
||||||
/* Format: "Manage.assoc_req <frame len>" | zero padding | frame
|
/* Format: "Manage.assoc_req <frame len>" | zero padding | frame
|
||||||
|
@ -2202,7 +2202,7 @@ const struct wpa_driver_ops wpa_driver_atheros_ops = {
|
||||||
.set_ap_wps_ie = atheros_set_ap_wps_ie,
|
.set_ap_wps_ie = atheros_set_ap_wps_ie,
|
||||||
.set_authmode = atheros_set_authmode,
|
.set_authmode = atheros_set_authmode,
|
||||||
.set_ap = atheros_set_ap,
|
.set_ap = atheros_set_ap,
|
||||||
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W)
|
#if defined(CONFIG_IEEE80211R) || defined(CONFIG_IEEE80211W) || defined(CONFIG_FILS)
|
||||||
.sta_assoc = atheros_sta_assoc,
|
.sta_assoc = atheros_sta_assoc,
|
||||||
.sta_auth = atheros_sta_auth,
|
.sta_auth = atheros_sta_auth,
|
||||||
.send_mlme = atheros_send_mgmt,
|
.send_mlme = atheros_send_mgmt,
|
||||||
|
|
Loading…
Reference in a new issue