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/usb/wlan/if_uralvar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $FreeBSD$       */
    2 
    3 /*-
    4  * Copyright (c) 2005
    5  *      Damien Bergamini <damien.bergamini@free.fr>
    6  *
    7  * Permission to use, copy, modify, and distribute this software for any
    8  * purpose with or without fee is hereby granted, provided that the above
    9  * copyright notice and this permission notice appear in all copies.
   10  *
   11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   18  */
   19 
   20 #define RAL_TX_LIST_COUNT       8
   21 #define RAL_TX_MINFREE          2
   22 
   23 #define URAL_SCAN_START         1
   24 #define URAL_SCAN_END           2
   25 #define URAL_SET_CHANNEL        3
   26 
   27 struct ural_rx_radiotap_header {
   28         struct ieee80211_radiotap_header wr_ihdr;
   29         uint8_t         wr_flags;
   30         uint8_t         wr_rate;
   31         uint16_t        wr_chan_freq;
   32         uint16_t        wr_chan_flags;
   33         int8_t          wr_antsignal;
   34         int8_t          wr_antnoise;
   35         uint8_t         wr_antenna;
   36 } __packed __aligned(8);
   37 
   38 #define RAL_RX_RADIOTAP_PRESENT                                         \
   39         ((1 << IEEE80211_RADIOTAP_FLAGS) |                              \
   40          (1 << IEEE80211_RADIOTAP_RATE) |                               \
   41          (1 << IEEE80211_RADIOTAP_CHANNEL) |                            \
   42          (1 << IEEE80211_RADIOTAP_ANTENNA) |                            \
   43          (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) |                      \
   44          (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE))
   45 
   46 struct ural_tx_radiotap_header {
   47         struct ieee80211_radiotap_header wt_ihdr;
   48         uint8_t         wt_flags;
   49         uint8_t         wt_rate;
   50         uint16_t        wt_chan_freq;
   51         uint16_t        wt_chan_flags;
   52         uint8_t         wt_antenna;
   53 } __packed;
   54 
   55 #define RAL_TX_RADIOTAP_PRESENT                                         \
   56         ((1 << IEEE80211_RADIOTAP_FLAGS) |                              \
   57          (1 << IEEE80211_RADIOTAP_RATE) |                               \
   58          (1 << IEEE80211_RADIOTAP_CHANNEL) |                            \
   59          (1 << IEEE80211_RADIOTAP_ANTENNA))
   60 
   61 struct ural_softc;
   62 
   63 struct ural_tx_data {
   64         STAILQ_ENTRY(ural_tx_data)      next;
   65         struct ural_softc               *sc;
   66         struct ural_tx_desc             desc;
   67         struct mbuf                     *m;
   68         struct ieee80211_node           *ni;
   69         int                             rate;
   70 };
   71 typedef STAILQ_HEAD(, ural_tx_data) ural_txdhead;
   72 
   73 struct ural_vap {
   74         struct ieee80211vap             vap;
   75 
   76         struct usb_callout              ratectl_ch;
   77         struct task                     ratectl_task;
   78 
   79         int                             (*newstate)(struct ieee80211vap *,
   80                                             enum ieee80211_state, int);
   81 };
   82 #define URAL_VAP(vap)   ((struct ural_vap *)(vap))
   83 
   84 enum {
   85         URAL_BULK_WR,
   86         URAL_BULK_RD,
   87         URAL_N_TRANSFER = 2,
   88 };
   89 
   90 struct ural_softc {
   91         struct ieee80211com             sc_ic;
   92         struct ieee80211_ratectl_tx_stats sc_txs;
   93         struct mbufq                    sc_snd;
   94         device_t                        sc_dev;
   95         struct usb_device               *sc_udev;
   96 
   97         uint32_t                        asic_rev;
   98         uint8_t                         rf_rev;
   99 
  100         struct usb_xfer                 *sc_xfer[URAL_N_TRANSFER];
  101 
  102         struct ural_tx_data             tx_data[RAL_TX_LIST_COUNT];
  103         ural_txdhead                    tx_q;
  104         ural_txdhead                    tx_free;
  105         int                             tx_nfree;
  106         struct ural_rx_desc             sc_rx_desc;
  107 
  108         struct mtx                      sc_mtx;
  109 
  110         uint16_t                        sta[11];
  111         uint32_t                        rf_regs[4];
  112         uint8_t                         txpow[14];
  113         u_int                           sc_detached:1,
  114                                         sc_running:1;
  115 
  116         uint8_t                         sc_bssid[IEEE80211_ADDR_LEN];
  117 
  118         struct {
  119                 uint8_t                 val;
  120                 uint8_t                 reg;
  121         } __packed                      bbp_prom[16];
  122 
  123         int                             led_mode;
  124         int                             hw_radio;
  125         int                             rx_ant;
  126         int                             tx_ant;
  127         int                             nb_ant;
  128 
  129         struct ural_rx_radiotap_header  sc_rxtap;
  130         struct ural_tx_radiotap_header  sc_txtap;
  131 };
  132 
  133 #define RAL_LOCK(sc)            mtx_lock(&(sc)->sc_mtx)
  134 #define RAL_UNLOCK(sc)          mtx_unlock(&(sc)->sc_mtx)
  135 #define RAL_LOCK_ASSERT(sc, t)  mtx_assert(&(sc)->sc_mtx, t)

Cache object: b6f1dcd6dd5917df6319b7a3794ea822


[ 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.