2 *************************************************************************
4 * 5F., No.36, Taiyuan St., Jhubei City,
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
15 * This program is distributed in the hope that it will be useful, *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 * GNU General Public License for more details. *
20 * You should have received a copy of the GNU General Public License *
21 * along with this program; if not, write to the *
22 * Free Software Foundation, Inc., *
23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
25 *************************************************************************
28 #ifndef __RTMP_USB_H__
29 #define __RTMP_USB_H__
31 #include "../rtusb_io.h"
34 #include <linux/usb.h>
37 extern u8 EpToQueue[6];
39 #define RXBULKAGGRE_ZISE 12
40 #define MAX_TXBULK_LIMIT (LOCAL_TXBUF_SIZE*(BULKAGGRE_ZISE-1))
41 #define MAX_TXBULK_SIZE (LOCAL_TXBUF_SIZE*BULKAGGRE_ZISE)
42 #define MAX_RXBULK_SIZE (LOCAL_TXBUF_SIZE*RXBULKAGGRE_ZISE)
43 #define MAX_MLME_HANDLER_MEMORY 20
45 /* Flags for Bulkflags control for bulk out data */
46 #define fRTUSB_BULK_OUT_DATA_NULL 0x00000001
47 #define fRTUSB_BULK_OUT_RTS 0x00000002
48 #define fRTUSB_BULK_OUT_MLME 0x00000004
50 #define fRTUSB_BULK_OUT_PSPOLL 0x00000010
51 #define fRTUSB_BULK_OUT_DATA_FRAG 0x00000020
52 #define fRTUSB_BULK_OUT_DATA_FRAG_2 0x00000040
53 #define fRTUSB_BULK_OUT_DATA_FRAG_3 0x00000080
54 #define fRTUSB_BULK_OUT_DATA_FRAG_4 0x00000100
56 #define fRTUSB_BULK_OUT_DATA_NORMAL 0x00010000
57 #define fRTUSB_BULK_OUT_DATA_NORMAL_2 0x00020000
58 #define fRTUSB_BULK_OUT_DATA_NORMAL_3 0x00040000
59 #define fRTUSB_BULK_OUT_DATA_NORMAL_4 0x00080000
61 /* TODO:move to ./ate/include/iface/ate_usb.h */
63 #define FREE_HTTX_RING(_pCookie, _pipeId, _txContext) \
65 if ((_txContext)->ENextBulkOutPosition == \
66 (_txContext)->CurWritePosition) {\
67 (_txContext)->bRingEmpty = TRUE; \
69 /*NdisInterlockedDecrement(&(_p)->TxCount); */\
72 /******************************************************************************
74 USB Bulk operation related definitions
76 ******************************************************************************/
79 #define BULKAGGRE_ZISE 100
80 #define RT28XX_PUT_DEVICE usb_put_dev
81 #define RTUSB_ALLOC_URB(iso) usb_alloc_urb(iso, GFP_ATOMIC)
82 #define RTUSB_SUBMIT_URB(pUrb) usb_submit_urb(pUrb, \
84 #define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, \
92 #define RTUSB_URB_FREE_BUFFER(pUsb_Dev, \
102 #define RTUSB_FREE_URB(pUrb) usb_free_urb(pUrb)
105 #define RTUSB_UNLINK_URB(pUrb) usb_kill_urb(pUrb)
107 extern void dump_urb(struct urb *purb);
109 #define InterlockedIncrement atomic_inc
110 #define NdisInterlockedIncrement atomic_inc
111 #define InterlockedDecrement atomic_dec
112 #define NdisInterlockedDecrement atomic_dec
113 #define InterlockedExchange atomic_set
117 #define NT_SUCCESS(status) (((status) >= 0) ? (TRUE) : (FALSE))
119 #define USBD_TRANSFER_DIRECTION_OUT 0
120 #define USBD_TRANSFER_DIRECTION_IN 0
121 #define USBD_SHORT_TRANSFER_OK 0
122 #define PURB struct urb *
126 #ifndef USB_ST_NOERROR
127 #define USB_ST_NOERROR 0
130 /* vendor-specific control operations */
131 #define CONTROL_TIMEOUT_JIFFIES ((100 * OS_HZ) / 1000)
132 #define UNLINK_TIMEOUT_MS 3
134 void RTUSBBulkOutDataPacketComplete(struct urb *purb, struct pt_regs *pt_regs);
135 void RTUSBBulkOutMLMEPacketComplete(struct urb *pUrb, struct pt_regs *pt_regs);
136 void RTUSBBulkOutNullFrameComplete(struct urb *pUrb, struct pt_regs *pt_regs);
137 void RTUSBBulkOutRTSFrameComplete(struct urb *pUrb, struct pt_regs *pt_regs);
138 void RTUSBBulkOutPsPollComplete(struct urb *pUrb, struct pt_regs *pt_regs);
139 void RTUSBBulkRxComplete(struct urb *pUrb, struct pt_regs *pt_regs);
141 #ifdef KTHREAD_SUPPORT
142 #define RTUSBMlmeUp(pAd) \
144 struct rt_rtmp_os_task *_pTask = &((pAd)->mlmeTask);\
145 if (_pTask->kthread_task) {\
146 _pTask->kthread_running = TRUE; \
147 wake_up(&_pTask->kthread_q); \
151 #define RTUSBMlmeUp(pAd) \
153 struct rt_rtmp_os_task *_pTask = &((pAd)->mlmeTask);\
154 CHECK_PID_LEGALITY(_pTask->taskPID) \
156 RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
161 #ifdef KTHREAD_SUPPORT
162 #define RTUSBCMDUp(pAd) \
164 struct rt_rtmp_os_task *_pTask = &((pAd)->cmdQTask); \
166 _pTask->kthread_running = TRUE; \
167 wake_up(&_pTask->kthread_q); \
172 #define RTUSBCMDUp(pAd) \
174 struct rt_rtmp_os_task *_pTask = &((pAd)->cmdQTask); \
175 CHECK_PID_LEGALITY(_pTask->taskPID) \
177 RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
182 #define DEVICE_VENDOR_REQUEST_OUT 0x40
183 #define DEVICE_VENDOR_REQUEST_IN 0xc0
184 /*#define INTERFACE_VENDOR_REQUEST_OUT 0x41*/
185 /*#define INTERFACE_VENDOR_REQUEST_IN 0xc1*/
187 #define BULKOUT_MGMT_RESET_FLAG 0x80
189 #define RTUSB_SET_BULK_FLAG(_M, _F) ((_M)->BulkFlags |= (_F))
190 #define RTUSB_CLEAR_BULK_FLAG(_M, _F) ((_M)->BulkFlags &= ~(_F))
191 #define RTUSB_TEST_BULK_FLAG(_M, _F) (((_M)->BulkFlags & (_F)) != 0)
193 #define RTMP_IRQ_REQUEST(net_dev) do {} while (0)
194 #define RTMP_IRQ_RELEASE(net_dev) do {} while (0)
196 #endif /* __RTMP_USB_H__ */