/* * Copyright (c) 2007-2008 Atheros Communications Inc. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* */ /* Module Name : usbdrv.h */ /* */ /* Abstract */ /* This module contains network interface up/down related definition*/ /* */ /* NOTES */ /* Platform dependent. */ /* */ /************************************************************************/ #ifndef _USBDRV_H #define _USBDRV_H #define WLAN_USB 0 #define WLAN_PCI 1 #include #include #include #include #include #include #include #include #include #include #include "zdcompat.h" #include "oal_dt.h" #include "oal_marc.h" #include "80211core/pub_zfi.h" /* #include "pub_zfw.h" */ #include "80211core/pub_usb.h" #include /* Please include header files for device type in the beginning of this file */ #define urb_t struct urb #define usb_complete_t usb_complete_t #define pipe_t u32_t /* USB Endpoint definition */ #define USB_WLAN_TX_PIPE 1 #define USB_WLAN_RX_PIPE 2 #define USB_REG_IN_PIPE 3 #define USB_REG_OUT_PIPE 4 #ifdef ZM_HOSTAPD_SUPPORT #include "athr_common.h" #endif /************************************************************************** ** Descriptor Data Structure ***************************************************************************/ struct driver_stats { struct net_device_stats net_stats; }; #define ZM_MAX_RX_BUFFER_SIZE 8192 #if ZM_USB_TX_STREAM_MODE == 1 #define ZM_MAX_TX_AGGREGATE_NUM 4 #define ZM_USB_TX_BUF_SIZE 8096 #define ZM_MAX_TX_URB_NUM 4 #else #define ZM_USB_TX_BUF_SIZE 2048 #define ZM_MAX_TX_URB_NUM 8 #endif #define ZM_USB_REG_MAX_BUF_SIZE 64 #define ZM_MAX_RX_URB_NUM 16 #define ZM_MAX_TX_BUF_NUM 128 typedef struct UsbTxQ { zbuf_t *buf; u8_t hdr[80]; u16_t hdrlen; u8_t snap[8]; u16_t snapLen; u8_t tail[16]; u16_t tailLen; u16_t offset; } UsbTxQ_t; struct zdap_ioctl { u16_t cmd; /* Command to run */ u32_t addr; /* Length of the data buffer */ u32_t value; /* Pointer to the data buffer */ u8_t data[0x100]; }; #define ZM_OAL_MAX_STA_SUPPORT 16 struct usbdrv_private { /* linux used */ struct net_device *device; #if (WLAN_HOSTIF == WLAN_PCI) struct pci_dev *pdev; #endif #if (WLAN_HOSTIF == WLAN_USB) struct usb_device *udev; struct usb_interface *interface; #endif struct driver_stats drv_stats; char ifname[IFNAMSIZ]; int using_dac; u8_t rev_id; /* adapter PCI revision ID */ rwlock_t isolate_lock; spinlock_t cs_lock; int driver_isolated; #if (WLAN_HOSTIF == WLAN_PCI) void *regp; #endif /* timer for heart beat */ struct timer_list hbTimer10ms; /* For driver core */ void *wd; #if (WLAN_HOSTIF == WLAN_USB) u8_t txUsbBuf[ZM_MAX_TX_URB_NUM][ZM_USB_TX_BUF_SIZE]; u8_t regUsbReadBuf[ZM_USB_REG_MAX_BUF_SIZE]; u8_t regUsbWriteBuf[ZM_USB_REG_MAX_BUF_SIZE]; urb_t *WlanTxDataUrb[ZM_MAX_TX_URB_NUM]; urb_t *WlanRxDataUrb[ZM_MAX_RX_URB_NUM]; urb_t *RegOutUrb; urb_t *RegInUrb; UsbTxQ_t UsbTxBufQ[ZM_MAX_TX_BUF_NUM]; zbuf_t *UsbRxBufQ[ZM_MAX_RX_URB_NUM]; u16_t TxBufHead; u16_t TxBufTail; u16_t TxBufCnt; u16_t TxUrbHead; u16_t TxUrbTail; u16_t TxUrbCnt; u16_t RxBufHead; u16_t RxBufTail; u16_t RxBufCnt; #endif #if ZM_USB_STREAM_MODE == 1 zbuf_t *reamin_buf; #endif #ifdef ZM_HOSTAPD_SUPPORT struct athr_wlan_param athr_wpa_req; #endif struct sock *netlink_sk; u8_t DeviceOpened; /* CWYang(+) */ u8_t supIe[50]; u8_t supLen; struct ieee80211req_wpaie stawpaie[ZM_OAL_MAX_STA_SUPPORT]; u8_t forwardMgmt; struct zfCbUsbFuncTbl usbCbFunctions; /* For keventd */ u32_t flags; unsigned long kevent_flags; u16_t kevent_ready; struct semaphore ioctl_sem; struct work_struct kevent; wait_queue_head_t wait_queue_event; #ifdef ZM_HALPLUS_LOCK unsigned long hal_irqFlag; #endif u16_t adapterState; }; /* WDS */ #define ZM_WDS_PORT_NUMBER 6 struct zsWdsStruct { struct net_device *dev; u16_t openFlag; }; /* VAP */ #define ZM_VAP_PORT_NUMBER 7 struct zsVapStruct { struct net_device *dev; u16_t openFlag; }; /***************************************/ #define ZM_IOCTL_REG_READ 0x01 #define ZM_IOCTL_REG_WRITE 0x02 #define ZM_IOCTL_MEM_DUMP 0x03 #define ZM_IOCTL_REG_DUMP 0x05 #define ZM_IOCTL_TXD_DUMP 0x06 #define ZM_IOCTL_RXD_DUMP 0x07 #define ZM_IOCTL_MEM_READ 0x0B #define ZM_IOCTL_MEM_WRITE 0x0C #define ZM_IOCTL_DMA_TEST 0x10 #define ZM_IOCTL_REG_TEST 0x11 #define ZM_IOCTL_TEST 0x80 #define ZM_IOCTL_TALLY 0x81 /* CWYang(+) */ #define ZM_IOCTL_RTS 0xA0 #define ZM_IOCTL_MIX_MODE 0xA1 #define ZM_IOCTL_FRAG 0xA2 #define ZM_IOCTL_SCAN 0xA3 #define ZM_IOCTL_KEY 0xA4 #define ZM_IOCTL_RATE 0xA5 #define ZM_IOCTL_ENCRYPTION_MODE 0xA6 #define ZM_IOCTL_GET_TXCNT 0xA7 #define ZM_IOCTL_GET_DEAGG_CNT 0xA8 #define ZM_IOCTL_DURATION_MODE 0xA9 #define ZM_IOCTL_SET_AES_KEY 0xAA #define ZM_IOCTL_SET_AES_MODE 0xAB #define ZM_IOCTL_SIGNAL_STRENGTH 0xAC /* CWYang(+) */ #define ZM_IOCTL_SIGNAL_QUALITY 0xAD /* CWYang(+) */ #define ZM_IOCTL_SET_PIBSS_MODE 0xAE #define ZDAPIOCTL SIOCDEVPRIVATE enum devState { Opened, Enabled, Disabled, Closed }; #endif /* _USBDRV_H */