40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf/*
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * Use is subject to license terms.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf/*
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * Copyright (c) 2005
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * Damien Bergamini <damien.bergamini@free.fr>
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf *
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * Permission to use, copy, modify, and distribute this software for any
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * purpose with or without fee is hereby granted, provided that the above
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * copyright notice and this permission notice appear in all copies.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf *
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#ifndef _URAL_VAR_H
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define _URAL_VAR_H
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#ifdef __cplusplus
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfextern "C" {
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#endif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_FLAG_RUNNING (1<<0)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_RCR_PROMISC (1<<0)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_RCR_MULTI (2<<0)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#ifndef DDI_NT_NET_WIFI
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define DDI_NT_NET_WIFI "ddi_network:wifi"
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#endif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf/*
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf * Bit flags in the ral_dbg_flags
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_MSG 0x000001
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_ERR 0x000002
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_USB 0x000004
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_TX 0x000008
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_RX 0x000010
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_IOCTL 0x000020
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_HW 0x000040
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_DBG_ALL 0x000fff
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_TX_LIST_COUNT 8
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_RX_LIST_COUNT 8
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfstruct ural_amrr {
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int txcnt;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int retrycnt;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int success;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int success_threshold;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int recovery;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf};
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azfstruct ural_softc {
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf struct ieee80211com sc_ic;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf dev_info_t *sc_dev;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf usb_client_dev_data_t *sc_udev; /* usb dev */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t asic_rev;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint8_t rf_rev;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf kmutex_t sc_genlock;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf usb_pipe_handle_t sc_rx_pipeh;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf usb_pipe_handle_t sc_tx_pipeh;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf enum ieee80211_state sc_state;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf struct ural_amrr amrr;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf kmutex_t tx_lock;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf kmutex_t rx_lock;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int tx_queued;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int rx_queued;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int sc_tx_timer;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf timeout_id_t sc_scan_id;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf timeout_id_t sc_amrr_id;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_need_sched;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_flags;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_rcr; /* RAL RCR */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int dwelltime;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint16_t sta[11];
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t rf_regs[4];
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint8_t txpow[14];
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#pragma pack(1)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf struct {
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint8_t val;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint8_t reg;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf } bbp_prom[16];
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#pragma pack()
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int led_mode;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int hw_radio;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int rx_ant;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int tx_ant;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int nb_ant;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf /* kstats */
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_tx_nobuf;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_rx_nobuf;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_tx_err;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_rx_err;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf uint32_t sc_tx_retries;
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf int (*sc_newstate)(struct ieee80211com *,
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf enum ieee80211_state, int);
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf};
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_IS_RUNNING(_sc) ((_sc)->sc_flags & RAL_FLAG_RUNNING)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_LOCK(sc) mutex_enter(&(sc)->sc_genlock)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define RAL_UNLOCK(sc) mutex_exit(&(sc)->sc_genlock)
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#ifdef __cplusplus
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf}
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#endif
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf
40db2e2b777b79f3dd0d6d9629593a07f86b9c0azf#endif /* _URAL_VAR_H */