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/rtwn/pci/rtwn_pci_var.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 /*      $OpenBSD: if_rtwnreg.h,v 1.3 2015/06/14 08:02:47 stsp Exp $     */
    2 
    3 /*-
    4  * Copyright (c) 2010 Damien Bergamini <damien.bergamini@free.fr>
    5  * Copyright (c) 2015 Stefan Sperling <stsp@openbsd.org>
    6  * Copyright (c) 2016 Andriy Voskoboinyk <avos@FreeBSD.org>
    7  *
    8  * Permission to use, copy, modify, and distribute this software for any
    9  * purpose with or without fee is hereby granted, provided that the above
   10  * copyright notice and this permission notice appear in all copies.
   11  *
   12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   17  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   18  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   19  * 
   20  * $FreeBSD$
   21  */
   22 
   23 #ifndef RTWN_PCI_VAR_H
   24 #define RTWN_PCI_VAR_H
   25 
   26 #define RTWN_PCI_RX_LIST_COUNT          256
   27 #define RTWN_PCI_TX_LIST_COUNT          256
   28 
   29 /* sizeof(struct rtwn_rx_stat_common) + R88E_INTR_MSG_LEN */
   30 #define RTWN_PCI_RX_TMP_BUF_SIZE        84
   31 
   32 struct rtwn_rx_data {
   33         bus_dmamap_t            map;
   34         struct mbuf             *m;
   35         bus_addr_t              paddr;
   36 };
   37 
   38 struct rtwn_rx_ring {
   39         struct rtwn_rx_stat_pci *desc;
   40         bus_addr_t              paddr;
   41         bus_dma_tag_t           desc_dmat;
   42         bus_dmamap_t            desc_map;
   43         bus_dma_tag_t           data_dmat;
   44         bus_dma_segment_t       seg;
   45         struct rtwn_rx_data     rx_data[RTWN_PCI_RX_LIST_COUNT];
   46         int                     cur;
   47 };
   48 
   49 struct rtwn_tx_data {
   50         bus_dmamap_t            map;
   51         struct mbuf             *m;
   52         struct ieee80211_node   *ni;
   53 };
   54 
   55 struct rtwn_tx_ring {
   56         bus_addr_t              paddr;
   57         bus_dma_tag_t           desc_dmat;
   58         bus_dmamap_t            desc_map;
   59         bus_dma_tag_t           data_dmat;
   60         bus_dma_segment_t       seg;
   61         void                    *desc;
   62         struct rtwn_tx_data     tx_data[RTWN_PCI_TX_LIST_COUNT];
   63         int                     queued;
   64         int                     cur;
   65         int                     last;
   66 };
   67 
   68 /*
   69  * TX queue indices.
   70  */
   71 enum {
   72         RTWN_PCI_BK_QUEUE,
   73         RTWN_PCI_BE_QUEUE,
   74         RTWN_PCI_VI_QUEUE,
   75         RTWN_PCI_VO_QUEUE,
   76         RTWN_PCI_BEACON_QUEUE,
   77         RTWN_PCI_TXCMD_QUEUE,
   78         RTWN_PCI_MGNT_QUEUE,
   79         RTWN_PCI_HIGH_QUEUE,
   80         RTWN_PCI_HCCA_QUEUE,
   81         RTWN_PCI_NTXQUEUES
   82 };
   83 
   84 /*
   85  * Interrupt events.
   86  */
   87 enum {
   88         RTWN_PCI_INTR_RX_ERROR          = 0x00000001,
   89         RTWN_PCI_INTR_RX_OVERFLOW       = 0x00000002,
   90         RTWN_PCI_INTR_RX_DESC_UNAVAIL   = 0x00000004,
   91         RTWN_PCI_INTR_RX_DONE           = 0x00000008,
   92         RTWN_PCI_INTR_TX_ERROR          = 0x00000010,
   93         RTWN_PCI_INTR_TX_OVERFLOW       = 0x00000020,
   94         RTWN_PCI_INTR_TX_REPORT         = 0x00000040,
   95         RTWN_PCI_INTR_PS_TIMEOUT        = 0x00000080
   96 };
   97 
   98 /* Shortcuts */
   99 /* Vendor driver treats RX errors like ROK... */
  100 #define RTWN_PCI_INTR_RX \
  101         (RTWN_PCI_INTR_RX_ERROR | RTWN_PCI_INTR_RX_OVERFLOW | \
  102          RTWN_PCI_INTR_RX_DESC_UNAVAIL | RTWN_PCI_INTR_RX_DONE)
  103 
  104 struct rtwn_pci_softc {
  105         struct rtwn_softc       pc_sc;          /* must be the first */
  106 
  107         struct resource         *irq;
  108         struct resource         *mem;
  109         bus_space_tag_t         pc_st;
  110         bus_space_handle_t      pc_sh;
  111         void                    *pc_ih;
  112         bus_size_t              pc_mapsize;
  113 
  114         uint8_t                 pc_rx_buf[RTWN_PCI_RX_TMP_BUF_SIZE];
  115         struct rtwn_rx_ring     rx_ring;
  116         struct rtwn_tx_ring     tx_ring[RTWN_PCI_NTXQUEUES];
  117 
  118         /* must be set by the driver. */
  119         uint16_t                pc_qmap;
  120         uint32_t                tcr;
  121 
  122         void                    (*pc_setup_tx_desc)(struct rtwn_pci_softc *,
  123                                     void *, uint32_t);
  124         void                    (*pc_tx_postsetup)(struct rtwn_pci_softc *,
  125                                     void *, bus_dma_segment_t *);
  126         void                    (*pc_copy_tx_desc)(void *, const void *);
  127         void                    (*pc_enable_intr)(struct rtwn_pci_softc *);
  128         int                     (*pc_get_intr_status)(struct rtwn_pci_softc *,
  129                                     int *);
  130 };
  131 #define RTWN_PCI_SOFTC(sc)      ((struct rtwn_pci_softc *)(sc))
  132 
  133 #define rtwn_pci_setup_tx_desc(_pc, _desc, _addr) \
  134         (((_pc)->pc_setup_tx_desc)((_pc), (_desc), (_addr)))
  135 #define rtwn_pci_tx_postsetup(_pc, _txd, _segs) \
  136         (((_pc)->pc_tx_postsetup)((_pc), (_txd), (_segs)))
  137 #define rtwn_pci_copy_tx_desc(_pc, _dest, _src) \
  138         (((_pc)->pc_copy_tx_desc)((_dest), (_src)))
  139 #define rtwn_pci_enable_intr(_pc) \
  140         (((_pc)->pc_enable_intr)((_pc)))
  141 #define rtwn_pci_get_intr_status(_pc, _tx_rings) \
  142         (((_pc)->pc_get_intr_status)((_pc), (_tx_rings)))
  143 
  144 #endif  /* RTWN_PCI_VAR_H */

Cache object: ec62132e87b3b038376f58a0e74beb5a


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