The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/rtwvar.h

Version: -  FREEBSD  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-2  -  FREEBSD-11-1  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-4  -  FREEBSD-10-3  -  FREEBSD-10-2  -  FREEBSD-10-1  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-3  -  FREEBSD-9-2  -  FREEBSD-9-1  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-4  -  FREEBSD-8-3  -  FREEBSD-8-2  -  FREEBSD-8-1  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-4  -  FREEBSD-7-3  -  FREEBSD-7-2  -  FREEBSD-7-1  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-4  -  FREEBSD-6-3  -  FREEBSD-6-2  -  FREEBSD-6-1  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-5  -  FREEBSD-5-4  -  FREEBSD-5-3  -  FREEBSD-5-2  -  FREEBSD-5-1  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  xnu-1699.24.8  -  xnu-2050.18.24  -  OPENSOLARIS  -  minix-3-1-1 
SearchContext: -  none  -  3  -  10 

    1 /* $NetBSD: rtwvar.h,v 1.37 2008/03/12 18:02:21 dyoung Exp $ */
    2 /*-
    3  * Copyright (c) 2004, 2005 David Young.  All rights reserved.
    4  *
    5  * Driver for the Realtek RTL8180 802.11 MAC/BBP by David Young.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  * 3. The name of David Young may not be used to endorse or promote
   16  *    products derived from this software without specific prior
   17  *    written permission.
   18  *
   19  * THIS SOFTWARE IS PROVIDED BY David Young ``AS IS'' AND ANY
   20  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   22  * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL David
   23  * Young BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
   25  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   27  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   28  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
   30  * OF SUCH DAMAGE.
   31  */
   32 
   33 #ifndef _DEV_IC_RTWVAR_H_
   34 #define _DEV_IC_RTWVAR_H_
   35 
   36 #include <sys/queue.h>
   37 #include <sys/callout.h>
   38 
   39 #ifdef RTW_DEBUG
   40 #define RTW_DEBUG_TUNE          0x0000001
   41 #define RTW_DEBUG_PKTFILT       0x0000002
   42 #define RTW_DEBUG_XMIT          0x0000004
   43 #define RTW_DEBUG_XMIT_DESC     0x0000008
   44 #define RTW_DEBUG_NODE          0x0000010
   45 #define RTW_DEBUG_PWR           0x0000020
   46 #define RTW_DEBUG_ATTACH        0x0000040
   47 #define RTW_DEBUG_REGDUMP       0x0000080
   48 #define RTW_DEBUG_ACCESS        0x0000100
   49 #define RTW_DEBUG_RESET         0x0000200
   50 #define RTW_DEBUG_INIT          0x0000400
   51 #define RTW_DEBUG_IOSTATE       0x0000800
   52 #define RTW_DEBUG_RECV          0x0001000
   53 #define RTW_DEBUG_RECV_DESC     0x0002000
   54 #define RTW_DEBUG_IO_KICK       0x0004000
   55 #define RTW_DEBUG_INTR          0x0008000
   56 #define RTW_DEBUG_PHY           0x0010000
   57 #define RTW_DEBUG_PHYIO         0x0020000
   58 #define RTW_DEBUG_PHYBITIO      0x0040000
   59 #define RTW_DEBUG_TIMEOUT       0x0080000
   60 #define RTW_DEBUG_BUGS          0x0100000
   61 #define RTW_DEBUG_BEACON        0x0200000
   62 #define RTW_DEBUG_LED           0x0400000
   63 #define RTW_DEBUG_KEY           0x0800000
   64 #define RTW_DEBUG_XMIT_RSRC     0x1000000
   65 #define RTW_DEBUG_OACTIVE       0x2000000
   66 #define RTW_DEBUG_MAX           0x3ffffff
   67 
   68 extern int rtw_debug;
   69 #define RTW_DPRINTF(__flags, __x)       \
   70         if ((rtw_debug & (__flags)) != 0) printf __x
   71 #define DPRINTF(__sc, __flags, __x)                             \
   72         if (((__sc)->sc_if.if_flags & IFF_DEBUG) != 0)  \
   73                 RTW_DPRINTF(__flags, __x)
   74 #define RTW_PRINT_REGS(__regs, __dvname, __where)       \
   75         rtw_print_regs((__regs), (__dvname), (__where))
   76 #else /* RTW_DEBUG */
   77 #define RTW_DPRINTF(__flags, __x)
   78 #define DPRINTF(__sc, __flags, __x)
   79 #define RTW_PRINT_REGS(__regs, __dvname, __where)
   80 #endif /* RTW_DEBUG */
   81 
   82 enum rtw_locale {
   83         RTW_LOCALE_USA = 0,
   84         RTW_LOCALE_EUROPE,
   85         RTW_LOCALE_JAPAN,
   86         RTW_LOCALE_UNKNOWN
   87 };
   88 
   89 enum rtw_rfchipid {
   90         RTW_RFCHIPID_RESERVED = 0,
   91         RTW_RFCHIPID_INTERSIL = 1,
   92         RTW_RFCHIPID_RFMD = 2,
   93         RTW_RFCHIPID_PHILIPS = 3,
   94         RTW_RFCHIPID_MAXIM = 4,
   95         RTW_RFCHIPID_GCT = 5
   96 };
   97 /* sc_flags */
   98 #define RTW_F_DIGPHY            0x00000002      /* digital PHY */
   99 #define RTW_F_DFLANTB           0x00000004      /* B antenna is default */
  100 #define RTW_F_ANTDIV            0x00000010      /* h/w antenna diversity */
  101 #define RTW_F_9356SROM          0x00000020      /* 93c56 SROM */
  102 #define RTW_F_DK_VALID          0x00000040      /* keys in DK0-DK3 are valid */
  103 #define RTW_C_RXWEP_40          0x00000080      /* h/w decrypts 40-bit WEP */
  104 #define RTW_C_RXWEP_104         0x00000100      /* h/w decrypts 104-bit WEP */
  105         /* all PHY flags */
  106 #define RTW_F_ALLPHY            (RTW_F_DIGPHY|RTW_F_DFLANTB|RTW_F_ANTDIV)
  107 enum rtw_access {RTW_ACCESS_NONE = 0,
  108                  RTW_ACCESS_CONFIG = 1,
  109                  RTW_ACCESS_ANAPARM = 2};
  110 
  111 struct rtw_regs {
  112         bus_space_tag_t         r_bt;
  113         bus_space_handle_t      r_bh;
  114         bus_size_t              r_sz;
  115         enum rtw_access         r_access;
  116 };
  117 
  118 #define RTW_SR_GET(sr, ofs) \
  119     (((sr)->sr_content[(ofs)/2] >> (((ofs) % 2 == 0) ? 0 : 8)) & 0xff)
  120 
  121 #define RTW_SR_GET16(sr, ofs) \
  122     (RTW_SR_GET((sr), (ofs)) | (RTW_SR_GET((sr), (ofs) + 1) << 8))
  123 
  124 struct rtw_srom {
  125         uint16_t                *sr_content;
  126         uint16_t                sr_size;
  127 };
  128 
  129 struct rtw_rxsoft {
  130         struct mbuf                     *rs_mbuf;
  131         bus_dmamap_t                    rs_dmamap;
  132 };
  133 
  134 struct rtw_txsoft {
  135         SIMPLEQ_ENTRY(rtw_txsoft)       ts_q;
  136         struct mbuf                     *ts_mbuf;
  137         bus_dmamap_t                    ts_dmamap;
  138         struct ieee80211_node           *ts_ni; /* destination node */
  139         u_int                           ts_first;       /* 1st hw descriptor */
  140         u_int                           ts_last;        /* last hw descriptor */
  141         struct ieee80211_duration       ts_d0;
  142         struct ieee80211_duration       ts_dn;
  143 };
  144 
  145 #define RTW_NTXPRI      4       /* number of Tx priorities */
  146 #define RTW_TXPRILO     0
  147 #define RTW_TXPRIMD     1
  148 #define RTW_TXPRIHI     2
  149 #define RTW_TXPRIBCN    3       /* beacon priority */
  150 
  151 #define RTW_MAXPKTSEGS          64      /* Max 64 segments per Tx packet */
  152 
  153 #define CASSERT(cond, complaint) complaint[(cond) ? 0 : -1] = complaint[(cond) ? 0 : -1]
  154 
  155 /* Note well: the descriptor rings must begin on RTW_DESC_ALIGNMENT
  156  * boundaries.  I allocate them consecutively from one buffer, so
  157  * just round up.
  158  */
  159 #define RTW_TXQLENLO    64      /* low-priority queue length */
  160 #define RTW_TXQLENMD    64      /* medium-priority */
  161 #define RTW_TXQLENHI    64      /* high-priority */
  162 #define RTW_TXQLENBCN   8       /* beacon */
  163 
  164 #define RTW_NTXDESCLO   RTW_TXQLENLO
  165 #define RTW_NTXDESCMD   RTW_TXQLENMD
  166 #define RTW_NTXDESCHI   RTW_TXQLENHI
  167 #define RTW_NTXDESCBCN  RTW_TXQLENBCN
  168 
  169 #define RTW_NTXDESCTOTAL        (RTW_NTXDESCLO + RTW_NTXDESCMD + \
  170                                  RTW_NTXDESCHI + RTW_NTXDESCBCN)
  171 
  172 #define RTW_RXQLEN      64
  173 
  174 struct rtw_rxdesc_blk {
  175         u_int                   rdb_ndesc;
  176         u_int                   rdb_next;
  177         bus_dma_tag_t           rdb_dmat;
  178         bus_dmamap_t            rdb_dmamap;
  179         struct rtw_rxdesc       *rdb_desc;
  180 };
  181 
  182 struct rtw_txdesc_blk {
  183         u_int                   tdb_ndesc;
  184         u_int                   tdb_next;
  185         u_int                   tdb_nfree;
  186         bus_dma_tag_t           tdb_dmat;
  187         bus_dmamap_t            tdb_dmamap;
  188         bus_addr_t              tdb_physbase;
  189         bus_addr_t              tdb_ofs;
  190         bus_size_t              tdb_basereg;
  191         uint32_t                tdb_base;
  192         struct rtw_txdesc       *tdb_desc;
  193 };
  194 
  195 #define RTW_NEXT_IDX(__htc, __idx)      (((__idx) + 1) % (__htc)->tdb_ndesc)
  196 
  197 #define RTW_NEXT_DESC(__htc, __idx) \
  198     ((__htc)->tdb_physbase + \
  199      sizeof(struct rtw_txdesc) * RTW_NEXT_IDX((__htc), (__idx)))
  200 
  201 SIMPLEQ_HEAD(rtw_txq, rtw_txsoft);
  202 
  203 struct rtw_txsoft_blk {
  204         /* dirty/free s/w descriptors */
  205         struct rtw_txq          tsb_dirtyq;
  206         struct rtw_txq          tsb_freeq;
  207         u_int                   tsb_ndesc;
  208         int                     tsb_tx_timer;
  209         struct rtw_txsoft       *tsb_desc;
  210         uint8_t                 tsb_poll;
  211 };
  212 
  213 struct rtw_descs {
  214         struct rtw_txdesc       hd_txlo[RTW_NTXDESCLO];
  215         struct rtw_txdesc       hd_txmd[RTW_NTXDESCMD];
  216         struct rtw_txdesc       hd_txhi[RTW_NTXDESCMD];
  217         struct rtw_rxdesc       hd_rx[RTW_RXQLEN];
  218         struct rtw_txdesc       hd_bcn[RTW_NTXDESCBCN];
  219 };
  220 #define RTW_DESC_OFFSET(ring, i)        offsetof(struct rtw_descs, ring[i])
  221 #define RTW_RING_OFFSET(ring)           RTW_DESC_OFFSET(ring, 0)
  222 #define RTW_RING_BASE(sc, ring)         ((sc)->sc_desc_physaddr + \
  223                                          RTW_RING_OFFSET(ring))
  224 
  225 /* Radio capture format for RTL8180. */
  226 
  227 #define RTW_RX_RADIOTAP_PRESENT                                 \
  228         ((1 << IEEE80211_RADIOTAP_TSFT)                 |       \
  229          (1 << IEEE80211_RADIOTAP_FLAGS)                |       \
  230          (1 << IEEE80211_RADIOTAP_RATE)                 |       \
  231          (1 << IEEE80211_RADIOTAP_CHANNEL)              |       \
  232          (1 << IEEE80211_RADIOTAP_LOCK_QUALITY)         |       \
  233          (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)         |       \
  234          0)
  235 
  236 #define RTW_PHILIPS_RX_RADIOTAP_PRESENT                                 \
  237         ((1 << IEEE80211_RADIOTAP_TSFT)                 |       \
  238          (1 << IEEE80211_RADIOTAP_FLAGS)                |       \
  239          (1 << IEEE80211_RADIOTAP_RATE)                 |       \
  240          (1 << IEEE80211_RADIOTAP_CHANNEL)              |       \
  241          (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL)         |       \
  242          0)
  243 
  244 struct rtw_rx_radiotap_header {
  245         struct ieee80211_radiotap_header        rr_ihdr;
  246         uint64_t                                rr_tsft;
  247         uint8_t                                 rr_flags;
  248         uint8_t                                 rr_rate;
  249         uint16_t                                rr_chan_freq;
  250         uint16_t                                rr_chan_flags;
  251         union {
  252                 struct {
  253                         uint16_t                o_barker_lock;
  254                         uint8_t                 o_antsignal;
  255                 } u_other;
  256                 struct {
  257                         uint8_t                 p_antsignal;
  258                 } u_philips;
  259         } rr_u;
  260 } __packed;
  261 
  262 #define RTW_TX_RADIOTAP_PRESENT                         \
  263         ((1 << IEEE80211_RADIOTAP_RATE)         |       \
  264          (1 << IEEE80211_RADIOTAP_CHANNEL)      |       \
  265          0)
  266 
  267 struct rtw_tx_radiotap_header {
  268         struct ieee80211_radiotap_header        rt_ihdr;
  269         uint8_t                                 rt_rate;
  270         uint8_t                                 rt_pad;
  271         uint16_t                                rt_chan_freq;
  272         uint16_t                                rt_chan_flags;
  273 } __packed;
  274 
  275 enum rtw_attach_state {FINISHED, FINISH_DESCMAP_LOAD, FINISH_DESCMAP_CREATE,
  276         FINISH_DESC_MAP, FINISH_DESC_ALLOC, FINISH_RXMAPS_CREATE,
  277         FINISH_TXMAPS_CREATE, FINISH_RESET, FINISH_READ_SROM, FINISH_PARSE_SROM,
  278         FINISH_RF_ATTACH, FINISH_ID_STA, FINISH_TXDESCBLK_SETUP,
  279         FINISH_TXCTLBLK_SETUP, DETACHED};
  280 
  281 struct rtw_mtbl {
  282         int                     (*mt_newstate)(struct ieee80211com *,
  283                                         enum ieee80211_state, int);
  284         void                    (*mt_recv_mgmt)(struct ieee80211com *,
  285                                     struct mbuf *, struct ieee80211_node *,
  286                                     int, int, uint32_t);
  287         struct ieee80211_node   *(*mt_node_alloc)(struct ieee80211_node_table*);
  288         void                    (*mt_node_free)(struct ieee80211_node *);
  289 };
  290 
  291 enum rtw_pwrstate { RTW_OFF = 0, RTW_SLEEP, RTW_ON };
  292 
  293 typedef void (*rtw_continuous_tx_cb_t)(void *arg, int);
  294 
  295 struct rtw_phy {
  296         struct rtw_rf   *p_rf;
  297         struct rtw_regs *p_regs;
  298 };
  299 
  300 struct rtw_bbpset {
  301         u_int   bb_antatten;
  302         u_int   bb_chestlim;
  303         u_int   bb_chsqlim;
  304         u_int   bb_ifagcdet;
  305         u_int   bb_ifagcini;
  306         u_int   bb_ifagclimit;
  307         u_int   bb_lnadet;
  308         u_int   bb_sys1;
  309         u_int   bb_sys2;
  310         u_int   bb_sys3;
  311         u_int   bb_trl;
  312         u_int   bb_txagc;
  313 };
  314 
  315 struct rtw_rf {
  316         void    (*rf_destroy)(struct rtw_rf *);
  317         /* args: frequency, txpower, power state */
  318         int     (*rf_init)(struct rtw_rf *, u_int, uint8_t,
  319                           enum rtw_pwrstate);
  320         /* arg: power state */
  321         int     (*rf_pwrstate)(struct rtw_rf *, enum rtw_pwrstate);
  322         /* arg: frequency */
  323         int     (*rf_tune)(struct rtw_rf *, u_int);
  324         /* arg: txpower */
  325         int     (*rf_txpower)(struct rtw_rf *, uint8_t);
  326         rtw_continuous_tx_cb_t  rf_continuous_tx_cb;
  327         void                    *rf_continuous_tx_arg;
  328         struct rtw_bbpset       rf_bbpset;
  329 };
  330 
  331 static __inline void
  332 rtw_rf_destroy(struct rtw_rf *rf)
  333 {
  334         (*rf->rf_destroy)(rf);
  335 }
  336 
  337 static __inline int
  338 rtw_rf_init(struct rtw_rf *rf, u_int freq, uint8_t opaque_txpower,
  339     enum rtw_pwrstate power)
  340 {
  341         return (*rf->rf_init)(rf, freq, opaque_txpower, power);
  342 }
  343 
  344 static __inline int
  345 rtw_rf_pwrstate(struct rtw_rf *rf, enum rtw_pwrstate power)
  346 {
  347         return (*rf->rf_pwrstate)(rf, power);
  348 }
  349 
  350 static __inline int
  351 rtw_rf_tune(struct rtw_rf *rf, u_int freq)
  352 {
  353         return (*rf->rf_tune)(rf, freq);
  354 }
  355 
  356 static __inline int
  357 rtw_rf_txpower(struct rtw_rf *rf, uint8_t opaque_txpower)
  358 {
  359         return (*rf->rf_txpower)(rf, opaque_txpower);
  360 }
  361 
  362 typedef int (*rtw_rf_write_t)(struct rtw_regs *, enum rtw_rfchipid, u_int,
  363     uint32_t);
  364 
  365 struct rtw_rfbus {
  366         struct rtw_regs         *b_regs;
  367         rtw_rf_write_t          b_write;
  368 };
  369 
  370 static __inline int
  371 rtw_rfbus_write(struct rtw_rfbus *bus, enum rtw_rfchipid rfchipid, u_int addr,
  372     uint32_t val)
  373 {
  374         return (*bus->b_write)(bus->b_regs, rfchipid, addr, val);
  375 }
  376 
  377 struct rtw_max2820 {
  378         struct rtw_rf           mx_rf;
  379         struct rtw_rfbus        mx_bus;
  380         int                     mx_is_a;        /* 1: MAX2820A/MAX2821A */
  381 };
  382 
  383 struct rtw_grf5101 {
  384         struct rtw_rf           gr_rf;
  385         struct rtw_rfbus        gr_bus;
  386 };
  387 
  388 struct rtw_sa2400 {
  389         struct rtw_rf           sa_rf;
  390         struct rtw_rfbus        sa_bus;
  391         int                     sa_digphy;      /* 1: digital PHY */
  392 };
  393 
  394 typedef void (*rtw_pwrstate_t)(struct rtw_regs *, enum rtw_pwrstate, int, int);
  395 
  396 union rtw_keys {
  397         uint8_t         rk_keys[4][16];
  398         uint32_t        rk_words[16];
  399 };
  400 
  401 #define RTW_LED_SLOW_TICKS      MAX(1, hz/2)
  402 #define RTW_LED_FAST_TICKS      MAX(1, hz/10)
  403 
  404 struct rtw_led_state {
  405 #define RTW_LED0        0x1
  406 #define RTW_LED1        0x2
  407         uint8_t         ls_slowblink:2;
  408         uint8_t         ls_actblink:2;
  409         uint8_t         ls_default:2;
  410         uint8_t         ls_state;
  411         uint8_t         ls_event;
  412 #define RTW_LED_S_RX    0x1
  413 #define RTW_LED_S_TX    0x2
  414 #define RTW_LED_S_SLOW  0x4
  415         struct callout  ls_slow_ch;
  416         struct callout  ls_fast_ch;
  417 };
  418 
  419 struct rtw_softc {
  420         device_t                sc_dev;
  421         struct ethercom         sc_ec;
  422         struct ieee80211com     sc_ic;
  423         struct rtw_regs         sc_regs;
  424         bus_dma_tag_t           sc_dmat;
  425         uint32_t                sc_flags;
  426 
  427         enum rtw_attach_state   sc_attach_state;
  428         enum rtw_rfchipid       sc_rfchipid;
  429         enum rtw_locale         sc_locale;
  430         uint8_t         sc_phydelay;
  431 
  432         /* s/w Tx/Rx descriptors */
  433         struct rtw_txsoft_blk   sc_txsoft_blk[RTW_NTXPRI];
  434         struct rtw_txdesc_blk   sc_txdesc_blk[RTW_NTXPRI];
  435 
  436         struct rtw_rxsoft       sc_rxsoft[RTW_RXQLEN];
  437         struct rtw_rxdesc_blk   sc_rxdesc_blk;
  438 
  439         struct rtw_descs        *sc_descs;
  440 
  441         bus_dma_segment_t       sc_desc_segs;
  442         int                     sc_desc_nsegs;
  443         bus_dmamap_t            sc_desc_dmamap;
  444 #define sc_desc_physaddr sc_desc_dmamap->dm_segs[0].ds_addr
  445 
  446         struct rtw_srom         sc_srom;
  447 
  448         enum rtw_pwrstate       sc_pwrstate;
  449 
  450         rtw_pwrstate_t          sc_pwrstate_cb;
  451 
  452         struct rtw_rf           *sc_rf;
  453 
  454         uint16_t                sc_inten;
  455 
  456         /* interrupt acknowledge hook */
  457         void (*sc_intr_ack)(struct rtw_regs *);
  458 
  459         struct rtw_mtbl         sc_mtbl;
  460 
  461         void *                  sc_radiobpf;
  462 
  463         struct callout          sc_scan_ch;
  464         u_int                   sc_cur_chan;
  465 
  466         uint32_t                sc_tsfth;       /* most significant TSFT bits */
  467         uint32_t                sc_rcr;         /* RTW_RCR */
  468         uint8_t         sc_csthr;       /* carrier-sense threshold */
  469 
  470         int                     sc_do_tick;     /* indicate 1s ticks */
  471         struct timeval          sc_tick0;       /* first tick */
  472 
  473         uint8_t                 sc_rev;         /* PCI/Cardbus revision */
  474 
  475         uint32_t                sc_anaparm;     /* register RTW_ANAPARM */
  476 
  477         union {
  478                 struct rtw_rx_radiotap_header   tap;
  479                 uint8_t                 pad[64];
  480         } sc_rxtapu;
  481         union {
  482                 struct rtw_tx_radiotap_header   tap;
  483                 uint8_t                 pad[64];
  484         } sc_txtapu;
  485         union rtw_keys          sc_keys;
  486         struct ifqueue          sc_beaconq;
  487         struct rtw_led_state    sc_led_state;
  488         int                     sc_hwverid;
  489 };
  490 
  491 #define sc_if           sc_ec.ec_if
  492 #define sc_rxtap        sc_rxtapu.tap
  493 #define sc_txtap        sc_txtapu.tap
  494 
  495 void rtw_txdac_enable(struct rtw_softc *, int);
  496 void rtw_anaparm_enable(struct rtw_regs *, int);
  497 void rtw_config0123_enable(struct rtw_regs *, int);
  498 void rtw_continuous_tx_enable(struct rtw_softc *, int);
  499 void rtw_set_access(struct rtw_regs *, enum rtw_access);
  500 
  501 void rtw_attach(struct rtw_softc *);
  502 int rtw_detach(struct rtw_softc *);
  503 int rtw_intr(void *);
  504 
  505 bool rtw_suspend(device_t PMF_FN_PROTO);
  506 bool rtw_resume(device_t PMF_FN_PROTO);
  507 
  508 int rtw_activate(device_t, enum devact);
  509 
  510 const char *rtw_pwrstate_string(enum rtw_pwrstate);
  511 
  512 #endif /* _DEV_IC_RTWVAR_H_ */

Cache object: 880b6e38634f4d7160014c60c0ea0091


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.