aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2014-11-06 16:56:36 -0500
committerJohannes Berg <johannes.berg@intel.com>2014-11-10 04:30:43 -0500
commit1f7bba79af57ceecf25c2b7d3e6a484efefe340f (patch)
tree1394dde23980c4436bd41aca4e6a251e42055e42 /include/net
parentd04b5ac9e70b2056a8a12f768f4b46773576025e (diff)
mac80211: add back support for radiotap vendor namespace data
Radiotap vendor namespace data might still be useful, but we reverted it because it used too much space in the RX status. Put it back, but address the space problem by using a single bit only and putting everything else into the skb->data. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 5f203a6a5e7e..83232aa2f077 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -882,6 +882,9 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
882 * subframes share the same sequence number. Reported subframes can be 882 * subframes share the same sequence number. Reported subframes can be
883 * either regular MSDU or singly A-MSDUs. Subframes must not be 883 * either regular MSDU or singly A-MSDUs. Subframes must not be
884 * interleaved with other frames. 884 * interleaved with other frames.
885 * @RX_FLAG_RADIOTAP_VENDOR_DATA: This frame contains vendor-specific
886 * radiotap data in the skb->data (before the frame) as described by
887 * the &struct ieee80211_vendor_radiotap.
885 */ 888 */
886enum mac80211_rx_flags { 889enum mac80211_rx_flags {
887 RX_FLAG_MMIC_ERROR = BIT(0), 890 RX_FLAG_MMIC_ERROR = BIT(0),
@@ -911,6 +914,7 @@ enum mac80211_rx_flags {
911 RX_FLAG_10MHZ = BIT(28), 914 RX_FLAG_10MHZ = BIT(28),
912 RX_FLAG_5MHZ = BIT(29), 915 RX_FLAG_5MHZ = BIT(29),
913 RX_FLAG_AMSDU_MORE = BIT(30), 916 RX_FLAG_AMSDU_MORE = BIT(30),
917 RX_FLAG_RADIOTAP_VENDOR_DATA = BIT(31),
914}; 918};
915 919
916#define RX_FLAG_STBC_SHIFT 26 920#define RX_FLAG_STBC_SHIFT 26
@@ -982,6 +986,39 @@ struct ieee80211_rx_status {
982}; 986};
983 987
984/** 988/**
989 * struct ieee80211_vendor_radiotap - vendor radiotap data information
990 * @present: presence bitmap for this vendor namespace
991 * (this could be extended in the future if any vendor needs more
992 * bits, the radiotap spec does allow for that)
993 * @align: radiotap vendor namespace alignment. This defines the needed
994 * alignment for the @data field below, not for the vendor namespace
995 * description itself (which has a fixed 2-byte alignment)
996 * Must be a power of two, and be set to at least 1!
997 * @oui: radiotap vendor namespace OUI
998 * @subns: radiotap vendor sub namespace
999 * @len: radiotap vendor sub namespace skip length, if alignment is done
1000 * then that's added to this, i.e. this is only the length of the
1001 * @data field.
1002 * @pad: number of bytes of padding after the @data, this exists so that
1003 * the skb data alignment can be preserved even if the data has odd
1004 * length
1005 * @data: the actual vendor namespace data
1006 *
1007 * This struct, including the vendor data, goes into the skb->data before
1008 * the 802.11 header. It's split up in mac80211 using the align/oui/subns
1009 * data.
1010 */
1011struct ieee80211_vendor_radiotap {
1012 u32 present;
1013 u8 align;
1014 u8 oui[3];
1015 u8 subns;
1016 u8 pad;
1017 u16 len;
1018 u8 data[];
1019} __packed;
1020
1021/**
985 * enum ieee80211_conf_flags - configuration flags 1022 * enum ieee80211_conf_flags - configuration flags
986 * 1023 *
987 * Flags to define PHY configuration options 1024 * Flags to define PHY configuration options