78 lines
2.3 KiB
C
78 lines
2.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* WFA NAN definitions
|
|
*
|
|
* Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
|
|
* <jkmaline@cc.hut.fi>
|
|
* Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi>
|
|
* Copyright (c) 2005, Devicescape Software, Inc.
|
|
* Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net>
|
|
* Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH
|
|
* Copyright (c) 2016 - 2017 Intel Deutschland GmbH
|
|
* Copyright (c) 2018 - 2026 Intel Corporation
|
|
*/
|
|
|
|
#ifndef LINUX_IEEE80211_NAN_H
|
|
#define LINUX_IEEE80211_NAN_H
|
|
|
|
/* NAN operation mode, as defined in Wi-Fi Aware (TM) specification Table 81 */
|
|
#define NAN_OP_MODE_PHY_MODE_VHT 0x01
|
|
#define NAN_OP_MODE_PHY_MODE_HE 0x10
|
|
#define NAN_OP_MODE_PHY_MODE_MASK 0x11
|
|
#define NAN_OP_MODE_80P80MHZ 0x02
|
|
#define NAN_OP_MODE_160MHZ 0x04
|
|
#define NAN_OP_MODE_PNDL_SUPPRTED 0x08
|
|
|
|
#define NAN_DEV_CAPA_NUM_TX_ANT_POS 0
|
|
#define NAN_DEV_CAPA_NUM_TX_ANT_MASK 0x0f
|
|
#define NAN_DEV_CAPA_NUM_RX_ANT_POS 4
|
|
#define NAN_DEV_CAPA_NUM_RX_ANT_MASK 0xf0
|
|
|
|
/* NAN Device capabilities, as defined in Wi-Fi Aware (TM) specification
|
|
* Table 79
|
|
*/
|
|
#define NAN_DEV_CAPA_DFS_OWNER 0x01
|
|
#define NAN_DEV_CAPA_EXT_KEY_ID_SUPPORTED 0x02
|
|
#define NAN_DEV_CAPA_SIM_NDP_RX_SUPPORTED 0x04
|
|
#define NAN_DEV_CAPA_NDPE_SUPPORTED 0x08
|
|
#define NAN_DEV_CAPA_S3_SUPPORTED 0x10
|
|
|
|
/* NAN attributes, as defined in Wi-Fi Aware (TM) specification 4.0 Table 42 */
|
|
#define NAN_ATTR_MASTER_INDICATION 0x00
|
|
#define NAN_ATTR_CLUSTER_INFO 0x01
|
|
|
|
struct ieee80211_nan_attr {
|
|
u8 attr;
|
|
__le16 length;
|
|
u8 data[];
|
|
} __packed;
|
|
|
|
struct ieee80211_nan_master_indication {
|
|
u8 master_pref;
|
|
u8 random_factor;
|
|
} __packed;
|
|
|
|
struct ieee80211_nan_anchor_master_info {
|
|
union {
|
|
__le64 master_rank;
|
|
struct {
|
|
u8 master_addr[ETH_ALEN];
|
|
u8 random_factor;
|
|
u8 master_pref;
|
|
} __packed;
|
|
} __packed;
|
|
u8 hop_count;
|
|
__le32 ambtt;
|
|
} __packed;
|
|
|
|
#define for_each_nan_attr(_attr, _data, _datalen) \
|
|
for (_attr = (const struct ieee80211_nan_attr *)(_data); \
|
|
(const u8 *)(_data) + (_datalen) - (const u8 *)_attr >= \
|
|
(int)sizeof(*_attr) && \
|
|
(const u8 *)(_data) + (_datalen) - (const u8 *)_attr >= \
|
|
(int)sizeof(*_attr) + le16_to_cpu(_attr->length); \
|
|
_attr = (const struct ieee80211_nan_attr *) \
|
|
(_attr->data + le16_to_cpu(_attr->length)))
|
|
|
|
#endif /* LINUX_IEEE80211_NAN_H */
|