Home | History | Annotate | Line # | Download | only in usb
if_runvar.h revision 1.1.20.2
      1  1.1.20.2   skrll /*	$NetBSD: if_runvar.h,v 1.1.20.2 2015/09/29 11:38:28 skrll 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.1.20.2   skrll 	(sizeof(uint32_t) +		\
     24  1.1.20.2   skrll 	 sizeof(struct rt2860_rxwi) +	\
     25  1.1.20.2   skrll 	 sizeof(uint16_t) +		\
     26       1.1  nonaka 	 MCLBYTES +			\
     27  1.1.20.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.1.20.2   skrll 	(sizeof(struct rt2870_txd) +	\
     32  1.1.20.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.1.20.1   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.1.20.1   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.1.20.1   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.1.20.1   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.1.20.1   skrll 	struct usbd_device *		sc_udev;
    146  1.1.20.1   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.1  nonaka 	uint8_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.1  nonaka 	int8_t				rssi_2ghz[3];
    171       1.1  nonaka 	int8_t				rssi_5ghz[3];
    172       1.1  nonaka 	uint8_t				lna[4];
    173       1.1  nonaka 
    174       1.1  nonaka 	struct {
    175       1.1  nonaka 		uint8_t	reg;
    176       1.1  nonaka 		uint8_t	val;
    177       1.1  nonaka 	}				bbp[10], rf[10];
    178       1.1  nonaka 	uint8_t				leds;
    179       1.1  nonaka 	uint16_t			led[3];
    180       1.1  nonaka 	uint32_t			txpow20mhz[5];
    181       1.1  nonaka 	uint32_t			txpow40mhz_2ghz[5];
    182       1.1  nonaka 	uint32_t			txpow40mhz_5ghz[5];
    183       1.1  nonaka 
    184       1.1  nonaka 	struct usb_task			sc_task;
    185       1.1  nonaka 
    186       1.1  nonaka 	struct ieee80211_amrr		amrr;
    187       1.1  nonaka 	struct ieee80211_amrr_node	amn;
    188       1.1  nonaka 
    189       1.1  nonaka 	callout_t			scan_to;
    190       1.1  nonaka 	callout_t			calib_to;
    191       1.1  nonaka 
    192       1.1  nonaka 	struct run_rx_ring		rxq;
    193       1.1  nonaka 	struct run_tx_ring		txq[4];
    194       1.1  nonaka 	struct run_host_cmd_ring	cmdq;
    195       1.1  nonaka 	uint8_t				qfullmsk;
    196       1.1  nonaka 	int				sc_tx_timer;
    197       1.1  nonaka 	struct ieee80211_beacon_offsets	sc_bo;
    198       1.1  nonaka 	int				sc_flags;
    199       1.1  nonaka #define RUN_FWLOADED	(1 << 0)
    200       1.1  nonaka #define RUN_DETACHING	(1 << 1)
    201       1.1  nonaka 
    202       1.1  nonaka 	struct bpf_if *			sc_drvbpf;
    203       1.1  nonaka 
    204       1.1  nonaka 	union {
    205       1.1  nonaka 		struct run_rx_radiotap_header th;
    206       1.1  nonaka 		uint8_t	pad[64];
    207       1.1  nonaka 	}				sc_rxtapu;
    208       1.1  nonaka #define sc_rxtap	sc_rxtapu.th
    209       1.1  nonaka 	int				sc_rxtap_len;
    210       1.1  nonaka 
    211       1.1  nonaka 	union {
    212       1.1  nonaka 		struct run_tx_radiotap_header th;
    213       1.1  nonaka 		uint8_t	pad[64];
    214       1.1  nonaka 	}				sc_txtapu;
    215       1.1  nonaka #define sc_txtap	sc_txtapu.th
    216       1.1  nonaka 	int				sc_txtap_len;
    217       1.1  nonaka };
    218