summaryrefslogtreecommitdiffstats
path: root/sys/dev/ipw/if_ipwvar.h
diff options
context:
space:
mode:
authordamien <damien@FreeBSD.org>2005-04-18 18:47:38 +0000
committerdamien <damien@FreeBSD.org>2005-04-18 18:47:38 +0000
commit8e5cb227ae2e16c00330d1ac4cda0283c63ae3cc (patch)
tree00a85f67ae885950420bc02a1c7a7b91c54b7335 /sys/dev/ipw/if_ipwvar.h
parentf3ecaa630b5d676d2b43b5da90f46c294bd63836 (diff)
downloadFreeBSD-src-8e5cb227ae2e16c00330d1ac4cda0283c63ae3cc.zip
FreeBSD-src-8e5cb227ae2e16c00330d1ac4cda0283c63ae3cc.tar.gz
Initial import of ipw, iwi, ral and ural drivers:
ipw - Intel PRO/Wireless 2100 iwi - Intel PRO/Wireless 2200BG/2225BG/2915ABG ral - Ralink Technology RT2500 ural - Ralink Technology RT2500USB Approved by: silby (mentor)
Diffstat (limited to 'sys/dev/ipw/if_ipwvar.h')
-rw-r--r--sys/dev/ipw/if_ipwvar.h173
1 files changed, 173 insertions, 0 deletions
diff --git a/sys/dev/ipw/if_ipwvar.h b/sys/dev/ipw/if_ipwvar.h
new file mode 100644
index 0000000..c03f5d7
--- /dev/null
+++ b/sys/dev/ipw/if_ipwvar.h
@@ -0,0 +1,173 @@
+/* $FreeBSD$ */
+
+/*-
+ * Copyright (c) 2004, 2005
+ * Damien Bergamini <damien.bergamini@free.fr>. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice unmodified, this list of conditions, and the following
+ * disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+struct ipw_firmware {
+ void *main;
+ int main_size;
+ void *ucode;
+ int ucode_size;
+};
+
+#define IPW_MAX_NSEG 1
+
+struct ipw_soft_bd {
+ struct ipw_bd *bd;
+ int type;
+#define IPW_SBD_TYPE_NOASSOC 0
+#define IPW_SBD_TYPE_COMMAND 1
+#define IPW_SBD_TYPE_HEADER 2
+#define IPW_SBD_TYPE_DATA 3
+ void *priv;
+};
+
+struct ipw_soft_hdr {
+ struct ipw_hdr hdr;
+ bus_dmamap_t map;
+ SLIST_ENTRY(ipw_soft_hdr) next;
+};
+
+struct ipw_soft_buf {
+ struct mbuf *m;
+ struct ieee80211_node *ni;
+ bus_dmamap_t map;
+ SLIST_ENTRY(ipw_soft_buf) next;
+};
+
+struct ipw_rx_radiotap_header {
+ struct ieee80211_radiotap_header wr_ihdr;
+ uint8_t wr_flags;
+ uint16_t wr_chan_freq;
+ uint16_t wr_chan_flags;
+ uint8_t wr_antsignal;
+};
+
+#define IPW_RX_RADIOTAP_PRESENT \
+ ((1 << IEEE80211_RADIOTAP_FLAGS) | \
+ (1 << IEEE80211_RADIOTAP_CHANNEL) | \
+ (1 << IEEE80211_RADIOTAP_DB_ANTSIGNAL))
+
+struct ipw_tx_radiotap_header {
+ struct ieee80211_radiotap_header wt_ihdr;
+ uint8_t wt_flags;
+ uint16_t wt_chan_freq;
+ uint16_t wt_chan_flags;
+};
+
+#define IPW_TX_RADIOTAP_PRESENT \
+ ((1 << IEEE80211_RADIOTAP_FLAGS) | \
+ (1 << IEEE80211_RADIOTAP_CHANNEL))
+
+struct ipw_softc {
+ struct arpcom sc_arp;
+ struct ieee80211com sc_ic;
+ int (*sc_newstate)(struct ieee80211com *,
+ enum ieee80211_state, int);
+ device_t sc_dev;
+
+ struct mtx sc_mtx;
+
+ struct ipw_firmware fw;
+ uint32_t flags;
+#define IPW_FLAG_FW_CACHED (1 << 0)
+#define IPW_FLAG_FW_INITED (1 << 1)
+#define IPW_FLAG_HAS_RADIO_SWITCH (1 << 2)
+
+ int irq_rid;
+ int mem_rid;
+ struct resource *irq;
+ struct resource *mem;
+ bus_space_tag_t sc_st;
+ bus_space_handle_t sc_sh;
+ void *sc_ih;
+
+ int sc_tx_timer;
+
+ bus_dma_tag_t tbd_dmat;
+ bus_dma_tag_t rbd_dmat;
+ bus_dma_tag_t status_dmat;
+ bus_dma_tag_t cmd_dmat;
+ bus_dma_tag_t hdr_dmat;
+ bus_dma_tag_t txbuf_dmat;
+ bus_dma_tag_t rxbuf_dmat;
+
+ bus_dmamap_t tbd_map;
+ bus_dmamap_t rbd_map;
+ bus_dmamap_t status_map;
+ bus_dmamap_t cmd_map;
+
+ bus_addr_t tbd_phys;
+ bus_addr_t rbd_phys;
+ bus_addr_t status_phys;
+
+ struct ipw_bd *tbd_list;
+ struct ipw_bd *rbd_list;
+ struct ipw_status *status_list;
+
+ struct ipw_cmd cmd;
+ struct ipw_soft_bd stbd_list[IPW_NTBD];
+ struct ipw_soft_buf tx_sbuf_list[IPW_NDATA];
+ struct ipw_soft_hdr shdr_list[IPW_NDATA];
+ struct ipw_soft_bd srbd_list[IPW_NRBD];
+ struct ipw_soft_buf rx_sbuf_list[IPW_NRBD];
+
+ SLIST_HEAD(, ipw_soft_hdr) free_shdr;
+ SLIST_HEAD(, ipw_soft_buf) free_sbuf;
+
+ uint32_t table1_base;
+ uint32_t table2_base;
+
+ uint32_t txcur;
+ uint32_t txold;
+ uint32_t rxcur;
+ int txfree;
+
+ int dwelltime;
+
+ struct bpf_if *sc_drvbpf;
+
+ union {
+ struct ipw_rx_radiotap_header th;
+ uint8_t pad[64];
+ } sc_rxtapu;
+#define sc_rxtap sc_rxtapu.th
+ int sc_rxtap_len;
+
+ union {
+ struct ipw_tx_radiotap_header th;
+ uint8_t pad[64];
+ } sc_txtapu;
+#define sc_txtap sc_txtapu.th
+ int sc_txtap_len;
+};
+
+#define SIOCSLOADFW _IOW('i', 137, struct ifreq)
+#define SIOCSKILLFW _IOW('i', 138, struct ifreq)
+
+#define IPW_LOCK(sc) mtx_lock(&(sc)->sc_mtx)
+#define IPW_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx)
OpenPOWER on IntegriCloud