1229970Sadrian/*- 2229970Sadrian * Copyright (c) 2010-2011 Monthadar Al Jaberi, TerraNet AB 3229970Sadrian * All rights reserved. 4229970Sadrian * 5229970Sadrian * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting 6229970Sadrian * All rights reserved. 7229970Sadrian * 8229970Sadrian * Redistribution and use in source and binary forms, with or without 9229970Sadrian * modification, are permitted provided that the following conditions 10229970Sadrian * are met: 11229970Sadrian * 1. Redistributions of source code must retain the above copyright 12229970Sadrian * notice, this list of conditions and the following disclaimer, 13229970Sadrian * without modification. 14229970Sadrian * 2. Redistributions in binary form must reproduce at minimum a disclaimer 15229970Sadrian * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 16229970Sadrian * redistribution must be conditioned upon including a substantially 17229970Sadrian * similar Disclaimer requirement for further binary redistribution. 18229970Sadrian * 19229970Sadrian * NO WARRANTY 20229970Sadrian * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21229970Sadrian * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22229970Sadrian * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 23229970Sadrian * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 24229970Sadrian * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 25229970Sadrian * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26229970Sadrian * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27229970Sadrian * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 28229970Sadrian * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29229970Sadrian * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30229970Sadrian * THE POSSIBILITY OF SUCH DAMAGES. 31229970Sadrian * 32229970Sadrian * $FreeBSD: stable/11/sys/dev/wtap/if_wtapioctl.h 345636 2019-03-28 09:50:25Z avos $ 33229970Sadrian */ 34229970Sadrian 35229970Sadrian/* 36229970Sadrian * Ioctl-related defintions for the Wireless TAP 37229970Sadrian * based on Atheros Wireless LAN controller driver. 38229970Sadrian */ 39229970Sadrian 40229970Sadrian#ifndef _DEV_WTAP_WTAPIOCTL_H 41229970Sadrian#define _DEV_WTAP_WTAPIOCTL_H 42229970Sadrian 43229970Sadrian#include <sys/param.h> 44229970Sadrian#include <net80211/ieee80211_radiotap.h> 45229970Sadrian 46229970Sadrian#define SIOCGATHSTATS _IOWR('i', 137, struct ifreq) 47229970Sadrian#define SIOCZATHSTATS _IOWR('i', 139, struct ifreq) 48229970Sadrian 49229970Sadrian#define WTAPIOCTLCRT _IOW('W', 1, int) 50229970Sadrian#define WTAPIOCTLDEL _IOW('W', 2, int) 51229970Sadrian 52229970Sadrianstruct wtap_stats { 53229970Sadrian u_int32_t ast_watchdog; /* device reset by watchdog */ 54229970Sadrian u_int32_t ast_hardware; /* fatal hardware error interrupts */ 55229970Sadrian u_int32_t ast_bmiss; /* beacon miss interrupts */ 56229970Sadrian u_int32_t ast_bmiss_phantom;/* beacon miss interrupts */ 57229970Sadrian u_int32_t ast_bstuck; /* beacon stuck interrupts */ 58229970Sadrian u_int32_t ast_rxorn; /* rx overrun interrupts */ 59229970Sadrian u_int32_t ast_rxeol; /* rx eol interrupts */ 60229970Sadrian u_int32_t ast_txurn; /* tx underrun interrupts */ 61229970Sadrian u_int32_t ast_mib; /* mib interrupts */ 62229970Sadrian u_int32_t ast_intrcoal; /* interrupts coalesced */ 63229970Sadrian u_int32_t ast_tx_packets; /* packet sent on the interface */ 64229970Sadrian u_int32_t ast_tx_mgmt; /* management frames transmitted */ 65229970Sadrian u_int32_t ast_tx_discard; /* frames discarded prior to assoc */ 66229970Sadrian u_int32_t ast_tx_qstop; /* output stopped 'cuz no buffer */ 67229970Sadrian u_int32_t ast_tx_encap; /* tx encapsulation failed */ 68229970Sadrian u_int32_t ast_tx_nonode; /* tx failed 'cuz no node */ 69229970Sadrian u_int32_t ast_tx_nombuf; /* tx failed 'cuz no mbuf */ 70229970Sadrian u_int32_t ast_tx_nomcl; /* tx failed 'cuz no cluster */ 71229970Sadrian u_int32_t ast_tx_linear; /* tx linearized to cluster */ 72229970Sadrian u_int32_t ast_tx_nodata; /* tx discarded empty frame */ 73229970Sadrian u_int32_t ast_tx_busdma; /* tx failed for dma resrcs */ 74229970Sadrian u_int32_t ast_tx_xretries;/* tx failed 'cuz too many retries */ 75229970Sadrian u_int32_t ast_tx_fifoerr; /* tx failed 'cuz FIFO underrun */ 76229970Sadrian u_int32_t ast_tx_filtered;/* tx failed 'cuz xmit filtered */ 77229970Sadrian u_int32_t ast_tx_shortretry;/* tx on-chip retries (short) */ 78229970Sadrian u_int32_t ast_tx_longretry;/* tx on-chip retries (long) */ 79229970Sadrian u_int32_t ast_tx_badrate; /* tx failed 'cuz bogus xmit rate */ 80229970Sadrian u_int32_t ast_tx_noack; /* tx frames with no ack marked */ 81229970Sadrian u_int32_t ast_tx_rts; /* tx frames with rts enabled */ 82229970Sadrian u_int32_t ast_tx_cts; /* tx frames with cts enabled */ 83229970Sadrian u_int32_t ast_tx_shortpre;/* tx frames with short preamble */ 84229970Sadrian u_int32_t ast_tx_altrate; /* tx frames with alternate rate */ 85229970Sadrian u_int32_t ast_tx_protect; /* tx frames with protection */ 86229970Sadrian u_int32_t ast_tx_ctsburst;/* tx frames with cts and bursting */ 87229970Sadrian u_int32_t ast_tx_ctsext; /* tx frames with cts extension */ 88229970Sadrian u_int32_t ast_rx_nombuf; /* rx setup failed 'cuz no mbuf */ 89229970Sadrian u_int32_t ast_rx_busdma; /* rx setup failed for dma resrcs */ 90229970Sadrian u_int32_t ast_rx_orn; /* rx failed 'cuz of desc overrun */ 91229970Sadrian u_int32_t ast_rx_crcerr; /* rx failed 'cuz of bad CRC */ 92229970Sadrian u_int32_t ast_rx_fifoerr; /* rx failed 'cuz of FIFO overrun */ 93229970Sadrian u_int32_t ast_rx_badcrypt;/* rx failed 'cuz decryption */ 94229970Sadrian u_int32_t ast_rx_badmic; /* rx failed 'cuz MIC failure */ 95229970Sadrian u_int32_t ast_rx_phyerr; /* rx failed 'cuz of PHY err */ 96229970Sadrian u_int32_t ast_rx_phy[32]; /* rx PHY error per-code counts */ 97229970Sadrian u_int32_t ast_rx_tooshort;/* rx discarded 'cuz frame too short */ 98229970Sadrian u_int32_t ast_rx_toobig; /* rx discarded 'cuz frame too large */ 99229970Sadrian u_int32_t ast_rx_packets; /* packet recv on the interface */ 100229970Sadrian u_int32_t ast_rx_mgt; /* management frames received */ 101229970Sadrian u_int32_t ast_rx_ctl; /* rx discarded 'cuz ctl frame */ 102229970Sadrian int8_t ast_tx_rssi; /* tx rssi of last ack */ 103229970Sadrian int8_t ast_rx_rssi; /* rx rssi from histogram */ 104229970Sadrian u_int8_t ast_tx_rate; /* IEEE rate of last unicast tx */ 105229970Sadrian u_int32_t ast_be_xmit; /* beacons transmitted */ 106229970Sadrian u_int32_t ast_be_nombuf; /* beacon setup failed 'cuz no mbuf */ 107229970Sadrian u_int32_t ast_per_cal; /* periodic calibration calls */ 108229970Sadrian u_int32_t ast_per_calfail;/* periodic calibration failed */ 109229970Sadrian u_int32_t ast_per_rfgain; /* periodic calibration rfgain reset */ 110229970Sadrian u_int32_t ast_rate_calls; /* rate control checks */ 111229970Sadrian u_int32_t ast_rate_raise; /* rate control raised xmit rate */ 112229970Sadrian u_int32_t ast_rate_drop; /* rate control dropped xmit rate */ 113229970Sadrian u_int32_t ast_ant_defswitch;/* rx/default antenna switches */ 114229970Sadrian u_int32_t ast_ant_txswitch;/* tx antenna switches */ 115229970Sadrian u_int32_t ast_ant_rx[8]; /* rx frames with antenna */ 116229970Sadrian u_int32_t ast_ant_tx[8]; /* tx frames with antenna */ 117229970Sadrian u_int32_t ast_cabq_xmit; /* cabq frames transmitted */ 118229970Sadrian u_int32_t ast_cabq_busy; /* cabq found busy */ 119229970Sadrian u_int32_t ast_tx_raw; /* tx frames through raw api */ 120229970Sadrian u_int32_t ast_ff_txok; /* fast frames tx'd successfully */ 121229970Sadrian u_int32_t ast_ff_txerr; /* fast frames tx'd w/ error */ 122229970Sadrian u_int32_t ast_ff_rx; /* fast frames rx'd */ 123229970Sadrian u_int32_t ast_ff_flush; /* fast frames flushed from staging q */ 124229970Sadrian u_int32_t ast_tx_qfull; /* tx dropped 'cuz of queue limit */ 125229970Sadrian int8_t ast_rx_noise; /* rx noise floor */ 126229970Sadrian u_int32_t ast_tx_nobuf; /* tx dropped 'cuz no ath buffer */ 127229970Sadrian u_int32_t ast_tdma_update;/* TDMA slot timing updates */ 128229970Sadrian u_int32_t ast_tdma_timers;/* TDMA slot update set beacon timers */ 129229970Sadrian u_int32_t ast_tdma_tsf; /* TDMA slot update set TSF */ 130229970Sadrian u_int16_t ast_tdma_tsfadjp;/* TDMA slot adjust+ (usec, smoothed)*/ 131229970Sadrian u_int16_t ast_tdma_tsfadjm;/* TDMA slot adjust- (usec, smoothed)*/ 132229970Sadrian u_int32_t ast_tdma_ack; /* TDMA tx failed 'cuz ACK required */ 133229970Sadrian u_int32_t ast_tx_raw_fail;/* raw tx failed 'cuz h/w down */ 134229970Sadrian u_int32_t ast_tx_nofrag; /* tx dropped 'cuz no ath frag buffer */ 135229970Sadrian u_int32_t ast_be_missed; /* missed beacons */ 136229970Sadrian u_int32_t ast_pad[13]; 137229970Sadrian}; 138229970Sadrian 139229970Sadrian/* 140229970Sadrian * Radio capture format. 141229970Sadrian */ 142229970Sadrian#define WTAP_RX_RADIOTAP_PRESENT ( \ 143229970Sadrian 0) 144229970Sadrian 145229970Sadrianstruct wtap_rx_radiotap_header { 146229970Sadrian struct ieee80211_radiotap_header wr_ihdr; 147229970Sadrian#if 0 148229970Sadrian u_int64_t wr_tsf; 149229970Sadrian u_int8_t wr_flags; 150229970Sadrian u_int8_t wr_rate; 151229970Sadrian int8_t wr_antsignal; 152229970Sadrian int8_t wr_antnoise; 153229970Sadrian u_int8_t wr_antenna; 154229970Sadrian u_int8_t wr_pad[3]; 155229970Sadrian u_int32_t wr_chan_flags; 156229970Sadrian u_int16_t wr_chan_freq; 157229970Sadrian u_int8_t wr_chan_ieee; 158229970Sadrian int8_t wr_chan_maxpow; 159229970Sadrian#endif 160345636Savos} __packed __aligned(8); 161229970Sadrian 162229970Sadrian#define WTAP_TX_RADIOTAP_PRESENT ( \ 163229970Sadrian 0) 164229970Sadrian 165229970Sadrianstruct wtap_tx_radiotap_header { 166229970Sadrian struct ieee80211_radiotap_header wt_ihdr; 167229970Sadrian#if 0 168229970Sadrian u_int8_t wt_flags; 169229970Sadrian u_int8_t wt_rate; 170229970Sadrian u_int8_t wt_txpower; 171229970Sadrian u_int8_t wt_antenna; 172229970Sadrian u_int32_t wt_chan_flags; 173229970Sadrian u_int16_t wt_chan_freq; 174229970Sadrian u_int8_t wt_chan_ieee; 175229970Sadrian int8_t wt_chan_maxpow; 176229970Sadrian#endif 177229970Sadrian} __packed; 178229970Sadrian 179229970Sadrian#endif 180