1364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger/******************************************************************************
2364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger *
3364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger *
5364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * This program is free software; you can redistribute it and/or modify it
6364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * under the terms of version 2 of the GNU General Public License as
7364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * published by the Free Software Foundation.
8364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger *
9364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT
10364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger * more details.
13364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger *
14364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger ******************************************************************************/
15364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#ifndef __IOCTL_CFG80211_H__
16364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#define __IOCTL_CFG80211_H__
17364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
18364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingerstruct rtw_wdev_priv {
19364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	struct wireless_dev *rtw_wdev;
20364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
21364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	struct rtw_adapter *padapter;
22364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
23364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	struct cfg80211_scan_request *scan_request;
24364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	spinlock_t scan_req_lock;
25364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
26364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	struct net_device *pmon_ndev;/* for monitor interface */
27364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	char ifname_mon[IFNAMSIZ + 1]; /* name for monitor interface */
28364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
29364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	u8 p2p_enabled;
30364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
31364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	bool power_mgmt;
32364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger};
33364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
34364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#define wdev_to_priv(w) ((struct rtw_wdev_priv *)(wdev_priv(w)))
35364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
36364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#define wiphy_to_adapter(x)					\
37364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	(struct rtw_adapter *)(((struct rtw_wdev_priv *)	\
38364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	wiphy_priv(x))->padapter)
39364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
40364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#define wiphy_to_wdev(x)					\
41364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	(struct wireless_dev *)(((struct rtw_wdev_priv *)	\
42364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger	wiphy_priv(x))->rtw_wdev)
43364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
44364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingerint rtw_wdev_alloc(struct rtw_adapter *padapter, struct device *dev);
45364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_wdev_free(struct wireless_dev *wdev);
46364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_wdev_unregister(struct wireless_dev *wdev);
47364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
48364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_init_wiphy(struct rtw_adapter *padapter);
49364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
50364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_surveydone_event_callback(struct rtw_adapter *padapter);
51364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
52364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_indicate_connect(struct rtw_adapter *padapter);
53364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_indicate_disconnect(struct rtw_adapter *padapter);
54364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv,
55364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger				     bool aborted);
56364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
57364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#ifdef CONFIG_8723AU_AP_MODE
58364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_indicate_sta_assoc(struct rtw_adapter *padapter,
59364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger				     u8 *pmgmt_frame, uint frame_len);
60364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingervoid rtw_cfg80211_indicate_sta_disassoc(struct rtw_adapter *padapter,
61364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger					unsigned char *da, unsigned short reason);
62364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#endif /* CONFIG_8723AU_AP_MODE */
63364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
64364e30ebd2dbaccba430c603da03e68746eb932aLarry Fingerbool rtw_cfg80211_pwr_mgmt(struct rtw_adapter *adapter);
65364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger
66364e30ebd2dbaccba430c603da03e68746eb932aLarry Finger#endif /* __IOCTL_CFG80211_H__ */
67