Page MenuHomeFreeBSD

D30641.diff
No OneTemporary

D30641.diff

diff --git a/sys/compat/linuxkpi/common/include/net/ieee80211_radiotap.h b/sys/compat/linuxkpi/common/include/net/ieee80211_radiotap.h
new file mode 100644
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/net/ieee80211_radiotap.h
@@ -0,0 +1,55 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2020-2021 The FreeBSD Foundation
+ *
+ * This software was developed by Björn Zeeb under sponsorship from
+ * the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef __LKPI_NET_IEEE80211_RADIOTAP_H
+#define __LKPI_NET_IEEE80211_RADIOTAP_H
+
+/* Any possibly duplicate content is only maintained in one place now. */
+#include <net80211/ieee80211_radiotap.h>
+
+/*
+ * This structure deviates from
+ * 'https://www.radiotap.org/fields/Vendor%20Namespace.html'
+ * and the net80211::ieee80211_radiotap_vendor_header version.
+ * We consider it LinuxKPI specific so it stays here.
+ */
+struct ieee80211_vendor_radiotap {
+ u32 present;
+ u8 align;
+ u8 oui[3];
+ u8 subns;
+ u8 pad;
+ __le16 len;
+ u8 data[0];
+};
+
+#endif /* __LKPI_NET_IEEE80211_RADIOTAP_H */
diff --git a/sys/net80211/ieee80211_radiotap.h b/sys/net80211/ieee80211_radiotap.h
--- a/sys/net80211/ieee80211_radiotap.h
+++ b/sys/net80211/ieee80211_radiotap.h
@@ -367,4 +367,138 @@
#define IEEE80211_RADIOTAP_VHT_BW_20UUL 24
#define IEEE80211_RADIOTAP_VHT_BW_20UUU 25
+/*
+ * These are found in various drivers already so use them rather than
+ * going by our own names and changing everything.
+ */
+
+/* https://www.radiotap.org/fields/VHT.html */
+#define IEEE80211_RADIOTAP_VHT_KNOWN_STBC 0x0001 /* net80211::IEEE80211_RADIOTAP_VHT_HAVE_STBC */
+#define IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED 0x0020 /* net80211::IEEE80211_RADIOTAP_VHT_HAVE_BF */
+
+/* https://www.radiotap.org/fields/0-length-PSDU.html */
+#define IEEE80211_RADIOTAP_ZERO_LEN_PSDU_SOUNDING 0x00
+#define IEEE80211_RADIOTAP_ZERO_LEN_PSDU_NOT_CAPTURED 0x01
+#define IEEE80211_RADIOTAP_ZERO_LEN_PSDU_VENDOR 0xFF
+
+/* https://www.radiotap.org/fields/HE.html */
+struct ieee80211_radiotap_he {
+ uint16_t data1, data2, data3, data4, data5, data6;
+};
+
+#define IEEE80211_RADIOTAP_HE_DATA1_FORMAT_SU 0x0000
+#define IEEE80211_RADIOTAP_HE_DATA1_FORMAT_EXT_SU 0x0001
+#define IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MU 0x0002
+#define IEEE80211_RADIOTAP_HE_DATA1_FORMAT_TRIG 0x0003
+#define IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN 0x0004
+#define IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN 0x0008
+#define IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN 0x0010
+#define IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN 0x0020
+#define IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN 0x0040
+#define IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN 0x0080
+#define IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN 0x0100
+#define IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN 0x0200
+#define IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE_KNOWN 0x0400
+#define IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE2_KNOWN 0x0800
+#define IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE3_KNOWN 0x1000
+#define IEEE80211_RADIOTAP_HE_DATA1_SPTL_REUSE4_KNOWN 0x2000
+#define IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN 0x4000
+#define IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN 0x8000
+
+#define IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_KNOWN 0x0001
+#define IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN 0x0002
+#define IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN 0x0004
+#define IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN 0x0008
+#define IEEE80211_RADIOTAP_HE_DATA2_TXBF_KNOWN 0x0010
+#define IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN 0x0020
+#define IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN 0x0040
+/* #define IEEE80211_RADIOTAP_HE_DATA2_ midamble periodicity _KNOWN 0x0080 */
+#define IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET 0x3F00
+#define IEEE80211_RADIOTAP_HE_DATA2_RU_OFFSET_KNOWN 0x4000
+#define IEEE80211_RADIOTAP_HE_DATA2_PRISEC_80_SEC 0x8000
+
+#define IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR 0x003F
+#define IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE 0x0040
+#define IEEE80211_RADIOTAP_HE_DATA3_UL_DL 0x0080
+/* #deifne IEEE80211_RADIOTAP_HE_DATA3_data_MCS 0x0F00 */
+/* #define IEEE80211_RADIOTAP_HE_DATA3_data_DCM 0x1000 */
+/* #define IEEE80211_RADIOTAP_HE_DATA3_Coding 0x2000 */
+#define IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG 0x4000
+/* #define IEEE80211_RADIOTAP_HE_DATA3_STBC 0x8000 */
+
+#define IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE 0x000F
+#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1 0x000F
+#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2 0x00F0
+#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3 0x0F00
+#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE4 0xF000
+
+#define IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE 0x00C0
+#define IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_1X 0x1
+#define IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_2X 0x2
+#define IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE_4X 0x3
+#define IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS 0x0700
+#define IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD 0x3000
+#define IEEE80211_RADIOTAP_HE_DATA5_TXBF 0x4000
+#define IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG 0x8000
+
+#define IEEE80211_RADIOTAP_HE_DATA6_DOPPLER 0x0010
+/* 0x00e0 (reserved) ; use these for the following undocumented. */
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_KNOWN 0x0020
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW 0x00C0
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_20MHZ 0x0
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_40MHZ 0x1
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_80MHZ 0x2
+#define IEEE80211_RADIOTAP_HE_DATA6_TB_PPDU_BW_160MHZ 0x3
+#define IEEE80211_RADIOTAP_HE_DATA6_TXOP 0x7F00
+
+/* https://www.radiotap.org/fields/HE-MU.html */
+struct ieee80211_radiotap_he_mu {
+ uint16_t flags1;
+ uint16_t flags2;
+ uint8_t ru_ch1[4];
+ uint8_t ru_ch2[4];
+};
+
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS 0x000F
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS_KNOWN 0x0010
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM 0x0020
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN 0x0040
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_CTR_26T_RU_KNOWN 0x0080
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN 0x0100
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH2_RU_KNOWN 0x0200
+/* reserved 0x0C00 */
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU_KNOWN 0x1000
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_CTR_26T_RU 0x2000
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_COMP_KNOWN 0x4000
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_SYMS_USERS_KNOWN 0x8000
+
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW 0x0003
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_20MHZ 0x0000
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_40MHZ 0x0001
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_80MHZ 0x0002
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_160MHZ 0x0003
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN 0x0004
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP 0x0008
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS 0x00F0
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW 0x0300
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_PUNC_FROM_SIG_A_BW_KNOWN 0x0400
+#define IEEE80211_RADIOTAP_HE_MU_FLAGS2_CH2_CTR_26T_RU 0x0800
+
+/* https://www.radiotap.org/fields/L-SIG.html */
+struct ieee80211_radiotap_lsig {
+ uint16_t data1;
+ uint16_t data2;
+};
+#define IEEE80211_RADIOTAP_LSIG_DATA1_LENGTH_KNOWN 0x0002
+
+#define IEEE80211_RADIOTAP_LSIG_DATA2_LENGTH 0xFFF0
+
+/* https://www.radiotap.org/fields/MCS.html */
+#define IEEE80211_RADIOTAP_MCS_HAVE_FEC 0x10
+#define IEEE80211_RADIOTAP_MCS_HAVE_STBC 0x20
+
+/* https://www.radiotap.org/fields/timestamp.html */
+#define IEEE80211_RADIOTAP_TIMESTAMP_UNIT_US 0x01
+#define IEEE80211_RADIOTAP_TIMESTAMP_SPOS_PLCP_SIG_ACQ 0x10
+
#endif /* !_NET80211_IEEE80211_RADIOTAP_H_ */

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 20, 9:03 AM (12 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31829416
Default Alt Text
D30641.diff (9 KB)

Event Timeline