diff options
author | Jo-Philipp Wich <jo@mein.io> | 2024-07-11 13:51:50 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2024-07-11 14:50:40 +0200 |
commit | bc13278eae5e49ce8bcf8cd964c97f05660e81b3 (patch) | |
tree | 2e6530a171faa254b3e1a6e2d16f40b023592947 /include | |
parent | f5b5a583596580df46c361b6333703a228e3da11 (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')
-rw-r--r-- | include/linux/mac80211_hwsim.h | 83 |
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 */ |