summaryrefslogtreecommitdiffstats
path: root/sys/dev/ath/if_athvar.h
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2004-12-31 20:32:40 +0000
committersam <sam@FreeBSD.org>2004-12-31 20:32:40 +0000
commit341ffa612f66fc3213f4bedb7d13a5ccf12b7490 (patch)
treec263ca48d3f51731ab7dc189eb0251af3193d035 /sys/dev/ath/if_athvar.h
parent186275ec87e54f7c5c3e4ec75fbcb167bee25fcc (diff)
downloadFreeBSD-src-341ffa612f66fc3213f4bedb7d13a5ccf12b7490.zip
FreeBSD-src-341ffa612f66fc3213f4bedb7d13a5ccf12b7490.tar.gz
Radiotap fixups:
o catch one place where we were not using ath_chan_change to switch channels; this fixes a problem where the channel settings were not being correctly reported in captured packets o return unique channel identification in the channel flags; ethereal gets confused if you return merged flags (e.g. ofdm, cck, and 2Ghz) (this is workaround and should be removed if we can ever cleanup radiotap consumers) o correct short/long preamble flag state for rx and treat tx the same--use a new hwflags array that gives us the data based on the h/w rate index/cookie o add gross hack to handle radiotap capture of frames that come in with hardware padding; should be replaced by a flag in the radiotap header and more smarts in the apps that decode radiotap data
Diffstat (limited to 'sys/dev/ath/if_athvar.h')
-rw-r--r--sys/dev/ath/if_athvar.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/dev/ath/if_athvar.h b/sys/dev/ath/if_athvar.h
index ffc05f2..4585801 100644
--- a/sys/dev/ath/if_athvar.h
+++ b/sys/dev/ath/if_athvar.h
@@ -182,6 +182,7 @@ struct ath_softc {
HAL_CHANNEL sc_curchan; /* current h/w channel */
u_int8_t sc_rixmap[256]; /* IEEE to h/w rate table ix */
u_int8_t sc_hwmap[32]; /* h/w rate ix to IEEE table */
+ u_int8_t sc_hwflags[32]; /* " " " to radiotap flags */
u_int8_t sc_protrix; /* protection rate index */
u_int sc_txantenna; /* tx antenna (fixed or auto) */
HAL_INT sc_imask; /* interrupt mask copy */
@@ -199,10 +200,13 @@ struct ath_softc {
} u_tx_rt;
int sc_tx_th_len;
union {
- struct ath_rx_radiotap_header th;
+ struct {
+ struct ath_rx_radiotap_header th;
+ struct ieee80211_qosframe wh;
+ } u;
u_int8_t pad[64];
} u_rx_rt;
- int sc_rx_th_len;
+ int sc_rx_rt_len;
struct task sc_fataltask; /* fatal int processing */
@@ -244,7 +248,9 @@ struct ath_softc {
};
#define sc_if sc_arp.ac_if
#define sc_tx_th u_tx_rt.th
-#define sc_rx_th u_rx_rt.th
+#define sc_rx u_rx_rt.u
+#define sc_rx_th sc_rx.th
+#define sc_rx_wh sc_rx.wh
#define ATH_LOCK_INIT(_sc) \
mtx_init(&(_sc)->sc_mtx, device_get_nameunit((_sc)->sc_dev), \
OpenPOWER on IntegriCloud