Home | History | Annotate | Line # | Download | only in usb
if_runvar.h revision 1.2.2.1
      1  1.2.2.1  pgoyette /*	$NetBSD: if_runvar.h,v 1.2.2.1 2016/11/04 14:49:15 pgoyette 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.2     skrll 	 sizeof(struct rt2860_rxwi) +	\
     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.1    nonaka #define RT2870_WCID_MAX		253
     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.1    nonaka } __packed;
     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.1    nonaka } __packed;
     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.1    nonaka 	int			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.1    nonaka struct run_softc {
    136      1.1    nonaka 	device_t			sc_dev;
    137      1.1    nonaka 	struct ethercom			sc_ec;
    138      1.1    nonaka #define sc_if	sc_ec.ec_if
    139      1.1    nonaka 	struct ieee80211com		sc_ic;
    140      1.1    nonaka 	int				(*sc_newstate)(struct ieee80211com *,
    141      1.1    nonaka 					    enum ieee80211_state, int);
    142      1.1    nonaka 	int				(*sc_srom_read)(struct run_softc *,
    143      1.1    nonaka 					    uint16_t, uint16_t *);
    144      1.1    nonaka 
    145      1.2     skrll 	struct usbd_device *		sc_udev;
    146      1.2     skrll 	struct usbd_interface *		sc_iface;
    147      1.1    nonaka 
    148      1.1    nonaka 	uint16_t			mac_ver;
    149      1.1    nonaka 	uint16_t			mac_rev;
    150  1.2.2.1  pgoyette 	uint16_t			rf_rev;
    151      1.1    nonaka 	uint8_t				freq;
    152      1.1    nonaka 	uint8_t				ntxchains;
    153      1.1    nonaka 	uint8_t				nrxchains;
    154      1.1    nonaka 	int				fixed_ridx;
    155      1.1    nonaka 
    156      1.1    nonaka 	uint8_t				bbp25;
    157      1.1    nonaka 	uint8_t				bbp26;
    158      1.1    nonaka 	uint8_t				rf24_20mhz;
    159      1.1    nonaka 	uint8_t				rf24_40mhz;
    160      1.1    nonaka 	uint8_t				patch_dac;
    161      1.1    nonaka 	uint8_t				rfswitch;
    162      1.1    nonaka 	uint8_t				ext_2ghz_lna;
    163      1.1    nonaka 	uint8_t				ext_5ghz_lna;
    164      1.1    nonaka 	uint8_t				calib_2ghz;
    165      1.1    nonaka 	uint8_t				calib_5ghz;
    166      1.1    nonaka 	uint8_t				txmixgain_2ghz;
    167      1.1    nonaka 	uint8_t				txmixgain_5ghz;
    168      1.1    nonaka 	int8_t				txpow1[54];
    169      1.1    nonaka 	int8_t				txpow2[54];
    170  1.2.2.1  pgoyette 	int8_t				txpow3[54];
    171      1.1    nonaka 	int8_t				rssi_2ghz[3];
    172      1.1    nonaka 	int8_t				rssi_5ghz[3];
    173      1.1    nonaka 	uint8_t				lna[4];
    174      1.1    nonaka 
    175      1.1    nonaka 	struct {
    176      1.1    nonaka 		uint8_t	reg;
    177      1.1    nonaka 		uint8_t	val;
    178      1.1    nonaka 	}				bbp[10], rf[10];
    179      1.1    nonaka 	uint8_t				leds;
    180      1.1    nonaka 	uint16_t			led[3];
    181      1.1    nonaka 	uint32_t			txpow20mhz[5];
    182      1.1    nonaka 	uint32_t			txpow40mhz_2ghz[5];
    183      1.1    nonaka 	uint32_t			txpow40mhz_5ghz[5];
    184      1.1    nonaka 
    185      1.1    nonaka 	struct usb_task			sc_task;
    186      1.1    nonaka 
    187      1.1    nonaka 	struct ieee80211_amrr		amrr;
    188      1.1    nonaka 	struct ieee80211_amrr_node	amn;
    189      1.1    nonaka 
    190      1.1    nonaka 	callout_t			scan_to;
    191      1.1    nonaka 	callout_t			calib_to;
    192      1.1    nonaka 
    193      1.1    nonaka 	struct run_rx_ring		rxq;
    194      1.1    nonaka 	struct run_tx_ring		txq[4];
    195      1.1    nonaka 	struct run_host_cmd_ring	cmdq;
    196      1.1    nonaka 	uint8_t				qfullmsk;
    197      1.1    nonaka 	int				sc_tx_timer;
    198      1.1    nonaka 	struct ieee80211_beacon_offsets	sc_bo;
    199      1.1    nonaka 	int				sc_flags;
    200      1.1    nonaka #define RUN_FWLOADED	(1 << 0)
    201      1.1    nonaka #define RUN_DETACHING	(1 << 1)
    202      1.1    nonaka 
    203      1.1    nonaka 	struct bpf_if *			sc_drvbpf;
    204      1.1    nonaka 
    205      1.1    nonaka 	union {
    206      1.1    nonaka 		struct run_rx_radiotap_header th;
    207      1.1    nonaka 		uint8_t	pad[64];
    208      1.1    nonaka 	}				sc_rxtapu;
    209      1.1    nonaka #define sc_rxtap	sc_rxtapu.th
    210      1.1    nonaka 	int				sc_rxtap_len;
    211      1.1    nonaka 
    212      1.1    nonaka 	union {
    213      1.1    nonaka 		struct run_tx_radiotap_header th;
    214      1.1    nonaka 		uint8_t	pad[64];
    215      1.1    nonaka 	}				sc_txtapu;
    216      1.1    nonaka #define sc_txtap	sc_txtapu.th
    217      1.1    nonaka 	int				sc_txtap_len;
    218      1.1    nonaka };
    219