summaryrefslogtreecommitdiffhomepage
path: root/include/linux
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2024-07-11 13:51:50 +0200
committerJo-Philipp Wich <jo@mein.io>2024-07-11 14:50:40 +0200
commitbc13278eae5e49ce8bcf8cd964c97f05660e81b3 (patch)
tree2e6530a171faa254b3e1a6e2d16f40b023592947 /include/linux
parentf5b5a583596580df46c361b6333703a228e3da11 (diff)
nl80211: support the MAC80211_HWSIM netlink protocol family
The mac80211_hwsim module exposes a custom generic netlink family for managing simulated phys and userspace data frame transmission. Since hwsim functionality is closely related to nl80211 and useful to e.g. manage simulated wireless testbeds, I decided to include support directly into the nl80211 module. Example calls for creating and destroying hwsim wiphys: nl80211.request(nl80211.const.HWSIM_CMD_NEW_RADIO, 0, { perm_addr: "02:11:22:33:44:55", support_p2p_device: true }); nl80211.request(nl80211.const.HWSIM_CMD_DEL_RADIO, 0, { radio_name: "phy2" }); Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mac80211_hwsim.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/include/linux/mac80211_hwsim.h b/include/linux/mac80211_hwsim.h
new file mode 100644
index 0000000..0f21885
--- /dev/null
+++ b/include/linux/mac80211_hwsim.h
@@ -0,0 +1,83 @@
+/* Upstream source:
+ * https://github.com/torvalds/linux/blob/master/drivers/net/wireless/virtual/mac80211_hwsim.h
+ */
+
+#ifndef __LINUX_MAC80211_HWSIM_H
+#define __LINUX_MAC80211_HWSIM_H
+
+#include <stdint.h>
+#include <linux/nl80211.h>
+
+enum hwsim_commands {
+ HWSIM_CMD_OFFSET = NL80211_CMD_MAX,
+ HWSIM_CMD_REGISTER,
+ HWSIM_CMD_FRAME,
+ HWSIM_CMD_TX_INFO_FRAME,
+ HWSIM_CMD_NEW_RADIO,
+ HWSIM_CMD_DEL_RADIO,
+ HWSIM_CMD_GET_RADIO,
+ HWSIM_CMD_ADD_MAC_ADDR,
+ HWSIM_CMD_DEL_MAC_ADDR,
+ HWSIM_CMD_START_PMSR,
+ HWSIM_CMD_ABORT_PMSR,
+ HWSIM_CMD_REPORT_PMSR,
+};
+
+enum hwsim_attrs {
+ HWSIM_ATTR_UNSPEC,
+ HWSIM_ATTR_ADDR_RECEIVER,
+ HWSIM_ATTR_ADDR_TRANSMITTER,
+ HWSIM_ATTR_FRAME,
+ HWSIM_ATTR_FLAGS,
+ HWSIM_ATTR_RX_RATE,
+ HWSIM_ATTR_SIGNAL,
+ HWSIM_ATTR_TX_INFO,
+ HWSIM_ATTR_COOKIE,
+ HWSIM_ATTR_CHANNELS,
+ HWSIM_ATTR_RADIO_ID,
+ HWSIM_ATTR_REG_HINT_ALPHA2,
+ HWSIM_ATTR_REG_CUSTOM_REG,
+ HWSIM_ATTR_REG_STRICT_REG,
+ HWSIM_ATTR_SUPPORT_P2P_DEVICE,
+ HWSIM_ATTR_USE_CHANCTX,
+ HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE,
+ HWSIM_ATTR_RADIO_NAME,
+ HWSIM_ATTR_NO_VIF,
+ HWSIM_ATTR_FREQ,
+ HWSIM_ATTR_PAD,
+ HWSIM_ATTR_TX_INFO_FLAGS,
+ HWSIM_ATTR_PERM_ADDR,
+ HWSIM_ATTR_IFTYPE_SUPPORT,
+ HWSIM_ATTR_CIPHER_SUPPORT,
+ HWSIM_ATTR_MLO_SUPPORT,
+ HWSIM_ATTR_PMSR_SUPPORT,
+ HWSIM_ATTR_PMSR_REQUEST,
+ HWSIM_ATTR_PMSR_RESULT,
+};
+
+enum hwsim_rate_info_attributes {
+ HWSIM_RATE_INFO_ATTR_UNSPEC,
+ HWSIM_RATE_INFO_ATTR_FLAGS,
+ HWSIM_RATE_INFO_ATTR_MCS,
+ HWSIM_RATE_INFO_ATTR_LEGACY,
+ HWSIM_RATE_INFO_ATTR_NSS,
+ HWSIM_RATE_INFO_ATTR_BW,
+ HWSIM_RATE_INFO_ATTR_HE_GI,
+ HWSIM_RATE_INFO_ATTR_HE_DCM,
+ HWSIM_RATE_INFO_ATTR_HE_RU_ALLOC,
+ HWSIM_RATE_INFO_ATTR_N_BOUNDED_CH,
+ HWSIM_RATE_INFO_ATTR_EHT_GI,
+ HWSIM_RATE_INFO_ATTR_EHT_RU_ALLOC,
+};
+
+struct hwsim_tx_rate {
+ int8_t idx;
+ uint8_t count;
+} __attribute__((packed));
+
+struct hwsim_tx_rate_flag {
+ int8_t idx;
+ uint16_t flags;
+} __attribute__((packed));
+
+#endif /* __LINUX_MAC80211_HWSIM_H */