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/io.h>
  42
  43#include "zdcompat.h"
  44
  45#include "oal_dt.h"
  46#include "oal_marc.h"
  47#include "80211core/pub_zfi.h"
  48//#include "pub_zfw.h"
  49#include "80211core/pub_usb.h"
  50
  51#include <linux/usb.h>
  52/* Please include header files for device type in the beginning of this file */
  53#define urb_t                       struct urb
  54
  55#define usb_complete_t              usb_complete_t
  56#define pipe_t                      u32_t
  57
  58/* USB Endpoint definition */
  59#define USB_WLAN_TX_PIPE                    1
  60#define USB_WLAN_RX_PIPE                    2
  61#define USB_REG_IN_PIPE                     3
  62#define USB_REG_OUT_PIPE                    4
  63
  64#ifdef ZM_HOSTAPD_SUPPORT
  65#include "athr_common.h"
  66#endif
  67
  68/**************************************************************************
  69**              Descriptor Data Structure
  70***************************************************************************/
  71struct driver_stats {
  72        struct net_device_stats net_stats;
  73};
  74
  75#define ZM_MAX_RX_BUFFER_SIZE               8192
  76
  77#if ZM_USB_TX_STREAM_MODE == 1
  78#define ZM_MAX_TX_AGGREGATE_NUM             4
  79#define ZM_USB_TX_BUF_SIZE                  8096
  80#define ZM_MAX_TX_URB_NUM                   4
  81#else
  82#define ZM_USB_TX_BUF_SIZE                  2048
  83#define ZM_MAX_TX_URB_NUM                   8
  84#endif
  85#define ZM_USB_REG_MAX_BUF_SIZE             64
  86#define ZM_MAX_RX_URB_NUM                   16
  87#define ZM_MAX_TX_BUF_NUM                   128
  88
  89typedef struct UsbTxQ
  90{
  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{
 113        //linux used
 114        struct net_device       *device;
 115#if (WLAN_HOSTIF == WLAN_PCI)
 116        struct pci_dev          *pdev;
 117#endif
 118#if (WLAN_HOSTIF == WLAN_USB)
 119        struct usb_device       *udev;
 120        struct usb_interface    *interface;
 121#endif
 122        struct driver_stats drv_stats;
 123        char ifname[IFNAMSIZ];
 124        int                     using_dac;
 125        u8_t                    rev_id;         /* adapter PCI revision ID */
 126        rwlock_t                isolate_lock;
 127    spinlock_t      cs_lock;
 128        int                     driver_isolated;
 129#if (WLAN_HOSTIF == WLAN_PCI)
 130        void                    *regp;
 131#endif
 132
 133        /* timer for heart beat */
 134        struct timer_list hbTimer10ms;
 135
 136        /* For driver core */
 137        void* wd;
 138
 139#if (WLAN_HOSTIF == WLAN_USB)
 140        u8_t                    txUsbBuf[ZM_MAX_TX_URB_NUM][ZM_USB_TX_BUF_SIZE];
 141        u8_t                    regUsbReadBuf[ZM_USB_REG_MAX_BUF_SIZE];
 142        u8_t                    regUsbWriteBuf[ZM_USB_REG_MAX_BUF_SIZE];
 143        urb_t                   *WlanTxDataUrb[ZM_MAX_TX_URB_NUM];
 144        urb_t                   *WlanRxDataUrb[ZM_MAX_RX_URB_NUM];
 145        urb_t                   *RegOutUrb;
 146        urb_t                   *RegInUrb;
 147        UsbTxQ_t                UsbTxBufQ[ZM_MAX_TX_BUF_NUM];
 148        zbuf_t                  *UsbRxBufQ[ZM_MAX_RX_URB_NUM];
 149        u16_t                   TxBufHead;
 150        u16_t                   TxBufTail;
 151        u16_t                   TxBufCnt;
 152        u16_t                   TxUrbHead;
 153        u16_t                   TxUrbTail;
 154        u16_t                   TxUrbCnt;
 155        u16_t                   RxBufHead;
 156        u16_t                   RxBufTail;
 157        u16_t                   RxBufCnt;
 158#endif
 159
 160#if ZM_USB_STREAM_MODE == 1
 161        zbuf_t                  *reamin_buf;
 162#endif
 163
 164#ifdef ZM_HOSTAPD_SUPPORT
 165        struct athr_wlan_param  athr_wpa_req;
 166#endif
 167        struct sock             *netlink_sk;
 168        u8_t            DeviceOpened; //CWYang(+)
 169        u8_t            supIe[50];
 170        u8_t            supLen;
 171        struct ieee80211req_wpaie stawpaie[ZM_OAL_MAX_STA_SUPPORT];
 172        u8_t            forwardMgmt;
 173
 174        struct zfCbUsbFuncTbl usbCbFunctions;
 175
 176        /* For keventd */
 177        u32_t                   flags;
 178        unsigned long           kevent_flags;
 179        u16_t                   kevent_ready;
 180
 181        struct semaphore        ioctl_sem;
 182        struct work_struct      kevent;
 183        wait_queue_head_t       wait_queue_event;
 184#ifdef ZM_HALPLUS_LOCK
 185        unsigned long           hal_irqFlag;
 186#endif
 187        u16_t                   adapterState;
 188};
 189
 190/* WDS */
 191#define ZM_WDS_PORT_NUMBER  6
 192
 193struct zsWdsStruct
 194{
 195    struct net_device* dev;
 196    u16_t openFlag;
 197};
 198
 199/* VAP */
 200#define ZM_VAP_PORT_NUMBER  7
 201
 202struct zsVapStruct
 203{
 204    struct net_device* dev;
 205    u16_t openFlag;
 206};
 207
 208/***************************************/
 209
 210#define ZM_IOCTL_REG_READ                       0x01
 211#define ZM_IOCTL_REG_WRITE                      0x02
 212#define ZM_IOCTL_MEM_DUMP                       0x03
 213#define ZM_IOCTL_REG_DUMP                       0x05
 214#define ZM_IOCTL_TXD_DUMP                       0x06
 215#define ZM_IOCTL_RXD_DUMP                       0x07
 216#define ZM_IOCTL_MEM_READ                       0x0B
 217#define ZM_IOCTL_MEM_WRITE                      0x0C
 218#define ZM_IOCTL_DMA_TEST           0x10
 219#define ZM_IOCTL_REG_TEST           0x11
 220#define ZM_IOCTL_TEST               0x80
 221#define ZM_IOCTL_TALLY              0x81 //CWYang(+)
 222#define ZM_IOCTL_RTS                0xA0
 223#define ZM_IOCTL_MIX_MODE           0xA1
 224#define ZM_IOCTL_FRAG               0xA2
 225#define ZM_IOCTL_SCAN               0xA3
 226#define ZM_IOCTL_KEY                0xA4
 227#define ZM_IOCTL_RATE               0xA5
 228#define ZM_IOCTL_ENCRYPTION_MODE    0xA6
 229#define ZM_IOCTL_GET_TXCNT          0xA7
 230#define ZM_IOCTL_GET_DEAGG_CNT      0xA8
 231#define ZM_IOCTL_DURATION_MODE      0xA9
 232#define ZM_IOCTL_SET_AES_KEY        0xAA
 233#define ZM_IOCTL_SET_AES_MODE       0xAB
 234#define ZM_IOCTL_SIGNAL_STRENGTH    0xAC //CWYang(+)
 235#define ZM_IOCTL_SIGNAL_QUALITY     0xAD //CWYang(+)
 236#define ZM_IOCTL_SET_PIBSS_MODE     0xAE
 237
 238#define ZDAPIOCTL                               SIOCDEVPRIVATE
 239
 240enum devState {
 241    Opened,
 242    Enabled,
 243    Disabled,
 244    Closed
 245};
 246
 247#endif  /* _USBDRV_H */
 248
 249