linux/drivers/staging/otus/usbdrv.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2007-2008 Atheros Communications Inc.
   3 *
   4 * Permission to use, copy, modify, and/or distribute this software for any
   5 * purpose with or without fee is hereby granted, provided that the above
   6 * copyright notice and this permission notice appear in all copies.
   7 *
   8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15 */
  16/*                                                                      */
  17/*  Module Name : usbdrv.h                                              */
  18/*                                                                      */
  19/*  Abstract                                                            */
  20/*     This module contains network interface up/down related definition*/
  21/*                                                                      */
  22/*  NOTES                                                               */
  23/*     Platform dependent.                                              */
  24/*                                                                      */
  25/************************************************************************/
  26
  27#ifndef _USBDRV_H
  28#define _USBDRV_H
  29
  30#define WLAN_USB    0
  31#define WLAN_PCI    1
  32
  33#include <linux/module.h>
  34#include <linux/pci.h>
  35#include <linux/netdevice.h>
  36#include <linux/etherdevice.h>
  37#include <linux/skbuff.h>
  38#include <linux/uaccess.h>
  39#include <linux/wireless.h>
  40#include <linux/if_arp.h>
  41#include <linux/slab.h>
  42#include <linux/io.h>
  43
  44#include "zdcompat.h"
  45
  46#include "oal_dt.h"
  47#include "oal_marc.h"
  48#include "80211core/pub_zfi.h"
  49/* #include "pub_zfw.h" */
  50#include "80211core/pub_usb.h"
  51
  52#include <linux/usb.h>
  53/* Please include header files for device type in the beginning of this file */
  54#define urb_t                       struct urb
  55
  56#define usb_complete_t              usb_complete_t
  57#define pipe_t                      u32_t
  58
  59/* USB Endpoint definition */
  60#define USB_WLAN_TX_PIPE                    1
  61#define USB_WLAN_RX_PIPE                    2
  62#define USB_REG_IN_PIPE                     3
  63#define USB_REG_OUT_PIPE                    4
  64
  65#ifdef ZM_HOSTAPD_SUPPORT
  66#include "athr_common.h"
  67#endif
  68
  69/**************************************************************************
  70**              Descriptor Data Structure
  71***************************************************************************/
  72struct driver_stats {
  73        struct net_device_stats net_stats;
  74};
  75
  76#define ZM_MAX_RX_BUFFER_SIZE               8192
  77
  78#if ZM_USB_TX_STREAM_MODE == 1
  79#define ZM_MAX_TX_AGGREGATE_NUM             4
  80#define ZM_USB_TX_BUF_SIZE                  8096
  81#define ZM_MAX_TX_URB_NUM                   4
  82#else
  83#define ZM_USB_TX_BUF_SIZE                  2048
  84#define ZM_MAX_TX_URB_NUM                   8
  85#endif
  86#define ZM_USB_REG_MAX_BUF_SIZE             64
  87#define ZM_MAX_RX_URB_NUM                   16
  88#define ZM_MAX_TX_BUF_NUM                   128
  89
  90typedef struct UsbTxQ {
  91    zbuf_t *buf;
  92    u8_t hdr[80];
  93    u16_t hdrlen;
  94    u8_t snap[8];
  95    u16_t snapLen;
  96    u8_t tail[16];
  97    u16_t tailLen;
  98    u16_t offset;
  99} UsbTxQ_t;
 100
 101
 102struct zdap_ioctl {
 103        u16_t cmd;                /* Command to run */
 104        u32_t addr;               /* Length of the data buffer */
 105        u32_t value;            /* Pointer to the data buffer */
 106        u8_t    data[0x100];
 107};
 108
 109#define ZM_OAL_MAX_STA_SUPPORT 16
 110
 111struct usbdrv_private {
 112        /* linux used */
 113        struct net_device       *device;
 114#if (WLAN_HOSTIF == WLAN_PCI)
 115        struct pci_dev          *pdev;
 116#endif
 117#if (WLAN_HOSTIF == WLAN_USB)
 118        struct usb_device       *udev;
 119        struct usb_interface    *interface;
 120#endif
 121        struct driver_stats drv_stats;
 122        char ifname[IFNAMSIZ];
 123        int                       using_dac;
 124        u8_t                    rev_id;         /* adapter PCI revision ID */
 125        rwlock_t                isolate_lock;
 126    spinlock_t      cs_lock;
 127        int                     driver_isolated;
 128#if (WLAN_HOSTIF == WLAN_PCI)
 129        void                    *regp;
 130#endif
 131
 132         /* timer for heart beat */
 133        struct timer_list hbTimer10ms;
 134
 135        /* For driver core */
 136        void *wd;
 137
 138#if (WLAN_HOSTIF == WLAN_USB)
 139        u8_t                  txUsbBuf[ZM_MAX_TX_URB_NUM][ZM_USB_TX_BUF_SIZE];
 140        u8_t                  regUsbReadBuf[ZM_USB_REG_MAX_BUF_SIZE];
 141        u8_t                  regUsbWriteBuf[ZM_USB_REG_MAX_BUF_SIZE];
 142        urb_t                   *WlanTxDataUrb[ZM_MAX_TX_URB_NUM];
 143        urb_t                   *WlanRxDataUrb[ZM_MAX_RX_URB_NUM];
 144        urb_t                   *RegOutUrb;
 145        urb_t                   *RegInUrb;
 146        UsbTxQ_t                  UsbTxBufQ[ZM_MAX_TX_BUF_NUM];
 147        zbuf_t              *UsbRxBufQ[ZM_MAX_RX_URB_NUM];
 148         u16_t               TxBufHead;
 149         u16_t               TxBufTail;
 150         u16_t               TxBufCnt;
 151         u16_t               TxUrbHead;
 152         u16_t               TxUrbTail;
 153         u16_t               TxUrbCnt;
 154         u16_t               RxBufHead;
 155         u16_t               RxBufTail;
 156         u16_t               RxBufCnt;
 157#endif
 158
 159#if ZM_USB_STREAM_MODE == 1
 160         zbuf_t             *reamin_buf;
 161#endif
 162
 163#ifdef ZM_HOSTAPD_SUPPORT
 164         struct athr_wlan_param  athr_wpa_req;
 165#endif
 166         struct sock          *netlink_sk;
 167         u8_t        DeviceOpened; /* CWYang(+) */
 168         u8_t        supIe[50];
 169         u8_t        supLen;
 170         struct ieee80211req_wpaie stawpaie[ZM_OAL_MAX_STA_SUPPORT];
 171         u8_t        forwardMgmt;
 172
 173         struct zfCbUsbFuncTbl usbCbFunctions;
 174
 175         /* For keventd */
 176         u32_t               flags;
 177         unsigned long      kevent_flags;
 178         u16_t               kevent_ready;
 179
 180         struct semaphore        ioctl_sem;
 181         struct work_struct      kevent;
 182         wait_queue_head_t      wait_queue_event;
 183#ifdef ZM_HALPLUS_LOCK
 184         unsigned long      hal_irqFlag;
 185#endif
 186         u16_t               adapterState;
 187};
 188
 189/* WDS */
 190#define ZM_WDS_PORT_NUMBER  6
 191
 192struct zsWdsStruct {
 193    struct net_device *dev;
 194    u16_t openFlag;
 195};
 196
 197/* VAP */
 198#define ZM_VAP_PORT_NUMBER  7
 199
 200struct zsVapStruct {
 201    struct net_device *dev;
 202    u16_t openFlag;
 203};
 204
 205/***************************************/
 206
 207#define ZM_IOCTL_REG_READ                       0x01
 208#define ZM_IOCTL_REG_WRITE                      0x02
 209#define ZM_IOCTL_MEM_DUMP                       0x03
 210#define ZM_IOCTL_REG_DUMP                       0x05
 211#define ZM_IOCTL_TXD_DUMP                       0x06
 212#define ZM_IOCTL_RXD_DUMP                       0x07
 213#define ZM_IOCTL_MEM_READ                       0x0B
 214#define ZM_IOCTL_MEM_WRITE                      0x0C
 215#define ZM_IOCTL_DMA_TEST                       0x10
 216#define ZM_IOCTL_REG_TEST                       0x11
 217#define ZM_IOCTL_TEST                           0x80
 218#define ZM_IOCTL_TALLY                          0x81 /* CWYang(+) */
 219#define ZM_IOCTL_RTS                            0xA0
 220#define ZM_IOCTL_MIX_MODE                       0xA1
 221#define ZM_IOCTL_FRAG                           0xA2
 222#define ZM_IOCTL_SCAN                           0xA3
 223#define ZM_IOCTL_KEY                            0xA4
 224#define ZM_IOCTL_RATE                           0xA5
 225#define ZM_IOCTL_ENCRYPTION_MODE                0xA6
 226#define ZM_IOCTL_GET_TXCNT                      0xA7
 227#define ZM_IOCTL_GET_DEAGG_CNT                  0xA8
 228#define ZM_IOCTL_DURATION_MODE                  0xA9
 229#define ZM_IOCTL_SET_AES_KEY                    0xAA
 230#define ZM_IOCTL_SET_AES_MODE                   0xAB
 231#define ZM_IOCTL_SIGNAL_STRENGTH                0xAC /* CWYang(+) */
 232#define ZM_IOCTL_SIGNAL_QUALITY                 0xAD /* CWYang(+) */
 233#define ZM_IOCTL_SET_PIBSS_MODE                 0xAE
 234
 235#define ZDAPIOCTL                               SIOCDEVPRIVATE
 236
 237enum devState {
 238    Opened,
 239    Enabled,
 240    Disabled,
 241    Closed
 242};
 243
 244#endif  /* _USBDRV_H */
 245
 246
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.