]>
git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - drivers/staging/rtl8723au/include/osdep_service.h
1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 ******************************************************************************/
15 #ifndef __OSDEP_SERVICE_H_
16 #define __OSDEP_SERVICE_H_
20 #define RTW_RX_HANDLED 2
22 #include <linux/version.h>
23 #include <linux/spinlock.h>
24 #include <linux/compiler.h>
25 #include <linux/kernel.h>
26 #include <linux/errno.h>
27 #include <linux/init.h>
28 #include <linux/slab.h>
29 #include <linux/module.h>
30 #include <linux/kref.h>
31 #include <linux/netdevice.h>
32 #include <linux/skbuff.h>
33 #include <linux/circ_buf.h>
34 #include <asm/uaccess.h>
35 #include <asm/byteorder.h>
36 #include <asm/atomic.h>
38 #include <linux/semaphore.h>
39 #include <linux/sem.h>
40 #include <linux/sched.h>
41 #include <linux/etherdevice.h>
42 #include <linux/wireless.h>
43 #include <net/iw_handler.h>
44 #include <linux/if_arp.h>
45 #include <linux/rtnetlink.h>
46 #include <linux/delay.h>
47 #include <linux/proc_fs.h> /* Necessary because we use the proc fs */
48 #include <linux/interrupt.h> /* for struct tasklet_struct */
50 #include <linux/kthread.h>
53 /* #include <linux/ieee80211.h> */
54 #include <net/ieee80211_radiotap.h>
55 #include <net/cfg80211.h>
56 #include <linux/usb.h>
57 #include <linux/usb/ch9.h>
62 typedef s32 (*c2h_id_filter
)(u8 id
);
65 struct list_head queue
;
69 static inline struct list_head
*get_list_head(struct rtw_queue
*queue
)
71 return (&queue
->queue
);
74 static inline int rtw_netif_queue_stopped(struct net_device
*pnetdev
)
76 return (netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev
, 0)) &&
77 netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev
, 1)) &&
78 netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev
, 2)) &&
79 netif_tx_queue_stopped(netdev_get_tx_queue(pnetdev
, 3)) );
83 #define BIT(x) ( 1 << (x))
85 static inline u32
CHKBIT(u32 x
)
93 #define BIT0 0x00000001
94 #define BIT1 0x00000002
95 #define BIT2 0x00000004
96 #define BIT3 0x00000008
97 #define BIT4 0x00000010
98 #define BIT5 0x00000020
99 #define BIT6 0x00000040
100 #define BIT7 0x00000080
101 #define BIT8 0x00000100
102 #define BIT9 0x00000200
103 #define BIT10 0x00000400
104 #define BIT11 0x00000800
105 #define BIT12 0x00001000
106 #define BIT13 0x00002000
107 #define BIT14 0x00004000
108 #define BIT15 0x00008000
109 #define BIT16 0x00010000
110 #define BIT17 0x00020000
111 #define BIT18 0x00040000
112 #define BIT19 0x00080000
113 #define BIT20 0x00100000
114 #define BIT21 0x00200000
115 #define BIT22 0x00400000
116 #define BIT23 0x00800000
117 #define BIT24 0x01000000
118 #define BIT25 0x02000000
119 #define BIT26 0x04000000
120 #define BIT27 0x08000000
121 #define BIT28 0x10000000
122 #define BIT29 0x20000000
123 #define BIT30 0x40000000
124 #define BIT31 0x80000000
125 #define BIT32 0x0100000000
126 #define BIT33 0x0200000000
127 #define BIT34 0x0400000000
128 #define BIT35 0x0800000000
129 #define BIT36 0x1000000000
131 int RTW_STATUS_CODE23a(int error_code
);
133 u8
* _rtw_vmalloc(u32 sz
);
134 u8
* _rtw_zvmalloc(u32 sz
);
135 void _rtw_vmfree(u8
*pbuf
, u32 sz
);
136 #define rtw_vmalloc(sz) _rtw_vmalloc((sz))
137 #define rtw_zvmalloc(sz) _rtw_zvmalloc((sz))
138 #define rtw_vmfree(pbuf, sz) _rtw_vmfree((pbuf), (sz))
140 extern unsigned char REALTEK_96B_IE23A
[];
141 extern unsigned char MCS_rate_2R23A
[16];
142 extern unsigned char RTW_WPA_OUI23A
[];
143 extern unsigned char WPA_TKIP_CIPHER23A
[4];
144 extern unsigned char RSN_TKIP_CIPHER23A
[4];
146 extern unsigned char MCS_rate_2R23A
[16];
147 extern unsigned char MCS_rate_1R23A
[16];
149 void _rtw_init_queue23a(struct rtw_queue
*pqueue
);
150 u32
_rtw_queue_empty23a(struct rtw_queue
*pqueue
);
152 static inline u32
bitshift(u32 bitmask
)
156 for (i
= 0; i
<= 31; i
++)
157 if (((bitmask
>>i
) & 0x1) == 1) break;
162 void rtw_suspend_lock_init(void);
163 void rtw_suspend_lock_uninit(void);
164 void rtw_lock_suspend(void);
165 void rtw_unlock_suspend(void);
168 #define NDEV_FMT "%s"
169 #define NDEV_ARG(ndev) ndev->name
170 #define ADPT_FMT "%s"
171 #define ADPT_ARG(adapter) adapter->pnetdev->name
172 #define FUNC_NDEV_FMT "%s(%s)"
173 #define FUNC_NDEV_ARG(ndev) __func__, ndev->name
174 #define FUNC_ADPT_FMT "%s(%s)"
175 #define FUNC_ADPT_ARG(adapter) __func__, adapter->pnetdev->name
177 #define rtw_signal_process(pid, sig) kill_pid(find_vpid((pid)),(sig), 1)
179 u64
rtw_modular6423a(u64 x
, u64 y
);
180 u64
rtw_division6423a(u64 x
, u64 y
);
183 /* Macros for handling unaligned memory accesses */
185 #define RTW_GET_BE24(a) ((((u32) (a)[0]) << 16) | (((u32) (a)[1]) << 8) | \
196 bool rtw_cbuf_full23a(struct rtw_cbuf
*cbuf
);
197 bool rtw_cbuf_empty23a(struct rtw_cbuf
*cbuf
);
198 bool rtw_cbuf_push23a(struct rtw_cbuf
*cbuf
, void *buf
);
199 void *rtw_cbuf_pop23a(struct rtw_cbuf
*cbuf
);
200 struct rtw_cbuf
*rtw_cbuf_alloc23a(u32 size
);
201 void rtw_cbuf_free(struct rtw_cbuf
*cbuf
);
202 int rtw_change_ifname(struct rtw_adapter
*padapter
, const char *ifname
);
203 s32
c2h_evt_hdl(struct rtw_adapter
*adapter
, struct c2h_evt_hdr
*c2h_evt
, c2h_id_filter filter
);
204 void indicate_wx_scan_complete_event(struct rtw_adapter
*padapter
);
205 u8
rtw_do_join23a(struct rtw_adapter
*padapter
);