1*56f9a274Sfei feng - Sun Microsystems - Beijing China /* 2*56f9a274Sfei feng - Sun Microsystems - Beijing China * 3*56f9a274Sfei feng - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 4*56f9a274Sfei feng - Sun Microsystems - Beijing China * Use is subject to license terms. 5*56f9a274Sfei feng - Sun Microsystems - Beijing China */ 6*56f9a274Sfei feng - Sun Microsystems - Beijing China 7*56f9a274Sfei feng - Sun Microsystems - Beijing China /* 8*56f9a274Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2006 9*56f9a274Sfei feng - Sun Microsystems - Beijing China * Damien Bergamini <damien.bergamini@free.fr> 10*56f9a274Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2006 Sam Leffler, Errno Consulting 11*56f9a274Sfei feng - Sun Microsystems - Beijing China * Copyright (c) 2008-2009 Weongyo Jeong <weongyo@freebsd.org> 12*56f9a274Sfei feng - Sun Microsystems - Beijing China * 13*56f9a274Sfei feng - Sun Microsystems - Beijing China * Permission to use, copy, modify, and distribute this software for any 14*56f9a274Sfei feng - Sun Microsystems - Beijing China * purpose with or without fee is hereby granted, provided that the above 15*56f9a274Sfei feng - Sun Microsystems - Beijing China * copyright notice and this permission notice appear in all copies. 16*56f9a274Sfei feng - Sun Microsystems - Beijing China * 17*56f9a274Sfei feng - Sun Microsystems - Beijing China * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 18*56f9a274Sfei feng - Sun Microsystems - Beijing China * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 19*56f9a274Sfei feng - Sun Microsystems - Beijing China * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 20*56f9a274Sfei feng - Sun Microsystems - Beijing China * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 21*56f9a274Sfei feng - Sun Microsystems - Beijing China * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 22*56f9a274Sfei feng - Sun Microsystems - Beijing China * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 23*56f9a274Sfei feng - Sun Microsystems - Beijing China * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 24*56f9a274Sfei feng - Sun Microsystems - Beijing China */ 25*56f9a274Sfei feng - Sun Microsystems - Beijing China 26*56f9a274Sfei feng - Sun Microsystems - Beijing China 27*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifndef _UATH_VAR_H 28*56f9a274Sfei feng - Sun Microsystems - Beijing China #define _UATH_VAR_H 29*56f9a274Sfei feng - Sun Microsystems - Beijing China 30*56f9a274Sfei feng - Sun Microsystems - Beijing China #include <sys/queue.h> 31*56f9a274Sfei feng - Sun Microsystems - Beijing China 32*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 33*56f9a274Sfei feng - Sun Microsystems - Beijing China extern "C" { 34*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif 35*56f9a274Sfei feng - Sun Microsystems - Beijing China 36*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_ID_BSS 2 /* Connection ID */ 37*56f9a274Sfei feng - Sun Microsystems - Beijing China 38*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_RX_DATA_LIST_COUNT 1 /* 128 */ 39*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_TX_DATA_LIST_COUNT 8 /* 16 */ 40*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CMD_LIST_COUNT 8 /* 60 */ 41*56f9a274Sfei feng - Sun Microsystems - Beijing China 42*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_DATA_TIMEOUT 10000 43*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CMD_TIMEOUT 1000 44*56f9a274Sfei feng - Sun Microsystems - Beijing China 45*56f9a274Sfei feng - Sun Microsystems - Beijing China /* 46*56f9a274Sfei feng - Sun Microsystems - Beijing China * Useful combinations of channel characteristics from net80211. 47*56f9a274Sfei feng - Sun Microsystems - Beijing China */ 48*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CHAN_A \ 49*56f9a274Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) 50*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CHAN_B \ 51*56f9a274Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) 52*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CHAN_PUREG \ 53*56f9a274Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) 54*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CHAN_G \ 55*56f9a274Sfei feng - Sun Microsystems - Beijing China (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) 56*56f9a274Sfei feng - Sun Microsystems - Beijing China 57*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_A(_c) \ 58*56f9a274Sfei feng - Sun Microsystems - Beijing China (((_c)->ich_flags & UATH_CHAN_A) == UATH_CHAN_A) 59*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_B(_c) \ 60*56f9a274Sfei feng - Sun Microsystems - Beijing China (((_c)->ich_flags & UATH_CHAN_B) == UATH_CHAN_B) 61*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_PUREG(_c) \ 62*56f9a274Sfei feng - Sun Microsystems - Beijing China (((_c)->ich_flags & UATH_CHAN_PUREG) == UATH_CHAN_PUREG) 63*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_G(_c) \ 64*56f9a274Sfei feng - Sun Microsystems - Beijing China (((_c)->ich_flags & UATH_CHAN_G) == UATH_CHAN_G) 65*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_ANYG(_c) \ 66*56f9a274Sfei feng - Sun Microsystems - Beijing China (UATH_IS_CHAN_PUREG(_c) || UATH_IS_CHAN_G(_c)) 67*56f9a274Sfei feng - Sun Microsystems - Beijing China 68*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_OFDM(_c) \ 69*56f9a274Sfei feng - Sun Microsystems - Beijing China ((_c)->ich_flags & IEEE80211_CHAN_OFDM) 70*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_CHAN_CCK(_c) \ 71*56f9a274Sfei feng - Sun Microsystems - Beijing China ((_c)->ich_flags & IEEE80211_CHAN_CCK) 72*56f9a274Sfei feng - Sun Microsystems - Beijing China 73*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_NODE_QOS 0x0002 /* QoS enabled */ 74*56f9a274Sfei feng - Sun Microsystems - Beijing China 75*56f9a274Sfei feng - Sun Microsystems - Beijing China 76*56f9a274Sfei feng - Sun Microsystems - Beijing China /* flags for sending firmware commands */ 77*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CMD_FLAG_ASYNC (1 << 0) 78*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CMD_FLAG_READ (1 << 1) 79*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_CMD_FLAG_MAGIC (1 << 2) 80*56f9a274Sfei feng - Sun Microsystems - Beijing China 81*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd { 82*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_softc *sc; 83*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t flags; 84*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t msgid; 85*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t *buf; 86*56f9a274Sfei feng - Sun Microsystems - Beijing China uint16_t buflen; 87*56f9a274Sfei feng - Sun Microsystems - Beijing China void *odata; /* NB: tx only */ 88*56f9a274Sfei feng - Sun Microsystems - Beijing China int olen; /* space in odata */ 89*56f9a274Sfei feng - Sun Microsystems - Beijing China STAILQ_ENTRY(uath_cmd) next; 90*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 91*56f9a274Sfei feng - Sun Microsystems - Beijing China typedef STAILQ_HEAD(, uath_cmd) uath_cmdhead; 92*56f9a274Sfei feng - Sun Microsystems - Beijing China 93*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_data { 94*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_softc *sc; 95*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t *buf; 96*56f9a274Sfei feng - Sun Microsystems - Beijing China uint16_t buflen; 97*56f9a274Sfei feng - Sun Microsystems - Beijing China struct ieee80211_node *ni; /* NB: tx only */ 98*56f9a274Sfei feng - Sun Microsystems - Beijing China STAILQ_ENTRY(uath_data) next; 99*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 100*56f9a274Sfei feng - Sun Microsystems - Beijing China typedef STAILQ_HEAD(, uath_data) uath_datahead; 101*56f9a274Sfei feng - Sun Microsystems - Beijing China 102*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd_lock { 103*56f9a274Sfei feng - Sun Microsystems - Beijing China boolean_t done; 104*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t mutex; 105*56f9a274Sfei feng - Sun Microsystems - Beijing China kcondvar_t cv; 106*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 107*56f9a274Sfei feng - Sun Microsystems - Beijing China 108*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_wme_settings { 109*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t aifsn; 110*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t logcwmin; 111*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t logcwmax; 112*56f9a274Sfei feng - Sun Microsystems - Beijing China uint16_t txop; 113*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_TXOP_TO_US(txop) ((txop) << 5) 114*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t acm; 115*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 116*56f9a274Sfei feng - Sun Microsystems - Beijing China 117*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_devcap { 118*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t targetVersion; 119*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t targetRevision; 120*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t macVersion; 121*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t macRevision; 122*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t phyRevision; 123*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t analog5GhzRevision; 124*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t analog2GhzRevision; 125*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t regDomain; 126*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t regCapBits; 127*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t countryCode; 128*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t keyCacheSize; 129*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t numTxQueues; 130*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t connectionIdMax; 131*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t wirelessModes; 132*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_WIRELESS_MODE_11A 0x01 133*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_WIRELESS_MODE_TURBO 0x02 134*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_WIRELESS_MODE_11B 0x04 135*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_WIRELESS_MODE_11G 0x08 136*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_WIRELESS_MODE_108G 0x10 137*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t chanSpreadSupport; 138*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t compressSupport; 139*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t burstSupport; 140*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t fastFramesSupport; 141*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t chapTuningSupport; 142*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t turboGSupport; 143*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t turboPrimeSupport; 144*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t deviceType; 145*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t wmeSupport; 146*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t low2GhzChan; 147*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t high2GhzChan; 148*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t low5GhzChan; 149*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t high5GhzChan; 150*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t supportCipherWEP; 151*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t supportCipherAES_CCM; 152*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t supportCipherTKIP; 153*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t supportCipherMicAES_CCM; 154*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t supportMicTKIP; 155*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t twiceAntennaGain5G; 156*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t twiceAntennaGain2G; 157*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 158*56f9a274Sfei feng - Sun Microsystems - Beijing China 159*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_stat { 160*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_badchunkseqnum; 161*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_invalidlen; 162*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_multichunk; 163*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_toobigrxpkt; 164*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_stopinprogress; 165*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_crcerr; 166*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_phyerr; 167*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_decrypt_crcerr; 168*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_decrypt_micerr; 169*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_decomperr; 170*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_keyerr; 171*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t st_err; 172*56f9a274Sfei feng - Sun Microsystems - Beijing China /* not use CMD/RX/TX queues, so ignore some structure */ 173*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 174*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_STAT_INC(sc, var) (sc)->sc_stat.var++ 175*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_STAT_DEC(sc, var) (sc)->sc_stat.var-- 176*56f9a274Sfei feng - Sun Microsystems - Beijing China 177*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_softc { 178*56f9a274Sfei feng - Sun Microsystems - Beijing China struct ieee80211com sc_ic; 179*56f9a274Sfei feng - Sun Microsystems - Beijing China dev_info_t *sc_dev; 180*56f9a274Sfei feng - Sun Microsystems - Beijing China 181*56f9a274Sfei feng - Sun Microsystems - Beijing China usb_client_dev_data_t *sc_udev; /* usb dev */ 182*56f9a274Sfei feng - Sun Microsystems - Beijing China int dev_flags; 183*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_flags; 184*56f9a274Sfei feng - Sun Microsystems - Beijing China 185*56f9a274Sfei feng - Sun Microsystems - Beijing China usb_pipe_handle_t rx_cmd_pipe; 186*56f9a274Sfei feng - Sun Microsystems - Beijing China usb_pipe_handle_t rx_data_pipe; 187*56f9a274Sfei feng - Sun Microsystems - Beijing China usb_pipe_handle_t tx_cmd_pipe; 188*56f9a274Sfei feng - Sun Microsystems - Beijing China usb_pipe_handle_t tx_data_pipe; 189*56f9a274Sfei feng - Sun Microsystems - Beijing China 190*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_genlock; 191*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_rxlock_cmd; 192*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_rxlock_data; 193*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_txlock_cmd; 194*56f9a274Sfei feng - Sun Microsystems - Beijing China kmutex_t sc_txlock_data; 195*56f9a274Sfei feng - Sun Microsystems - Beijing China 196*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd sc_cmd[UATH_CMD_LIST_COUNT]; 197*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_data sc_rx[UATH_RX_DATA_LIST_COUNT]; 198*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_data sc_tx[UATH_TX_DATA_LIST_COUNT]; 199*56f9a274Sfei feng - Sun Microsystems - Beijing China 200*56f9a274Sfei feng - Sun Microsystems - Beijing China int tx_cmd_queued; 201*56f9a274Sfei feng - Sun Microsystems - Beijing China int rx_cmd_queued; 202*56f9a274Sfei feng - Sun Microsystems - Beijing China int tx_data_queued; 203*56f9a274Sfei feng - Sun Microsystems - Beijing China int rx_data_queued; 204*56f9a274Sfei feng - Sun Microsystems - Beijing China 205*56f9a274Sfei feng - Sun Microsystems - Beijing China int sc_cmdid; 206*56f9a274Sfei feng - Sun Microsystems - Beijing China 207*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_stat sc_stat; 208*56f9a274Sfei feng - Sun Microsystems - Beijing China 209*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd_lock rlock; 210*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_cmd_lock wlock; 211*56f9a274Sfei feng - Sun Microsystems - Beijing China 212*56f9a274Sfei feng - Sun Microsystems - Beijing China struct uath_devcap sc_devcap; 213*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t sc_serial[16]; 214*56f9a274Sfei feng - Sun Microsystems - Beijing China 215*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_msgid; 216*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_seqnum; 217*56f9a274Sfei feng - Sun Microsystems - Beijing China 218*56f9a274Sfei feng - Sun Microsystems - Beijing China uint8_t sc_intrx_nextnum; 219*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_intrx_len; 220*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_MAX_INTRX_SIZE 3616 221*56f9a274Sfei feng - Sun Microsystems - Beijing China 222*56f9a274Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_scan_id; 223*56f9a274Sfei feng - Sun Microsystems - Beijing China timeout_id_t sc_stat_id; 224*56f9a274Sfei feng - Sun Microsystems - Beijing China 225*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_need_sched; 226*56f9a274Sfei feng - Sun Microsystems - Beijing China 227*56f9a274Sfei feng - Sun Microsystems - Beijing China /* kstats */ 228*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_nobuf; 229*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_nobuf; 230*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_err; 231*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_rx_err; 232*56f9a274Sfei feng - Sun Microsystems - Beijing China uint32_t sc_tx_retries; 233*56f9a274Sfei feng - Sun Microsystems - Beijing China 234*56f9a274Sfei feng - Sun Microsystems - Beijing China int (*sc_newstate)(struct ieee80211com *, 235*56f9a274Sfei feng - Sun Microsystems - Beijing China enum ieee80211_state, int); 236*56f9a274Sfei feng - Sun Microsystems - Beijing China }; 237*56f9a274Sfei feng - Sun Microsystems - Beijing China 238*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_SUCCESS 0 239*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_FAILURE -1 240*56f9a274Sfei feng - Sun Microsystems - Beijing China 241*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_FLAG_RUNNING (1 << 0) 242*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_FLAG_SUSPEND (1 << 1) 243*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_FLAG_RECONNECT (1 << 2) 244*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_FLAG_DISCONNECT (1 << 3) 245*56f9a274Sfei feng - Sun Microsystems - Beijing China 246*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_LOCK(sc) mutex_enter(&(sc)->sc_genlock) 247*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_UNLOCK(sc) mutex_exit(&(sc)->sc_genlock) 248*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_RUNNING(_sc) ((_sc)->sc_flags & UATH_FLAG_RUNNING) 249*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_SUSPEND(_sc) ((_sc)->sc_flags & UATH_FLAG_SUSPEND) 250*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_DISCONNECT(_sc) ((_sc)->sc_flags & UATH_FLAG_DISCONNECT) 251*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_IS_RECONNECT(_sc) ((_sc)->sc_flags & UATH_FLAG_RECONNECT) 252*56f9a274Sfei feng - Sun Microsystems - Beijing China 253*56f9a274Sfei feng - Sun Microsystems - Beijing China #define UATH_RESET_INTRX(sc) do { \ 254*56f9a274Sfei feng - Sun Microsystems - Beijing China (sc)->sc_intrx_nextnum = 0; \ 255*56f9a274Sfei feng - Sun Microsystems - Beijing China (sc)->sc_intrx_len = 0; \ 256*56f9a274Sfei feng - Sun Microsystems - Beijing China _NOTE(CONSTCOND) \ 257*56f9a274Sfei feng - Sun Microsystems - Beijing China } while (0) 258*56f9a274Sfei feng - Sun Microsystems - Beijing China 259*56f9a274Sfei feng - Sun Microsystems - Beijing China 260*56f9a274Sfei feng - Sun Microsystems - Beijing China #ifdef __cplusplus 261*56f9a274Sfei feng - Sun Microsystems - Beijing China } 262*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif 263*56f9a274Sfei feng - Sun Microsystems - Beijing China 264*56f9a274Sfei feng - Sun Microsystems - Beijing China #endif /* _UATH_VAR_H */ 265