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__ */