mirror of
https://github.com/proski/madwifi
synced 2024-11-29 17:53:12 +03:00
91fcb5214d
We were setting this field to 0 as we had no easy way of determining what TX power was used to transmit a frame. However, by including this field and setting it to 0dBm we are saying that each frame is being transmitted at 1mW, which is incorrect. Better to simply not write the field at all, however this introduces the need for padding in the TX header to ensure that the TX_FLAGS field is aligned to a 16-bit boundary. git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3014 0192ed92-7a03-0410-a25b-9323aeb14dbd
162 lines
5.0 KiB
C
162 lines
5.0 KiB
C
/*-
|
|
* Copyright (c) 2005 John Bicket
|
|
* All rights reserved.
|
|
*
|
|
* 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.
|
|
* 3. The name of the author may not be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
|
|
*
|
|
* $Id$
|
|
*/
|
|
#ifndef _NET80211_IEEE80211_MONITOR_H_
|
|
#define _NET80211_IEEE80211_MONITOR_H_
|
|
|
|
#ifndef ARPHRD_IEEE80211_RADIOTAP
|
|
#define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header */
|
|
#endif /* ARPHRD_IEEE80211_RADIOTAP */
|
|
|
|
#ifndef ARPHRD_IEEE80211_ATHDESC
|
|
#define ARPHRD_IEEE80211_ATHDESC 804 /* IEEE 802.11 + atheros descriptor */
|
|
#endif /* ARPHRD_IEEE80211_RADIOTAP */
|
|
|
|
#define ATHDESC_HEADER_SIZE 32
|
|
|
|
#include <net80211/ieee80211_radiotap.h>
|
|
#include <ah_desc.h>
|
|
#include <ath/if_athvar.h>
|
|
|
|
struct ieee80211_phy_params {
|
|
u_int8_t rate0;
|
|
u_int8_t rate1;
|
|
u_int8_t rate2;
|
|
u_int8_t rate3;
|
|
|
|
u_int8_t try0;
|
|
u_int8_t try1;
|
|
u_int8_t try2;
|
|
u_int8_t try3;
|
|
|
|
u_int8_t power;
|
|
u_int32_t flags;
|
|
};
|
|
|
|
enum {
|
|
DIDmsg_lnxind_wlansniffrm = 0x00000044,
|
|
DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044,
|
|
DIDmsg_lnxind_wlansniffrm_mactime = 0x00020044,
|
|
DIDmsg_lnxind_wlansniffrm_channel = 0x00030044,
|
|
DIDmsg_lnxind_wlansniffrm_rssi = 0x00040044,
|
|
DIDmsg_lnxind_wlansniffrm_sq = 0x00050044,
|
|
DIDmsg_lnxind_wlansniffrm_signal = 0x00060044,
|
|
DIDmsg_lnxind_wlansniffrm_noise = 0x00070044,
|
|
DIDmsg_lnxind_wlansniffrm_rate = 0x00080044,
|
|
DIDmsg_lnxind_wlansniffrm_istx = 0x00090044,
|
|
DIDmsg_lnxind_wlansniffrm_frmlen = 0x000A0044
|
|
};
|
|
enum {
|
|
P80211ENUM_msgitem_status_no_value = 0x00
|
|
};
|
|
enum {
|
|
P80211ENUM_truth_false = 0x00,
|
|
P80211ENUM_truth_true = 0x01
|
|
};
|
|
|
|
struct p80211item_uint32 {
|
|
u_int32_t did;
|
|
u_int16_t status;
|
|
u_int16_t len;
|
|
u_int32_t data;
|
|
};
|
|
|
|
struct wlan_ng_prism2_header {
|
|
u_int32_t msgcode;
|
|
u_int32_t msglen;
|
|
#define WLAN_DEVNAMELEN_MAX 16
|
|
u_int8_t devname[WLAN_DEVNAMELEN_MAX];
|
|
struct p80211item_uint32 hosttime;
|
|
struct p80211item_uint32 mactime;
|
|
struct p80211item_uint32 channel;
|
|
struct p80211item_uint32 rssi;
|
|
struct p80211item_uint32 sq;
|
|
struct p80211item_uint32 signal;
|
|
struct p80211item_uint32 noise;
|
|
struct p80211item_uint32 rate;
|
|
struct p80211item_uint32 istx;
|
|
struct p80211item_uint32 frmlen;
|
|
};
|
|
|
|
#define ATH_RX_RADIOTAP_PRESENT ( \
|
|
(1 << IEEE80211_RADIOTAP_TSFT) | \
|
|
(1 << IEEE80211_RADIOTAP_FLAGS) | \
|
|
(1 << IEEE80211_RADIOTAP_RATE) | \
|
|
(1 << IEEE80211_RADIOTAP_CHANNEL) | \
|
|
(1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) | \
|
|
(1 << IEEE80211_RADIOTAP_DBM_ANTNOISE) | \
|
|
(1 << IEEE80211_RADIOTAP_ANTENNA) | \
|
|
(1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL) | \
|
|
0)
|
|
|
|
struct ath_rx_radiotap_header {
|
|
struct ieee80211_radiotap_header wr_ihdr;
|
|
__le64 wr_tsft;
|
|
u_int8_t wr_flags;
|
|
u_int8_t wr_rate;
|
|
__le16 wr_chan_freq;
|
|
__le16 wr_chan_flags;
|
|
int8_t wr_dbm_antsignal;
|
|
int8_t wr_dbm_antnoise;
|
|
u_int8_t wr_antenna;
|
|
u_int8_t wr_antsignal;
|
|
}__attribute__((__packed__));
|
|
|
|
#define ATH_TX_RADIOTAP_PRESENT ( \
|
|
(1 << IEEE80211_RADIOTAP_TSFT) | \
|
|
(1 << IEEE80211_RADIOTAP_FLAGS) | \
|
|
(1 << IEEE80211_RADIOTAP_RATE) | \
|
|
(1 << IEEE80211_RADIOTAP_ANTENNA) | \
|
|
(1 << IEEE80211_RADIOTAP_TX_FLAGS) | \
|
|
(1 << IEEE80211_RADIOTAP_DATA_RETRIES) | \
|
|
0)
|
|
|
|
struct ath_tx_radiotap_header {
|
|
struct ieee80211_radiotap_header wt_ihdr;
|
|
__le64 wt_tsft;
|
|
u_int8_t wt_flags;
|
|
u_int8_t wt_rate;
|
|
u_int8_t wt_antenna;
|
|
u_int8_t wt_pad; /* Padding to ensure txflags is aligned */
|
|
__le16 wt_txflags;
|
|
u_int8_t wt_dataretries;
|
|
}__attribute__((__packed__));
|
|
|
|
/*
|
|
* Dispatch an skb to monitor-mode VAPs. The skb is assumed
|
|
* to have space at the front to push a wlan_ng_prims2_header.
|
|
*/
|
|
void ieee80211_input_monitor(struct ieee80211com *, struct sk_buff *,
|
|
const struct ath_buf *, int, u_int64_t, struct ath_softc *);
|
|
|
|
|
|
void ieee80211_monitor_encap(struct ieee80211vap *, struct sk_buff *);
|
|
|
|
|
|
#endif /* _NET80211_IEEE80211_MONITOR_H_ */
|