2007-11-27 21:49:29 +01:00
/*
2009-11-08 16:39:55 +01:00
Copyright ( C ) 2004 - 2009 Ivo van Doorn < IvDoorn @ gmail . com >
2007-11-27 21:49:29 +01:00
< http : //rt2x00.serialmonkey.com>
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2013-12-06 03:32:11 -08:00
along with this program ; if not , see < http : //www.gnu.org/licenses/>.
2007-11-27 21:49:29 +01:00
*/
/*
Module : rt2x00dump
2010-05-13 13:16:36 +02:00
Abstract :
Data structures for the rt2x00debug & userspace .
The declarations in this file can be used by both rt2x00
and userspace and therefore should be kept together in
this file .
2007-11-27 21:49:29 +01:00
*/
# ifndef RT2X00DUMP_H
# define RT2X00DUMP_H
/**
* DOC : Introduction
*
* This header is intended to be exported to userspace ,
* to make the structures and enumerations available to userspace
* applications . This means that all data types should be exportable .
*
* When rt2x00 is compiled with debugfs support enabled ,
* it is possible to capture all data coming in and out of the device
* by reading the frame dump file . This file can have only a single reader .
* The following frames will be reported :
* - All incoming frames ( rx )
* - All outgoing frames ( tx , including beacon and atim )
* - All completed frames ( txdone including atim )
*
* The data is send to the file using the following format :
*
* [ rt2x00dump header ] [ hardware descriptor ] [ ieee802 .11 frame ]
*
* rt2x00dump header : The description of the dumped frame , as well as
2011-03-30 22:57:33 -03:00
* additional information useful for debugging . See & rt2x00dump_hdr .
2007-11-27 21:49:29 +01:00
* hardware descriptor : Descriptor that was used to receive or transmit
* the frame .
* ieee802 .11 frame : The actual frame that was received or transmitted .
*/
/**
* enum rt2x00_dump_type - Frame type
*
* These values are used for the @ type member of & rt2x00dump_hdr .
* @ DUMP_FRAME_RXDONE : This frame has been received by the hardware .
* @ DUMP_FRAME_TX : This frame is queued for transmission to the hardware .
* @ DUMP_FRAME_TXDONE : This frame indicates the device has handled
* the tx event which has either succeeded or failed . A frame
* with this type should also have been reported with as a
* % DUMP_FRAME_TX frame .
2010-05-11 23:51:41 +02:00
* @ DUMP_FRAME_BEACON : This beacon frame is queued for transmission to the
* hardware .
2007-11-27 21:49:29 +01:00
*/
enum rt2x00_dump_type {
DUMP_FRAME_RXDONE = 1 ,
DUMP_FRAME_TX = 2 ,
DUMP_FRAME_TXDONE = 3 ,
2010-05-11 23:51:41 +02:00
DUMP_FRAME_BEACON = 4 ,
2007-11-27 21:49:29 +01:00
} ;
/**
* struct rt2x00dump_hdr - Dump frame header
*
* Each frame dumped to the debugfs file starts with this header
* attached . This header contains the description of the actual
* frame which was dumped .
*
* New fields inside the structure must be appended to the end of
* the structure . This way userspace tools compiled for earlier
* header versions can still correctly handle the frame dump
* ( although they will not handle all data passed to them in the dump ) .
*
* @ version : Header version should always be set to % DUMP_HEADER_VERSION .
* This field must be checked by userspace to determine if it can
* handle this frame .
* @ header_length : The length of the & rt2x00dump_hdr structure . This is
* used for compatibility reasons so userspace can easily determine
* the location of the next field in the dump .
* @ desc_length : The length of the device descriptor .
* @ data_length : The length of the frame data ( including the ieee802 .11 header .
* @ chip_rt : RT chipset
* @ chip_rf : RF chipset
* @ chip_rev : Chipset revision
* @ type : The frame type ( & rt2x00_dump_type )
2008-02-05 16:42:23 -05:00
* @ queue_index : The index number of the data queue .
* @ entry_index : The index number of the entry inside the data queue .
2007-11-27 21:49:29 +01:00
* @ timestamp_sec : Timestamp - seconds
* @ timestamp_usec : Timestamp - microseconds
*/
struct rt2x00dump_hdr {
__le32 version ;
2017-11-06 15:03:59 +01:00
# define DUMP_HEADER_VERSION 3
2007-11-27 21:49:29 +01:00
__le32 header_length ;
__le32 desc_length ;
__le32 data_length ;
__le16 chip_rt ;
__le16 chip_rf ;
2010-07-20 14:21:48 -04:00
__le16 chip_rev ;
2007-11-27 21:49:29 +01:00
__le16 type ;
2008-02-05 16:42:23 -05:00
__u8 queue_index ;
2007-11-27 21:49:29 +01:00
__u8 entry_index ;
__le32 timestamp_sec ;
__le32 timestamp_usec ;
} ;
# endif /* RT2X00DUMP_H */