Home | History | Annotate | Line # | Download | only in usb
      1  1.9     gson /*	$NetBSD: if_runvar.h,v 1.9 2020/06/06 13:53:43 gson Exp $	*/
      2  1.1   nonaka /*	$OpenBSD: if_runvar.h,v 1.8 2010/02/08 18:46:47 damien Exp $	*/
      3  1.1   nonaka 
      4  1.1   nonaka /*-
      5  1.1   nonaka  * Copyright (c) 2008,2009 Damien Bergamini <damien.bergamini (at) free.fr>
      6  1.1   nonaka  *
      7  1.1   nonaka  * Permission to use, copy, modify, and distribute this software for any
      8  1.1   nonaka  * purpose with or without fee is hereby granted, provided that the above
      9  1.1   nonaka  * copyright notice and this permission notice appear in all copies.
     10  1.1   nonaka  *
     11  1.1   nonaka  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     12  1.1   nonaka  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     13  1.1   nonaka  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     14  1.1   nonaka  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     15  1.1   nonaka  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     16  1.1   nonaka  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     17  1.1   nonaka  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     18  1.1   nonaka  */
     19  1.1   nonaka 
     20  1.1   nonaka #define RUN_MAX_RXSZ			\
     21  1.1   nonaka 	4096
     22  1.1   nonaka #if 0
     23  1.2    skrll 	(sizeof(uint32_t) +		\
     24  1.2    skrll 	 sizeof(struct rt2860_rxwi) +	\
     25  1.2    skrll 	 sizeof(uint16_t) +		\
     26  1.1   nonaka 	 MCLBYTES +			\
     27  1.2    skrll 	 sizeof(struct rt2870_rxd))
     28  1.1   nonaka #endif
     29  1.1   nonaka /* NB: "11" is the maximum number of padding bytes needed for Tx */
     30  1.1   nonaka #define RUN_MAX_TXSZ			\
     31  1.2    skrll 	(sizeof(struct rt2870_txd) +	\
     32  1.6  mlelstv 	 sizeof(struct rt2860_txwi) +	\
     33  1.1   nonaka 	 MCLBYTES + 11)
     34  1.1   nonaka 
     35  1.1   nonaka #define RUN_TX_TIMEOUT	5000	/* ms */
     36  1.1   nonaka 
     37  1.1   nonaka #define RUN_RX_RING_COUNT	1
     38  1.1   nonaka #define RUN_TX_RING_COUNT	8
     39  1.1   nonaka 
     40  1.6  mlelstv #define RT2870_WCID_MAX		64
     41  1.1   nonaka #define RUN_AID2WCID(aid)	((aid) & 0xff)
     42  1.1   nonaka 
     43  1.1   nonaka struct run_rx_radiotap_header {
     44  1.1   nonaka 	struct ieee80211_radiotap_header wr_ihdr;
     45  1.1   nonaka 	uint8_t		wr_flags;
     46  1.1   nonaka 	uint8_t		wr_rate;
     47  1.1   nonaka 	uint16_t	wr_chan_freq;
     48  1.1   nonaka 	uint16_t	wr_chan_flags;
     49  1.1   nonaka 	uint8_t		wr_dbm_antsignal;
     50  1.1   nonaka 	uint8_t		wr_antenna;
     51  1.1   nonaka 	uint8_t		wr_antsignal;
     52  1.5      mrg };
     53  1.1   nonaka 
     54  1.1   nonaka #define RUN_RX_RADIOTAP_PRESENT				\
     55  1.1   nonaka 	(1 << IEEE80211_RADIOTAP_FLAGS |		\
     56  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_RATE |			\
     57  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_CHANNEL |		\
     58  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL |	\
     59  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_ANTENNA |		\
     60  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)
     61  1.1   nonaka 
     62  1.1   nonaka struct run_tx_radiotap_header {
     63  1.1   nonaka 	struct ieee80211_radiotap_header wt_ihdr;
     64  1.1   nonaka 	uint8_t		wt_flags;
     65  1.1   nonaka 	uint8_t		wt_rate;
     66  1.1   nonaka 	uint16_t	wt_chan_freq;
     67  1.1   nonaka 	uint16_t	wt_chan_flags;
     68  1.1   nonaka 	uint8_t		wt_hwqueue;
     69  1.5      mrg };
     70  1.1   nonaka 
     71  1.1   nonaka #define RUN_TX_RADIOTAP_PRESENT				\
     72  1.1   nonaka 	(1 << IEEE80211_RADIOTAP_FLAGS |		\
     73  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_RATE |			\
     74  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_CHANNEL/* |		\
     75  1.1   nonaka 	 1 << IEEE80211_RADIOTAP_HWQUEUE*/)
     76  1.1   nonaka 
     77  1.1   nonaka struct run_softc;
     78  1.1   nonaka 
     79  1.1   nonaka struct run_tx_data {
     80  1.1   nonaka 	struct run_softc	*sc;
     81  1.2    skrll 	struct usbd_xfer	*xfer;
     82  1.1   nonaka 	uint8_t			*buf;
     83  1.1   nonaka 	uint8_t			qid;
     84  1.1   nonaka };
     85  1.1   nonaka 
     86  1.1   nonaka struct run_rx_data {
     87  1.1   nonaka 	struct run_softc	*sc;
     88  1.2    skrll 	struct usbd_xfer	*xfer;
     89  1.1   nonaka 	uint8_t			*buf;
     90  1.1   nonaka };
     91  1.1   nonaka 
     92  1.1   nonaka struct run_tx_ring {
     93  1.1   nonaka 	struct run_tx_data	data[RUN_TX_RING_COUNT];
     94  1.2    skrll 	struct usbd_pipe *	pipeh;
     95  1.1   nonaka 	int			cur;
     96  1.7  mlelstv 	volatile unsigned	queued;
     97  1.1   nonaka 	uint8_t			pipe_no;
     98  1.1   nonaka };
     99  1.1   nonaka 
    100  1.1   nonaka struct run_rx_ring {
    101  1.1   nonaka 	struct run_rx_data	data[RUN_RX_RING_COUNT];
    102  1.2    skrll 	struct usbd_pipe *	pipeh;
    103  1.1   nonaka 	uint8_t			pipe_no;
    104  1.1   nonaka };
    105  1.1   nonaka 
    106  1.1   nonaka struct run_host_cmd {
    107  1.1   nonaka 	void	(*cb)(struct run_softc *, void *);
    108  1.1   nonaka 	uint8_t	data[256];
    109  1.1   nonaka };
    110  1.1   nonaka 
    111  1.1   nonaka struct run_cmd_newstate {
    112  1.1   nonaka 	enum ieee80211_state	state;
    113  1.1   nonaka 	int			arg;
    114  1.1   nonaka };
    115  1.1   nonaka 
    116  1.1   nonaka struct run_cmd_key {
    117  1.1   nonaka 	struct ieee80211_key	key;
    118  1.1   nonaka 	uint16_t		associd;
    119  1.1   nonaka };
    120  1.1   nonaka 
    121  1.1   nonaka #define RUN_HOST_CMD_RING_COUNT	32
    122  1.1   nonaka struct run_host_cmd_ring {
    123  1.1   nonaka 	struct run_host_cmd	cmd[RUN_HOST_CMD_RING_COUNT];
    124  1.1   nonaka 	int			cur;
    125  1.1   nonaka 	int			next;
    126  1.1   nonaka 	int			queued;
    127  1.1   nonaka };
    128  1.1   nonaka 
    129  1.1   nonaka struct run_node {
    130  1.1   nonaka 	struct ieee80211_node	ni;
    131  1.1   nonaka 	uint8_t			ridx[IEEE80211_RATE_MAXSIZE];
    132  1.1   nonaka 	uint8_t			ctl_ridx[IEEE80211_RATE_MAXSIZE];
    133  1.1   nonaka };
    134  1.1   nonaka 
    135  1.4    skrll #define	RUN_MAXEPOUT	4
    136  1.4    skrll 
    137  1.1   nonaka struct run_softc {
    138  1.1   nonaka 	device_t			sc_dev;
    139  1.1   nonaka 	struct ethercom			sc_ec;
    140  1.1   nonaka #define sc_if	sc_ec.ec_if
    141  1.1   nonaka 	struct ieee80211com		sc_ic;
    142  1.1   nonaka 	int				(*sc_newstate)(struct ieee80211com *,
    143  1.1   nonaka 					    enum ieee80211_state, int);
    144  1.1   nonaka 	int				(*sc_srom_read)(struct run_softc *,
    145  1.1   nonaka 					    uint16_t, uint16_t *);
    146  1.1   nonaka 
    147  1.8  thorpej 	kmutex_t			sc_media_mtx;	/* XXX */
    148  1.8  thorpej 
    149  1.2    skrll 	struct usbd_device *		sc_udev;
    150  1.2    skrll 	struct usbd_interface *		sc_iface;
    151  1.1   nonaka 
    152  1.1   nonaka 	uint16_t			mac_ver;
    153  1.1   nonaka 	uint16_t			mac_rev;
    154  1.3  mlelstv 	uint16_t			rf_rev;
    155  1.1   nonaka 	uint8_t				freq;
    156  1.1   nonaka 	uint8_t				ntxchains;
    157  1.1   nonaka 	uint8_t				nrxchains;
    158  1.1   nonaka 	int				fixed_ridx;
    159  1.1   nonaka 
    160  1.1   nonaka 	uint8_t				bbp25;
    161  1.1   nonaka 	uint8_t				bbp26;
    162  1.1   nonaka 	uint8_t				rf24_20mhz;
    163  1.1   nonaka 	uint8_t				rf24_40mhz;
    164  1.1   nonaka 	uint8_t				patch_dac;
    165  1.1   nonaka 	uint8_t				rfswitch;
    166  1.1   nonaka 	uint8_t				ext_2ghz_lna;
    167  1.1   nonaka 	uint8_t				ext_5ghz_lna;
    168  1.1   nonaka 	uint8_t				calib_2ghz;
    169  1.1   nonaka 	uint8_t				calib_5ghz;
    170  1.1   nonaka 	uint8_t				txmixgain_2ghz;
    171  1.1   nonaka 	uint8_t				txmixgain_5ghz;
    172  1.1   nonaka 	int8_t				txpow1[54];
    173  1.1   nonaka 	int8_t				txpow2[54];
    174  1.3  mlelstv 	int8_t				txpow3[54];
    175  1.1   nonaka 	int8_t				rssi_2ghz[3];
    176  1.1   nonaka 	int8_t				rssi_5ghz[3];
    177  1.1   nonaka 	uint8_t				lna[4];
    178  1.1   nonaka 
    179  1.1   nonaka 	struct {
    180  1.1   nonaka 		uint8_t	reg;
    181  1.1   nonaka 		uint8_t	val;
    182  1.1   nonaka 	}				bbp[10], rf[10];
    183  1.1   nonaka 	uint8_t				leds;
    184  1.1   nonaka 	uint16_t			led[3];
    185  1.1   nonaka 	uint32_t			txpow20mhz[5];
    186  1.1   nonaka 	uint32_t			txpow40mhz_2ghz[5];
    187  1.1   nonaka 	uint32_t			txpow40mhz_5ghz[5];
    188  1.1   nonaka 
    189  1.1   nonaka 	struct usb_task			sc_task;
    190  1.1   nonaka 
    191  1.1   nonaka 	struct ieee80211_amrr		amrr;
    192  1.1   nonaka 	struct ieee80211_amrr_node	amn;
    193  1.1   nonaka 
    194  1.1   nonaka 	callout_t			scan_to;
    195  1.1   nonaka 	callout_t			calib_to;
    196  1.1   nonaka 
    197  1.1   nonaka 	struct run_rx_ring		rxq;
    198  1.4    skrll 	struct run_tx_ring		txq[RUN_MAXEPOUT];
    199  1.1   nonaka 	struct run_host_cmd_ring	cmdq;
    200  1.1   nonaka 	uint8_t				qfullmsk;
    201  1.1   nonaka 	int				sc_tx_timer;
    202  1.1   nonaka 	struct ieee80211_beacon_offsets	sc_bo;
    203  1.1   nonaka 	int				sc_flags;
    204  1.9     gson #define RUN_FWLOADED		(1 << 0)
    205  1.9     gson #define RUN_DETACHING		(1 << 1)
    206  1.9     gson #define RUN_USE_BLOCK_WRITE	(1 << 2)
    207  1.1   nonaka 
    208  1.1   nonaka 	struct bpf_if *			sc_drvbpf;
    209  1.1   nonaka 
    210  1.1   nonaka 	union {
    211  1.1   nonaka 		struct run_rx_radiotap_header th;
    212  1.1   nonaka 		uint8_t	pad[64];
    213  1.1   nonaka 	}				sc_rxtapu;
    214  1.1   nonaka #define sc_rxtap	sc_rxtapu.th
    215  1.1   nonaka 	int				sc_rxtap_len;
    216  1.1   nonaka 
    217  1.1   nonaka 	union {
    218  1.1   nonaka 		struct run_tx_radiotap_header th;
    219  1.1   nonaka 		uint8_t	pad[64];
    220  1.1   nonaka 	}				sc_txtapu;
    221  1.1   nonaka #define sc_txtap	sc_txtapu.th
    222  1.1   nonaka 	int				sc_txtap_len;
    223  1.1   nonaka };
    224