Revert "Cumulative patch from commit 4ec1fd8e42bad9390f14a58225b6e5f6fb691950"
This reverts commit 78a5dac804c22aa6e4ec8226a864d3b0d6ccddbb.
Test: None
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 9a6db90..a449cc9 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -21,9 +21,6 @@
#include "common/defs.h"
#include "common/ieee802_11_defs.h"
-#ifdef CONFIG_MACSEC
-#include "pae/ieee802_1x_kay.h"
-#endif /* CONFIG_MACSEC */
#include "utils/list.h"
#define HOSTAPD_CHAN_DISABLED 0x00000001
@@ -488,18 +485,17 @@
int p2p;
/**
- * auth_data - Additional elements for Authentication frame
+ * sae_data - SAE elements for Authentication frame
*
* This buffer starts with the Authentication transaction sequence
- * number field. If no special handling of such elements is needed, this
- * pointer is %NULL. This is used with SAE and FILS.
+ * number field. If SAE is not used, this pointer is %NULL.
*/
- const u8 *auth_data;
+ const u8 *sae_data;
/**
- * auth_data_len - Length of auth_data buffer in octets
+ * sae_data_len - Length of sae_data buffer in octets
*/
- size_t auth_data_len;
+ size_t sae_data_len;
};
/**
@@ -886,27 +882,6 @@
* AP as usual. Valid for DMG network only.
*/
int pbss;
-
- /**
- * fils_kek - KEK for FILS association frame protection (AES-SIV)
- */
- const u8 *fils_kek;
-
- /**
- * fils_kek_len: Length of fils_kek in bytes
- */
- size_t fils_kek_len;
-
- /**
- * fils_nonces - Nonces for FILS association frame protection
- * (AES-SIV AAD)
- */
- const u8 *fils_nonces;
-
- /**
- * fils_nonces_len: Length of fils_nonce in bytes
- */
- size_t fils_nonces_len;
};
enum hide_ssid {
@@ -1311,8 +1286,6 @@
#define WPA_DRIVER_FLAGS_FULL_AP_CLIENT_STATE 0x0000010000000000ULL
/** Driver supports P2P Listen offload */
#define WPA_DRIVER_FLAGS_P2P_LISTEN_OFFLOAD 0x0000020000000000ULL
-/** Driver supports FILS */
-#define WPA_DRIVER_FLAGS_SUPPORT_FILS 0x0000040000000000ULL
u64 flags;
#define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \
@@ -3322,14 +3295,6 @@
int (*macsec_deinit)(void *priv);
/**
- * macsec_get_capability - Inform MKA of this driver's capability
- * @priv: Private driver interface data
- * @cap: Driver's capability
- * Returns: 0 on success, -1 on failure
- */
- int (*macsec_get_capability)(void *priv, enum macsec_cap *cap);
-
- /**
* enable_protect_frames - Set protect frames status
* @priv: Private driver interface data
* @enabled: TRUE = protect frames enabled
@@ -3368,129 +3333,155 @@
/**
* get_receive_lowest_pn - Get receive lowest pn
* @priv: Private driver interface data
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
+ * @lowest_pn: lowest accept pn
* Returns: 0 on success, -1 on failure (or if not supported)
*/
- int (*get_receive_lowest_pn)(void *priv, struct receive_sa *sa);
+ int (*get_receive_lowest_pn)(void *priv, u32 channel, u8 an,
+ u32 *lowest_pn);
/**
* get_transmit_next_pn - Get transmit next pn
* @priv: Private driver interface data
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
+ * @next_pn: next pn
* Returns: 0 on success, -1 on failure (or if not supported)
*/
- int (*get_transmit_next_pn)(void *priv, struct transmit_sa *sa);
+ int (*get_transmit_next_pn)(void *priv, u32 channel, u8 an,
+ u32 *next_pn);
/**
* set_transmit_next_pn - Set transmit next pn
* @priv: Private driver interface data
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
+ * @next_pn: next pn
* Returns: 0 on success, -1 on failure (or if not supported)
*/
- int (*set_transmit_next_pn)(void *priv, struct transmit_sa *sa);
+ int (*set_transmit_next_pn)(void *priv, u32 channel, u8 an,
+ u32 next_pn);
+
+ /**
+ * get_available_receive_sc - get available receive channel
+ * @priv: Private driver interface data
+ * @channel: secure channel
+ * Returns: 0 on success, -1 on failure (or if not supported)
+ */
+ int (*get_available_receive_sc)(void *priv, u32 *channel);
/**
* create_receive_sc - create secure channel for receiving
* @priv: Private driver interface data
- * @sc: secure channel
+ * @channel: secure channel
+ * @sci_addr: secure channel identifier - address
+ * @sci_port: secure channel identifier - port
* @conf_offset: confidentiality offset (0, 30, or 50)
* @validation: frame validation policy (0 = Disabled, 1 = Checked,
* 2 = Strict)
* Returns: 0 on success, -1 on failure (or if not supported)
*/
- int (*create_receive_sc)(void *priv, struct receive_sc *sc,
- unsigned int conf_offset,
+ int (*create_receive_sc)(void *priv, u32 channel, const u8 *sci_addr,
+ u16 sci_port, unsigned int conf_offset,
int validation);
/**
* delete_receive_sc - delete secure connection for receiving
* @priv: private driver interface data from init()
- * @sc: secure channel
+ * @channel: secure channel
* Returns: 0 on success, -1 on failure
*/
- int (*delete_receive_sc)(void *priv, struct receive_sc *sc);
+ int (*delete_receive_sc)(void *priv, u32 channel);
/**
* create_receive_sa - create secure association for receive
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
+ * @lowest_pn: the lowest packet number can be received
+ * @sak: the secure association key
* Returns: 0 on success, -1 on failure
*/
- int (*create_receive_sa)(void *priv, struct receive_sa *sa);
-
- /**
- * delete_receive_sa - Delete secure association for receive
- * @priv: Private driver interface data from init()
- * @sa: Secure association
- * Returns: 0 on success, -1 on failure
- */
- int (*delete_receive_sa)(void *priv, struct receive_sa *sa);
+ int (*create_receive_sa)(void *priv, u32 channel, u8 an,
+ u32 lowest_pn, const u8 *sak);
/**
* enable_receive_sa - enable the SA for receive
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
* Returns: 0 on success, -1 on failure
*/
- int (*enable_receive_sa)(void *priv, struct receive_sa *sa);
+ int (*enable_receive_sa)(void *priv, u32 channel, u8 an);
/**
* disable_receive_sa - disable SA for receive
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel index
+ * @an: association number
* Returns: 0 on success, -1 on failure
*/
- int (*disable_receive_sa)(void *priv, struct receive_sa *sa);
+ int (*disable_receive_sa)(void *priv, u32 channel, u8 an);
+
+ /**
+ * get_available_transmit_sc - get available transmit channel
+ * @priv: Private driver interface data
+ * @channel: secure channel
+ * Returns: 0 on success, -1 on failure (or if not supported)
+ */
+ int (*get_available_transmit_sc)(void *priv, u32 *channel);
/**
* create_transmit_sc - create secure connection for transmit
* @priv: private driver interface data from init()
- * @sc: secure channel
- * @conf_offset: confidentiality offset (0, 30, or 50)
+ * @channel: secure channel
+ * @sci_addr: secure channel identifier - address
+ * @sci_port: secure channel identifier - port
* Returns: 0 on success, -1 on failure
*/
- int (*create_transmit_sc)(void *priv, struct transmit_sc *sc,
- unsigned int conf_offset);
+ int (*create_transmit_sc)(void *priv, u32 channel, const u8 *sci_addr,
+ u16 sci_port, unsigned int conf_offset);
/**
* delete_transmit_sc - delete secure connection for transmit
* @priv: private driver interface data from init()
- * @sc: secure channel
+ * @channel: secure channel
* Returns: 0 on success, -1 on failure
*/
- int (*delete_transmit_sc)(void *priv, struct transmit_sc *sc);
+ int (*delete_transmit_sc)(void *priv, u32 channel);
/**
* create_transmit_sa - create secure association for transmit
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel index
+ * @an: association number
+ * @next_pn: the packet number used as next transmit packet
+ * @confidentiality: True if the SA is to provide confidentiality
+ * as well as integrity
+ * @sak: the secure association key
* Returns: 0 on success, -1 on failure
*/
- int (*create_transmit_sa)(void *priv, struct transmit_sa *sa);
-
- /**
- * delete_transmit_sa - Delete secure association for transmit
- * @priv: Private driver interface data from init()
- * @sa: Secure association
- * Returns: 0 on success, -1 on failure
- */
- int (*delete_transmit_sa)(void *priv, struct transmit_sa *sa);
+ int (*create_transmit_sa)(void *priv, u32 channel, u8 an, u32 next_pn,
+ Boolean confidentiality, const u8 *sak);
/**
* enable_transmit_sa - enable SA for transmit
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
* Returns: 0 on success, -1 on failure
*/
- int (*enable_transmit_sa)(void *priv, struct transmit_sa *sa);
+ int (*enable_transmit_sa)(void *priv, u32 channel, u8 an);
/**
* disable_transmit_sa - disable SA for transmit
* @priv: private driver interface data from init()
- * @sa: secure association
+ * @channel: secure channel
+ * @an: association number
* Returns: 0 on success, -1 on failure
*/
- int (*disable_transmit_sa)(void *priv, struct transmit_sa *sa);
+ int (*disable_transmit_sa)(void *priv, u32 channel, u8 an);
#endif /* CONFIG_MACSEC */
/**
@@ -3632,16 +3623,6 @@
*/
int (*set_default_scan_ies)(void *priv, const u8 *ies, size_t ies_len);
- /**
- * set_tdls_mode - Set TDLS trigger mode to the host driver
- * @priv: Private driver interface data
- * @tdls_external_control: Represents if TDLS external trigger control
- * mode is enabled/disabled.
- *
- * This optional callback can be used to configure the TDLS external
- * trigger control mode to the host driver.
- */
- int (*set_tdls_mode)(void *priv, int tdls_external_control);
};
@@ -4062,7 +4043,7 @@
* EVENT_DFS_CAC_ABORTED - Notify that channel availability check has been aborted
*
* The CAC was not successful, and the channel remains in the previous
- * state. This may happen due to a radar being detected or other
+ * state. This may happen due to a radar beeing detected or other
* external influences.
*/
EVENT_DFS_CAC_ABORTED,
@@ -4223,16 +4204,6 @@
size_t resp_ies_len;
/**
- * resp_frame - (Re)Association Response frame
- */
- const u8 *resp_frame;
-
- /**
- * resp_frame_len - (Re)Association Response frame length
- */
- size_t resp_frame_len;
-
- /**
* beacon_ies - Beacon or Probe Response IEs
*
* Optional Beacon/ProbeResp data: IEs included in Beacon or
diff --git a/src/drivers/driver_macsec_qca.c b/src/drivers/driver_macsec_qca.c
index 22d414c..826d3cc 100644
--- a/src/drivers/driver_macsec_qca.c
+++ b/src/drivers/driver_macsec_qca.c
@@ -29,7 +29,6 @@
#include "utils/eloop.h"
#include "common/defs.h"
#include "common/ieee802_1x_defs.h"
-#include "pae/ieee802_1x_kay.h"
#include "driver.h"
#include "nss_macsec_secy.h"
@@ -56,10 +55,6 @@
static const u8 pae_group_addr[ETH_ALEN] =
{ 0x01, 0x80, 0xc2, 0x00, 0x00, 0x03 };
-struct channel_map {
- struct ieee802_1x_mka_sci sci;
-};
-
struct macsec_qca_data {
char ifname[IFNAMSIZ + 1];
u32 secy_id;
@@ -76,9 +71,6 @@
Boolean protect_frames;
Boolean replay_protect;
u32 replay_window;
-
- struct channel_map receive_channel_map[MAXSC];
- struct channel_map transmit_channel_map[MAXSC];
};
@@ -465,16 +457,6 @@
}
-static int macsec_qca_get_capability(void *priv, enum macsec_cap *cap)
-{
- wpa_printf(MSG_DEBUG, "%s", __func__);
-
- *cap = MACSEC_CAP_INTEG_AND_CONF_0_30_50;
-
- return 0;
-}
-
-
static int macsec_qca_enable_protect_frames(void *priv, Boolean enabled)
{
struct macsec_qca_data *drv = priv;
@@ -533,82 +515,16 @@
}
-static int macsec_qca_lookup_channel(struct channel_map *map,
- struct ieee802_1x_mka_sci *sci,
- u32 *channel)
-{
- u32 i;
-
- for (i = 0; i < MAXSC; i++) {
- if (os_memcmp(&map[i].sci, sci,
- sizeof(struct ieee802_1x_mka_sci)) == 0) {
- *channel = i;
- return 0;
- }
- }
-
- return -1;
-}
-
-
-static void macsec_qca_register_channel(struct channel_map *map,
- struct ieee802_1x_mka_sci *sci,
- u32 channel)
-{
- os_memcpy(&map[channel].sci, sci, sizeof(struct ieee802_1x_mka_sci));
-}
-
-
-static int macsec_qca_lookup_receive_channel(struct macsec_qca_data *drv,
- struct receive_sc *sc,
- u32 *channel)
-{
- return macsec_qca_lookup_channel(drv->receive_channel_map, &sc->sci,
- channel);
-}
-
-
-static void macsec_qca_register_receive_channel(struct macsec_qca_data *drv,
- struct receive_sc *sc,
- u32 channel)
-{
- macsec_qca_register_channel(drv->receive_channel_map, &sc->sci,
- channel);
-}
-
-
-static int macsec_qca_lookup_transmit_channel(struct macsec_qca_data *drv,
- struct transmit_sc *sc,
- u32 *channel)
-{
- return macsec_qca_lookup_channel(drv->transmit_channel_map, &sc->sci,
- channel);
-}
-
-
-static void macsec_qca_register_transmit_channel(struct macsec_qca_data *drv,
- struct transmit_sc *sc,
- u32 channel)
-{
- macsec_qca_register_channel(drv->transmit_channel_map, &sc->sci,
- channel);
-}
-
-
-static int macsec_qca_get_receive_lowest_pn(void *priv, struct receive_sa *sa)
+static int macsec_qca_get_receive_lowest_pn(void *priv, u32 channel, u8 an,
+ u32 *lowest_pn)
{
struct macsec_qca_data *drv = priv;
int ret = 0;
u32 next_pn = 0;
bool enabled = FALSE;
u32 win;
- u32 channel;
- ret = macsec_qca_lookup_receive_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
-
- ret += nss_macsec_secy_rx_sa_next_pn_get(drv->secy_id, channel, sa->an,
+ ret += nss_macsec_secy_rx_sa_next_pn_get(drv->secy_id, channel, an,
&next_pn);
ret += nss_macsec_secy_rx_sc_replay_protect_get(drv->secy_id, channel,
&enabled);
@@ -616,49 +532,40 @@
channel, &win);
if (enabled)
- sa->lowest_pn = (next_pn > win) ? (next_pn - win) : 1;
+ *lowest_pn = (next_pn > win) ? (next_pn - win) : 1;
else
- sa->lowest_pn = next_pn;
+ *lowest_pn = next_pn;
- wpa_printf(MSG_DEBUG, "%s: lpn=0x%x", __func__, sa->lowest_pn);
+ wpa_printf(MSG_DEBUG, "%s: lpn=0x%x", __func__, *lowest_pn);
return ret;
}
-static int macsec_qca_get_transmit_next_pn(void *priv, struct transmit_sa *sa)
+static int macsec_qca_get_transmit_next_pn(void *priv, u32 channel, u8 an,
+ u32 *next_pn)
{
struct macsec_qca_data *drv = priv;
int ret = 0;
- u32 channel;
- ret = macsec_qca_lookup_transmit_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ ret += nss_macsec_secy_tx_sa_next_pn_get(drv->secy_id, channel, an,
+ next_pn);
- ret += nss_macsec_secy_tx_sa_next_pn_get(drv->secy_id, channel, sa->an,
- &sa->next_pn);
-
- wpa_printf(MSG_DEBUG, "%s: npn=0x%x", __func__, sa->next_pn);
+ wpa_printf(MSG_DEBUG, "%s: npn=0x%x", __func__, *next_pn);
return ret;
}
-int macsec_qca_set_transmit_next_pn(void *priv, struct transmit_sa *sa)
+int macsec_qca_set_transmit_next_pn(void *priv, u32 channel, u8 an, u32 next_pn)
{
struct macsec_qca_data *drv = priv;
int ret = 0;
- u32 channel;
- ret = macsec_qca_lookup_transmit_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ ret += nss_macsec_secy_tx_sa_next_pn_set(drv->secy_id, channel, an,
+ next_pn);
- ret += nss_macsec_secy_tx_sa_next_pn_set(drv->secy_id, channel, sa->an,
- sa->next_pn);
-
- wpa_printf(MSG_INFO, "%s: npn=0x%x", __func__, sa->next_pn);
+ wpa_printf(MSG_INFO, "%s: npn=0x%x", __func__, next_pn);
return ret;
}
@@ -691,7 +598,8 @@
}
-static int macsec_qca_create_receive_sc(void *priv, struct receive_sc *sc,
+static int macsec_qca_create_receive_sc(void *priv, u32 channel,
+ const u8 *sci_addr, u16 sci_port,
unsigned int conf_offset,
int validation)
{
@@ -700,13 +608,6 @@
fal_rx_prc_lut_t entry;
fal_rx_sc_validate_frame_e vf;
enum validate_frames validate_frames = validation;
- u32 channel;
- const u8 *sci_addr = sc->sci.addr;
- u16 sci_port = be_to_host16(sc->sci.port);
-
- ret = macsec_qca_get_available_receive_sc(priv, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG, "%s: channel=%d", __func__, channel);
@@ -741,22 +642,15 @@
channel,
drv->replay_window);
- macsec_qca_register_receive_channel(drv, sc, channel);
-
return ret;
}
-static int macsec_qca_delete_receive_sc(void *priv, struct receive_sc *sc)
+static int macsec_qca_delete_receive_sc(void *priv, u32 channel)
{
struct macsec_qca_data *drv = priv;
- int ret;
+ int ret = 0;
fal_rx_prc_lut_t entry;
- u32 channel;
-
- ret = macsec_qca_lookup_receive_channel(priv, sc, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG, "%s: channel=%d", __func__, channel);
@@ -770,68 +664,49 @@
}
-static int macsec_qca_create_receive_sa(void *priv, struct receive_sa *sa)
+static int macsec_qca_create_receive_sa(void *priv, u32 channel, u8 an,
+ u32 lowest_pn, const u8 *sak)
{
struct macsec_qca_data *drv = priv;
- int ret;
+ int ret = 0;
fal_rx_sak_t rx_sak;
int i = 0;
- u32 channel;
-
- ret = macsec_qca_lookup_receive_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG, "%s, channel=%d, an=%d, lpn=0x%x",
- __func__, channel, sa->an, sa->lowest_pn);
+ __func__, channel, an, lowest_pn);
os_memset(&rx_sak, 0, sizeof(rx_sak));
for (i = 0; i < 16; i++)
- rx_sak.sak[i] = sa->pkey->key[15 - i];
+ rx_sak.sak[i] = sak[15 - i];
- ret += nss_macsec_secy_rx_sa_create(drv->secy_id, channel, sa->an);
- ret += nss_macsec_secy_rx_sak_set(drv->secy_id, channel, sa->an,
- &rx_sak);
+ ret += nss_macsec_secy_rx_sa_create(drv->secy_id, channel, an);
+ ret += nss_macsec_secy_rx_sak_set(drv->secy_id, channel, an, &rx_sak);
return ret;
}
-static int macsec_qca_enable_receive_sa(void *priv, struct receive_sa *sa)
+static int macsec_qca_enable_receive_sa(void *priv, u32 channel, u8 an)
{
struct macsec_qca_data *drv = priv;
- int ret;
- u32 channel;
+ int ret = 0;
- ret = macsec_qca_lookup_receive_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel, an);
- wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel,
- sa->an);
-
- ret += nss_macsec_secy_rx_sa_en_set(drv->secy_id, channel, sa->an,
- TRUE);
+ ret += nss_macsec_secy_rx_sa_en_set(drv->secy_id, channel, an, TRUE);
return ret;
}
-static int macsec_qca_disable_receive_sa(void *priv, struct receive_sa *sa)
+static int macsec_qca_disable_receive_sa(void *priv, u32 channel, u8 an)
{
struct macsec_qca_data *drv = priv;
- int ret;
- u32 channel;
+ int ret = 0;
- ret = macsec_qca_lookup_receive_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel, an);
- wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel,
- sa->an);
-
- ret += nss_macsec_secy_rx_sa_en_set(drv->secy_id, channel, sa->an,
- FALSE);
+ ret += nss_macsec_secy_rx_sa_en_set(drv->secy_id, channel, an, FALSE);
return ret;
}
@@ -840,12 +715,14 @@
static int macsec_qca_get_available_transmit_sc(void *priv, u32 *channel)
{
struct macsec_qca_data *drv = priv;
+ int ret = 0;
u32 sc_ch = 0;
bool in_use = FALSE;
for (sc_ch = 0; sc_ch < MAXSC; sc_ch++) {
- if (nss_macsec_secy_tx_sc_in_used_get(drv->secy_id, sc_ch,
- &in_use))
+ ret = nss_macsec_secy_tx_sc_in_used_get(drv->secy_id, sc_ch,
+ &in_use);
+ if (ret)
continue;
if (!in_use) {
@@ -862,18 +739,14 @@
}
-static int macsec_qca_create_transmit_sc(void *priv, struct transmit_sc *sc,
+static int macsec_qca_create_transmit_sc(void *priv, u32 channel,
+ const u8 *sci_addr, u16 sci_port,
unsigned int conf_offset)
{
struct macsec_qca_data *drv = priv;
- int ret;
+ int ret = 0;
fal_tx_class_lut_t entry;
u8 psci[ETH_ALEN + 2];
- u32 channel;
-
- ret = macsec_qca_get_available_transmit_sc(priv, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG, "%s: channel=%d", __func__, channel);
@@ -884,9 +757,9 @@
entry.action = FAL_TX_CLASS_ACTION_FORWARD;
entry.channel = channel;
- os_memcpy(psci, sc->sci.addr, ETH_ALEN);
- psci[6] = (sc->sci.port >> 8) & 0xf;
- psci[7] = sc->sci.port & 0xf;
+ os_memcpy(psci, sci_addr, ETH_ALEN);
+ psci[6] = (sci_port >> 8) & 0xf;
+ psci[7] = sci_port & 0xf;
ret += nss_macsec_secy_tx_class_lut_set(drv->secy_id, channel, &entry);
ret += nss_macsec_secy_tx_sc_create(drv->secy_id, channel, psci, 8);
@@ -896,22 +769,15 @@
channel,
conf_offset);
- macsec_qca_register_transmit_channel(drv, sc, channel);
-
return ret;
}
-static int macsec_qca_delete_transmit_sc(void *priv, struct transmit_sc *sc)
+static int macsec_qca_delete_transmit_sc(void *priv, u32 channel)
{
struct macsec_qca_data *drv = priv;
- int ret;
+ int ret = 0;
fal_tx_class_lut_t entry;
- u32 channel;
-
- ret = macsec_qca_lookup_transmit_channel(priv, sc, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG, "%s: channel=%d", __func__, channel);
@@ -925,22 +791,19 @@
}
-static int macsec_qca_create_transmit_sa(void *priv, struct transmit_sa *sa)
+static int macsec_qca_create_transmit_sa(void *priv, u32 channel, u8 an,
+ u32 next_pn, Boolean confidentiality,
+ const u8 *sak)
{
struct macsec_qca_data *drv = priv;
- int ret;
+ int ret = 0;
u8 tci = 0;
fal_tx_sak_t tx_sak;
int i;
- u32 channel;
-
- ret = macsec_qca_lookup_transmit_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
wpa_printf(MSG_DEBUG,
"%s: channel=%d, an=%d, next_pn=0x%x, confidentiality=%d",
- __func__, channel, sa->an, sa->next_pn, sa->confidentiality);
+ __func__, channel, an, next_pn, confidentiality);
if (drv->always_include_sci)
tci |= TCI_SC;
@@ -949,60 +812,45 @@
else if (drv->use_scb)
tci |= TCI_SCB;
- if (sa->confidentiality)
+ if (confidentiality)
tci |= TCI_E | TCI_C;
os_memset(&tx_sak, 0, sizeof(tx_sak));
for (i = 0; i < 16; i++)
- tx_sak.sak[i] = sa->pkey->key[15 - i];
+ tx_sak.sak[i] = sak[15 - i];
- ret += nss_macsec_secy_tx_sa_next_pn_set(drv->secy_id, channel, sa->an,
- sa->next_pn);
- ret += nss_macsec_secy_tx_sak_set(drv->secy_id, channel, sa->an,
- &tx_sak);
+ ret += nss_macsec_secy_tx_sa_next_pn_set(drv->secy_id, channel, an,
+ next_pn);
+ ret += nss_macsec_secy_tx_sak_set(drv->secy_id, channel, an, &tx_sak);
ret += nss_macsec_secy_tx_sc_tci_7_2_set(drv->secy_id, channel,
(tci >> 2));
- ret += nss_macsec_secy_tx_sc_an_set(drv->secy_id, channel, sa->an);
+ ret += nss_macsec_secy_tx_sc_an_set(drv->secy_id, channel, an);
return ret;
}
-static int macsec_qca_enable_transmit_sa(void *priv, struct transmit_sa *sa)
+static int macsec_qca_enable_transmit_sa(void *priv, u32 channel, u8 an)
{
struct macsec_qca_data *drv = priv;
- int ret;
- u32 channel;
+ int ret = 0;
- ret = macsec_qca_lookup_transmit_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel, an);
- wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel,
- sa->an);
-
- ret += nss_macsec_secy_tx_sa_en_set(drv->secy_id, channel, sa->an,
- TRUE);
+ ret += nss_macsec_secy_tx_sa_en_set(drv->secy_id, channel, an, TRUE);
return ret;
}
-static int macsec_qca_disable_transmit_sa(void *priv, struct transmit_sa *sa)
+static int macsec_qca_disable_transmit_sa(void *priv, u32 channel, u8 an)
{
struct macsec_qca_data *drv = priv;
- int ret;
- u32 channel;
+ int ret = 0;
- ret = macsec_qca_lookup_transmit_channel(priv, sa->sc, &channel);
- if (ret != 0)
- return ret;
+ wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel, an);
- wpa_printf(MSG_DEBUG, "%s: channel=%d, an=%d", __func__, channel,
- sa->an);
-
- ret += nss_macsec_secy_tx_sa_en_set(drv->secy_id, channel, sa->an,
- FALSE);
+ ret += nss_macsec_secy_tx_sa_en_set(drv->secy_id, channel, an, FALSE);
return ret;
}
@@ -1019,7 +867,6 @@
.macsec_init = macsec_qca_macsec_init,
.macsec_deinit = macsec_qca_macsec_deinit,
- .macsec_get_capability = macsec_qca_get_capability,
.enable_protect_frames = macsec_qca_enable_protect_frames,
.set_replay_protect = macsec_qca_set_replay_protect,
.set_current_cipher_suite = macsec_qca_set_current_cipher_suite,
@@ -1027,11 +874,13 @@
.get_receive_lowest_pn = macsec_qca_get_receive_lowest_pn,
.get_transmit_next_pn = macsec_qca_get_transmit_next_pn,
.set_transmit_next_pn = macsec_qca_set_transmit_next_pn,
+ .get_available_receive_sc = macsec_qca_get_available_receive_sc,
.create_receive_sc = macsec_qca_create_receive_sc,
.delete_receive_sc = macsec_qca_delete_receive_sc,
.create_receive_sa = macsec_qca_create_receive_sa,
.enable_receive_sa = macsec_qca_enable_receive_sa,
.disable_receive_sa = macsec_qca_disable_receive_sa,
+ .get_available_transmit_sc = macsec_qca_get_available_transmit_sc,
.create_transmit_sc = macsec_qca_create_transmit_sc,
.delete_transmit_sc = macsec_qca_delete_transmit_sc,
.create_transmit_sa = macsec_qca_create_transmit_sa,
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 75c4271..1210d43 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3095,11 +3095,11 @@
if (params->ie &&
nla_put(msg, NL80211_ATTR_IE, params->ie_len, params->ie))
goto fail;
- if (params->auth_data) {
- wpa_hexdump(MSG_DEBUG, " * auth_data", params->auth_data,
- params->auth_data_len);
- if (nla_put(msg, NL80211_ATTR_SAE_DATA, params->auth_data_len,
- params->auth_data))
+ if (params->sae_data) {
+ wpa_hexdump(MSG_DEBUG, " * SAE data", params->sae_data,
+ params->sae_data_len);
+ if (nla_put(msg, NL80211_ATTR_SAE_DATA, params->sae_data_len,
+ params->sae_data))
goto fail;
}
if (params->auth_alg & WPA_AUTH_ALG_OPEN)
@@ -3112,8 +3112,6 @@
type = NL80211_AUTHTYPE_FT;
else if (params->auth_alg & WPA_AUTH_ALG_SAE)
type = NL80211_AUTHTYPE_SAE;
- else if (params->auth_alg & WPA_AUTH_ALG_FILS)
- type = NL80211_AUTHTYPE_FILS_SK;
else
goto fail;
wpa_printf(MSG_DEBUG, " * Auth Type %d", type);
@@ -5154,22 +5152,6 @@
if (ret)
goto fail;
- if (params->fils_kek) {
- wpa_printf(MSG_DEBUG, " * FILS KEK (len=%u)",
- (unsigned int) params->fils_kek_len);
- if (nla_put(msg, NL80211_ATTR_FILS_KEK, params->fils_kek_len,
- params->fils_kek))
- goto fail;
- }
- if (params->fils_nonces) {
- wpa_hexdump(MSG_DEBUG, " * FILS nonces (for AAD)",
- params->fils_nonces,
- params->fils_nonces_len);
- if (nla_put(msg, NL80211_ATTR_FILS_NONCES,
- params->fils_nonces_len, params->fils_nonces))
- goto fail;
- }
-
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
msg = NULL;
if (ret) {
@@ -9325,56 +9307,6 @@
return send_and_recv_msgs(drv, msg, NULL, NULL);
}
-
-static int nl80211_set_tdls_mode(void *priv, int tdls_external_control)
-{
- struct i802_bss *bss = priv;
- struct wpa_driver_nl80211_data *drv = bss->drv;
- struct nl_msg *msg;
- struct nlattr *params;
- int ret;
- u32 tdls_mode;
-
- wpa_printf(MSG_DEBUG,
- "nl80211: Set TDKS mode: tdls_external_control=%d",
- tdls_external_control);
-
- if (tdls_external_control == 1)
- tdls_mode = QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_IMPLICIT |
- QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXTERNAL;
- else
- tdls_mode = QCA_WLAN_VENDOR_TDLS_TRIGGER_MODE_EXPLICIT;
-
- if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) ||
- nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) ||
- nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD,
- QCA_NL80211_VENDOR_SUBCMD_CONFIGURE_TDLS))
- goto fail;
-
- params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA);
- if (!params)
- goto fail;
-
- if (nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE,
- tdls_mode))
- goto fail;
-
- nla_nest_end(msg, params);
-
- ret = send_and_recv_msgs(drv, msg, NULL, NULL);
- msg = NULL;
- if (ret) {
- wpa_printf(MSG_ERROR,
- "nl80211: Set TDLS mode failed: ret=%d (%s)",
- ret, strerror(-ret));
- goto fail;
- }
- return 0;
-fail:
- nlmsg_free(msg);
- return -1;
-}
-
#endif /* CONFIG_DRIVER_NL80211_QCA */
@@ -9618,7 +9550,6 @@
.p2p_lo_start = nl80211_p2p_lo_start,
.p2p_lo_stop = nl80211_p2p_lo_stop,
.set_default_scan_ies = nl80211_set_default_scan_ies,
- .set_tdls_mode = nl80211_set_tdls_mode,
#endif /* CONFIG_DRIVER_NL80211_QCA */
.configure_data_frame_filters = nl80211_configure_data_frame_filters,
.get_ext_capab = nl80211_get_ext_capab,
diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index 2507a43..6adc3f6 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -362,9 +362,6 @@
if (ext_feature_isset(ext_features, len, NL80211_EXT_FEATURE_RRM))
capa->rrm_flags |= WPA_DRIVER_FLAGS_SUPPORT_RRM;
-
- if (ext_feature_isset(ext_features, len, NL80211_EXT_FEATURE_FILS_STA))
- capa->flags |= WPA_DRIVER_FLAGS_SUPPORT_FILS;
}
diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
index c77e21e..762e3ac 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -247,8 +247,6 @@
os_memcpy(drv->prev_bssid, mgmt->sa, ETH_ALEN);
os_memset(&event, 0, sizeof(event));
- event.assoc_info.resp_frame = frame;
- event.assoc_info.resp_frame_len = len;
if (len > 24 + sizeof(mgmt->u.assoc_resp)) {
event.assoc_info.resp_ies = (u8 *) mgmt->u.assoc_resp.variable;
event.assoc_info.resp_ies_len =
@@ -518,7 +516,6 @@
data.ch_switch.cf2 = nla_get_u32(cf2);
bss->freq = data.ch_switch.freq;
- drv->assoc_freq = data.ch_switch.freq;
wpa_supplicant_event(bss->ctx, EVENT_CH_SWITCH, &data);
}
diff --git a/src/drivers/driver_privsep.c b/src/drivers/driver_privsep.c
index 5d85033..43d4193 100644
--- a/src/drivers/driver_privsep.c
+++ b/src/drivers/driver_privsep.c
@@ -234,7 +234,7 @@
__func__, priv, params->freq, MAC2STR(params->bssid),
params->auth_alg, params->local_state_change, params->p2p);
- buflen = sizeof(*data) + params->ie_len + params->auth_data_len;
+ buflen = sizeof(*data) + params->ie_len + params->sae_data_len;
data = os_zalloc(buflen);
if (data == NULL)
return -1;
@@ -259,8 +259,8 @@
os_memcpy(pos, params->ie, params->ie_len);
pos += params->ie_len;
}
- if (params->auth_data_len)
- os_memcpy(pos, params->auth_data, params->auth_data_len);
+ if (params->sae_data_len)
+ os_memcpy(pos, params->sae_data, params->sae_data_len);
res = wpa_priv_cmd(drv, PRIVSEP_CMD_AUTHENTICATE, data, buflen,
NULL, NULL);
diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h
index a268a00..2206941 100644
--- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h
@@ -48,7 +48,6 @@
#define NL80211_MULTICAST_GROUP_REG "regulatory"
#define NL80211_MULTICAST_GROUP_MLME "mlme"
#define NL80211_MULTICAST_GROUP_VENDOR "vendor"
-#define NL80211_MULTICAST_GROUP_NAN "nan"
#define NL80211_MULTICAST_GROUP_TESTMODE "testmode"
/**
@@ -839,41 +838,6 @@
* not running. The driver indicates the status of the scan through
* cfg80211_scan_done().
*
- * @NL80211_CMD_START_NAN: Start NAN operation, identified by its
- * %NL80211_ATTR_WDEV interface. This interface must have been previously
- * created with %NL80211_CMD_NEW_INTERFACE. After it has been started, the
- * NAN interface will create or join a cluster. This command must have a
- * valid %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
- * %NL80211_ATTR_NAN_DUAL attributes.
- * After this command NAN functions can be added.
- * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
- * its %NL80211_ATTR_WDEV interface.
- * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
- * with %NL80211_ATTR_NAN_FUNC nested attribute. When called, this
- * operation returns the strictly positive and unique instance id
- * (%NL80211_ATTR_NAN_FUNC_INST_ID) and a cookie (%NL80211_ATTR_COOKIE)
- * of the function upon success.
- * Since instance ID's can be re-used, this cookie is the right
- * way to identify the function. This will avoid races when a termination
- * event is handled by the user space after it has already added a new
- * function that got the same instance id from the kernel as the one
- * which just terminated.
- * This cookie may be used in NAN events even before the command
- * returns, so userspace shouldn't process NAN events until it processes
- * the response to this command.
- * Look at %NL80211_ATTR_SOCKET_OWNER as well.
- * @NL80211_CMD_DEL_NAN_FUNCTION: Delete a NAN function by cookie.
- * This command is also used as a notification sent when a NAN function is
- * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID
- * and %NL80211_ATTR_COOKIE attributes.
- * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN configuration. NAN
- * must be operational (%NL80211_CMD_START_NAN was executed).
- * It must contain at least one of the following attributes:
- * %NL80211_ATTR_NAN_MASTER_PREF, %NL80211_ATTR_NAN_DUAL.
- * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
- * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
- * %NL80211_ATTR_COOKIE.
- *
* @NL80211_CMD_MAX: highest used command number
* @__NL80211_CMD_AFTER_LAST: internal use
*/
@@ -1062,13 +1026,6 @@
NL80211_CMD_ABORT_SCAN,
- NL80211_CMD_START_NAN,
- NL80211_CMD_STOP_NAN,
- NL80211_CMD_ADD_NAN_FUNCTION,
- NL80211_CMD_DEL_NAN_FUNCTION,
- NL80211_CMD_CHANGE_NAN_CONFIG,
- NL80211_CMD_NAN_MATCH,
-
/* add new commands above here */
/* used to define NL80211_CMD_MAX below */
@@ -1386,13 +1343,7 @@
* enum nl80211_band value is used as the index (nla_type() of the nested
* data. If a band is not included, it will be configured to allow all
* rates based on negotiated supported rates information. This attribute
- * is used with %NL80211_CMD_SET_TX_BITRATE_MASK and with starting AP,
- * and joining mesh networks (not IBSS yet). In the later case, it must
- * specify just a single bitrate, which is to be used for the beacon.
- * The driver must also specify support for this with the extended
- * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
- * NL80211_EXT_FEATURE_BEACON_RATE_HT and
- * NL80211_EXT_FEATURE_BEACON_RATE_VHT.
+ * is used with %NL80211_CMD_SET_TX_BITRATE_MASK.
*
* @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
* at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
@@ -1638,16 +1589,8 @@
* the connection request from a station. nl80211_connect_failed_reason
* enum has different reasons of connection failure.
*
- * @NL80211_ATTR_AUTH_DATA: Fields and elements in Authentication frames.
- * This contains the authentication frame body (non-IE and IE data),
- * excluding the Authentication algorithm number, i.e., starting at the
- * Authentication transaction sequence number field. It is used with
- * authentication algorithms that need special fields to be added into
- * the frames (SAE and FILS). Currently, only the SAE cases use the
- * initial two fields (Authentication transaction sequence number and
- * Status code). However, those fields are included in the attribute data
- * for all authentication algorithms to keep the attribute definition
- * consistent.
+ * @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts
+ * with the Authentication transaction sequence number field.
*
* @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from
* association request when used with NL80211_CMD_NEW_STATION)
@@ -1790,12 +1733,6 @@
* regulatory indoor configuration would be owned by the netlink socket
* that configured the indoor setting, and the indoor operation would be
* cleared when the socket is closed.
- * If set during NAN interface creation, the interface will be destroyed
- * if the socket is closed just like any other interface. Moreover, only
- * the netlink socket that created the interface will be allowed to add
- * and remove functions. NAN notifications will be sent in unicast to that
- * socket. Without this attribute, any socket can add functions and the
- * notifications will be sent to the %NL80211_MCGRP_NAN multicast group.
*
* @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
* the TDLS link initiator.
@@ -1930,26 +1867,6 @@
* @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is
* used to pull the stored data for mesh peer in power save state.
*
- * @NL80211_ATTR_NAN_MASTER_PREF: the master preference to be used by
- * %NL80211_CMD_START_NAN and optionally with
- * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0.
- * Also, values 1 and 255 are reserved for certification purposes and
- * should not be used during a normal device operation.
- * @NL80211_ATTR_NAN_DUAL: NAN dual band operation config (see
- * &enum nl80211_nan_dual_band_conf). This attribute is used with
- * %NL80211_CMD_START_NAN and optionally with
- * %NL80211_CMD_CHANGE_NAN_CONFIG.
- * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See
- * &enum nl80211_nan_func_attributes for description of this nested
- * attribute.
- * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
- * See &enum nl80211_nan_match_attributes.
- * @NL80211_ATTR_FILS_KEK: KEK for FILS (Re)Association Request/Response frame
- * protection.
- * @NL80211_ATTR_FILS_NONCES: Nonces (part of AAD) for FILS (Re)Association
- * Request/Response frame protection. This attribute contains the 16 octet
- * STA Nonce followed by 16 octets of AP Nonce.
- *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2208,7 +2125,7 @@
NL80211_ATTR_CONN_FAILED_REASON,
- NL80211_ATTR_AUTH_DATA,
+ NL80211_ATTR_SAE_DATA,
NL80211_ATTR_VHT_CAPABILITY,
@@ -2344,14 +2261,6 @@
NL80211_ATTR_MESH_PEER_AID,
- NL80211_ATTR_NAN_MASTER_PREF,
- NL80211_ATTR_NAN_DUAL,
- NL80211_ATTR_NAN_FUNC,
- NL80211_ATTR_NAN_MATCH,
-
- NL80211_ATTR_FILS_KEK,
- NL80211_ATTR_FILS_NONCES,
-
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@@ -2363,7 +2272,6 @@
#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
#define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER
-#define NL80211_ATTR_SAE_DATA NL80211_ATTR_AUTH_DATA
/*
* Allow user space programs to use #ifdef on new attributes by defining them
@@ -2431,7 +2339,6 @@
* commands to create and destroy one
* @NL80211_IF_TYPE_OCB: Outside Context of a BSS
* This mode corresponds to the MIB variable dot11OCBActivated=true
- * @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
* @NL80211_IFTYPE_MAX: highest interface type number currently defined
* @NUM_NL80211_IFTYPES: number of defined interface types
*
@@ -2452,7 +2359,6 @@
NL80211_IFTYPE_P2P_GO,
NL80211_IFTYPE_P2P_DEVICE,
NL80211_IFTYPE_OCB,
- NL80211_IFTYPE_NAN,
/* keep last */
NUM_NL80211_IFTYPES,
@@ -3677,9 +3583,6 @@
* @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r)
* @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP)
* @NL80211_AUTHTYPE_SAE: Simultaneous authentication of equals
- * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key
- * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS
- * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key
* @__NL80211_AUTHTYPE_NUM: internal
* @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
* @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
@@ -3692,9 +3595,6 @@
NL80211_AUTHTYPE_FT,
NL80211_AUTHTYPE_NETWORK_EAP,
NL80211_AUTHTYPE_SAE,
- NL80211_AUTHTYPE_FILS_SK,
- NL80211_AUTHTYPE_FILS_SK_PFS,
- NL80211_AUTHTYPE_FILS_PK,
/* keep last */
__NL80211_AUTHTYPE_NUM,
@@ -4303,9 +4203,6 @@
* of supported channel widths for radar detection.
* @NL80211_IFACE_COMB_RADAR_DETECT_REGIONS: u32 attribute containing the bitmap
* of supported regulatory regions for radar detection.
- * @NL80211_IFACE_COMB_BI_MIN_GCD: u32 attribute specifying the minimum GCD of
- * different beacon intervals supported by all the interface combinations
- * in this group (if not present, all beacon intervals be identical).
* @NUM_NL80211_IFACE_COMB: number of attributes
* @MAX_NL80211_IFACE_COMB: highest attribute number
*
@@ -4313,8 +4210,8 @@
* limits = [ #{STA} <= 1, #{AP} <= 1 ], matching BI, channels = 1, max = 2
* => allows an AP and a STA that must match BIs
*
- * numbers = [ #{AP, P2P-GO} <= 8 ], BI min gcd, channels = 1, max = 8,
- * => allows 8 of AP/GO that can have BI gcd >= min gcd
+ * numbers = [ #{AP, P2P-GO} <= 8 ], channels = 1, max = 8
+ * => allows 8 of AP/GO
*
* numbers = [ #{STA} <= 2 ], channels = 2, max = 2
* => allows two STAs on different channels
@@ -4340,7 +4237,6 @@
NL80211_IFACE_COMB_NUM_CHANNELS,
NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
- NL80211_IFACE_COMB_BI_MIN_GCD,
/* keep last */
NUM_NL80211_IFACE_COMB,
@@ -4655,14 +4551,6 @@
* (if available).
* @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
* channel dwell time.
- * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
- * configuration (AP/mesh), supporting a legacy (non HT/VHT) rate.
- * @NL80211_EXT_FEATURE_BEACON_RATE_HT: Driver supports beacon rate
- * configuration (AP/mesh) with HT rates.
- * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
- * configuration (AP/mesh) with VHT rates.
- * @NL80211_EXT_FEATURE_FILS_STA: This driver supports Fast Initial Link Setup
- * with user space SME (NL80211_CMD_AUTHENTICATE) in station mode.
*
* @NUM_NL80211_EXT_FEATURES: number of extended features.
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4674,10 +4562,6 @@
NL80211_EXT_FEATURE_SCAN_START_TIME,
NL80211_EXT_FEATURE_BSS_PARENT_TSF,
NL80211_EXT_FEATURE_SET_SCAN_DWELL,
- NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
- NL80211_EXT_FEATURE_BEACON_RATE_HT,
- NL80211_EXT_FEATURE_BEACON_RATE_VHT,
- NL80211_EXT_FEATURE_FILS_STA,
/* add new features before the definition below */
NUM_NL80211_EXT_FEATURES,
@@ -4971,186 +4855,4 @@
NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
};
-/**
- * enum nl80211_nan_dual_band_conf - NAN dual band configuration
- *
- * Defines the NAN dual band mode of operation
- *
- * @NL80211_NAN_BAND_DEFAULT: device default mode
- * @NL80211_NAN_BAND_2GHZ: 2.4GHz mode
- * @NL80211_NAN_BAND_5GHZ: 5GHz mode
- */
-enum nl80211_nan_dual_band_conf {
- NL80211_NAN_BAND_DEFAULT = 1 << 0,
- NL80211_NAN_BAND_2GHZ = 1 << 1,
- NL80211_NAN_BAND_5GHZ = 1 << 2,
-};
-
-/**
- * enum nl80211_nan_function_type - NAN function type
- *
- * Defines the function type of a NAN function
- *
- * @NL80211_NAN_FUNC_PUBLISH: function is publish
- * @NL80211_NAN_FUNC_SUBSCRIBE: function is subscribe
- * @NL80211_NAN_FUNC_FOLLOW_UP: function is follow-up
- */
-enum nl80211_nan_function_type {
- NL80211_NAN_FUNC_PUBLISH,
- NL80211_NAN_FUNC_SUBSCRIBE,
- NL80211_NAN_FUNC_FOLLOW_UP,
-
- /* keep last */
- __NL80211_NAN_FUNC_TYPE_AFTER_LAST,
- NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1,
-};
-
-/**
- * enum nl80211_nan_publish_type - NAN publish tx type
- *
- * Defines how to send publish Service Discovery Frames
- *
- * @NL80211_NAN_SOLICITED_PUBLISH: publish function is solicited
- * @NL80211_NAN_UNSOLICITED_PUBLISH: publish function is unsolicited
- */
-enum nl80211_nan_publish_type {
- NL80211_NAN_SOLICITED_PUBLISH = 1 << 0,
- NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1,
-};
-
-/**
- * enum nl80211_nan_func_term_reason - NAN functions termination reason
- *
- * Defines termination reasons of a NAN function
- *
- * @NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST: requested by user
- * @NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED: timeout
- * @NL80211_NAN_FUNC_TERM_REASON_ERROR: errored
- */
-enum nl80211_nan_func_term_reason {
- NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST,
- NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED,
- NL80211_NAN_FUNC_TERM_REASON_ERROR,
-};
-
-#define NL80211_NAN_FUNC_SERVICE_ID_LEN 6
-#define NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN 0xff
-#define NL80211_NAN_FUNC_SRF_MAX_LEN 0xff
-
-/**
- * enum nl80211_nan_func_attributes - NAN function attributes
- * @__NL80211_NAN_FUNC_INVALID: invalid
- * @NL80211_NAN_FUNC_TYPE: &enum nl80211_nan_function_type (u8).
- * @NL80211_NAN_FUNC_SERVICE_ID: 6 bytes of the service ID hash as
- * specified in NAN spec. This is a binary attribute.
- * @NL80211_NAN_FUNC_PUBLISH_TYPE: relevant if the function's type is
- * publish. Defines the transmission type for the publish Service Discovery
- * Frame, see &enum nl80211_nan_publish_type. Its type is u8.
- * @NL80211_NAN_FUNC_PUBLISH_BCAST: relevant if the function is a solicited
- * publish. Should the solicited publish Service Discovery Frame be sent to
- * the NAN Broadcast address. This is a flag.
- * @NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE: relevant if the function's type is
- * subscribe. Is the subscribe active. This is a flag.
- * @NL80211_NAN_FUNC_FOLLOW_UP_ID: relevant if the function's type is follow up.
- * The instance ID for the follow up Service Discovery Frame. This is u8.
- * @NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID: relevant if the function's type
- * is follow up. This is a u8.
- * The requestor instance ID for the follow up Service Discovery Frame.
- * @NL80211_NAN_FUNC_FOLLOW_UP_DEST: the MAC address of the recipient of the
- * follow up Service Discovery Frame. This is a binary attribute.
- * @NL80211_NAN_FUNC_CLOSE_RANGE: is this function limited for devices in a
- * close range. The range itself (RSSI) is defined by the device.
- * This is a flag.
- * @NL80211_NAN_FUNC_TTL: strictly positive number of DWs this function should
- * stay active. If not present infinite TTL is assumed. This is a u32.
- * @NL80211_NAN_FUNC_SERVICE_INFO: array of bytes describing the service
- * specific info. This is a binary attribute.
- * @NL80211_NAN_FUNC_SRF: Service Receive Filter. This is a nested attribute.
- * See &enum nl80211_nan_srf_attributes.
- * @NL80211_NAN_FUNC_RX_MATCH_FILTER: Receive Matching filter. This is a nested
- * attribute. It is a list of binary values.
- * @NL80211_NAN_FUNC_TX_MATCH_FILTER: Transmit Matching filter. This is a
- * nested attribute. It is a list of binary values.
- * @NL80211_NAN_FUNC_INSTANCE_ID: The instance ID of the function.
- * Its type is u8 and it cannot be 0.
- * @NL80211_NAN_FUNC_TERM_REASON: NAN function termination reason.
- * See &enum nl80211_nan_func_term_reason.
- *
- * @NUM_NL80211_NAN_FUNC_ATTR: internal
- * @NL80211_NAN_FUNC_ATTR_MAX: highest NAN function attribute
- */
-enum nl80211_nan_func_attributes {
- __NL80211_NAN_FUNC_INVALID,
- NL80211_NAN_FUNC_TYPE,
- NL80211_NAN_FUNC_SERVICE_ID,
- NL80211_NAN_FUNC_PUBLISH_TYPE,
- NL80211_NAN_FUNC_PUBLISH_BCAST,
- NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE,
- NL80211_NAN_FUNC_FOLLOW_UP_ID,
- NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID,
- NL80211_NAN_FUNC_FOLLOW_UP_DEST,
- NL80211_NAN_FUNC_CLOSE_RANGE,
- NL80211_NAN_FUNC_TTL,
- NL80211_NAN_FUNC_SERVICE_INFO,
- NL80211_NAN_FUNC_SRF,
- NL80211_NAN_FUNC_RX_MATCH_FILTER,
- NL80211_NAN_FUNC_TX_MATCH_FILTER,
- NL80211_NAN_FUNC_INSTANCE_ID,
- NL80211_NAN_FUNC_TERM_REASON,
-
- /* keep last */
- NUM_NL80211_NAN_FUNC_ATTR,
- NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1
-};
-
-/**
- * enum nl80211_nan_srf_attributes - NAN Service Response filter attributes
- * @__NL80211_NAN_SRF_INVALID: invalid
- * @NL80211_NAN_SRF_INCLUDE: present if the include bit of the SRF set.
- * This is a flag.
- * @NL80211_NAN_SRF_BF: Bloom Filter. Present if and only if
- * &NL80211_NAN_SRF_MAC_ADDRS isn't present. This attribute is binary.
- * @NL80211_NAN_SRF_BF_IDX: index of the Bloom Filter. Mandatory if
- * &NL80211_NAN_SRF_BF is present. This is a u8.
- * @NL80211_NAN_SRF_MAC_ADDRS: list of MAC addresses for the SRF. Present if
- * and only if &NL80211_NAN_SRF_BF isn't present. This is a nested
- * attribute. Each nested attribute is a MAC address.
- * @NUM_NL80211_NAN_SRF_ATTR: internal
- * @NL80211_NAN_SRF_ATTR_MAX: highest NAN SRF attribute
- */
-enum nl80211_nan_srf_attributes {
- __NL80211_NAN_SRF_INVALID,
- NL80211_NAN_SRF_INCLUDE,
- NL80211_NAN_SRF_BF,
- NL80211_NAN_SRF_BF_IDX,
- NL80211_NAN_SRF_MAC_ADDRS,
-
- /* keep last */
- NUM_NL80211_NAN_SRF_ATTR,
- NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1,
-};
-
-/**
- * enum nl80211_nan_match_attributes - NAN match attributes
- * @__NL80211_NAN_MATCH_INVALID: invalid
- * @NL80211_NAN_MATCH_FUNC_LOCAL: the local function that had the
- * match. This is a nested attribute.
- * See &enum nl80211_nan_func_attributes.
- * @NL80211_NAN_MATCH_FUNC_PEER: the peer function
- * that caused the match. This is a nested attribute.
- * See &enum nl80211_nan_func_attributes.
- *
- * @NUM_NL80211_NAN_MATCH_ATTR: internal
- * @NL80211_NAN_MATCH_ATTR_MAX: highest NAN match attribute
- */
-enum nl80211_nan_match_attributes {
- __NL80211_NAN_MATCH_INVALID,
- NL80211_NAN_MATCH_FUNC_LOCAL,
- NL80211_NAN_MATCH_FUNC_PEER,
-
- /* keep last */
- NUM_NL80211_NAN_MATCH_ATTR,
- NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
-};
-
#endif /* __LINUX_NL80211_H */