blob: 728dd7dc7e00d4f40fc4213f65dabb498609c519 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam842dad02014-02-18 18:44:02 -08002 * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#ifndef __P2P_H
29#define __P2P_H
30/**===========================================================================
31
32\file wlan_hdd_p2p.h
33
34\brief Linux HDD P2P include file
Jeff Johnson295189b2012-06-20 16:38:30 -070035
36==========================================================================*/
Ganesh Kondabattinibabfb492014-12-17 20:25:29 +053037#include <linux/netdevice.h>
38#include <linux/inetdevice.h>
Sudhir Sattayappa Kohalli8ee532d2013-02-15 13:16:26 -080039#define ACTION_FRAME_TX_TIMEOUT 2000
Jeff Johnsone7245742012-09-05 17:12:55 -070040#define WAIT_CANCEL_REM_CHAN 1000
41#define WAIT_REM_CHAN_READY 1000
Jeff Johnson295189b2012-06-20 16:38:30 -070042#define WAIT_CHANGE_CHANNEL_FOR_OFFCHANNEL_TX 3000
Nirav Shah87cd0cb2013-12-28 21:22:09 +053043#define READY_EVENT_PROPOGATE_TIME 2
Jeff Johnson295189b2012-06-20 16:38:30 -070044
Jeff Johnsone7245742012-09-05 17:12:55 -070045#define ACTION_FRAME_DEFAULT_WAIT 200
46
vamsida0e5ab2013-12-26 14:33:27 +053047#define ESTIMATED_ROC_DUR_REQD_FOR_ACTION_TX 20
48
Jeff Johnson295189b2012-06-20 16:38:30 -070049#define WLAN_HDD_GET_TYPE_FRM_FC(__fc__) (((__fc__) & 0x0F) >> 2)
50#define WLAN_HDD_GET_SUBTYPE_FRM_FC(__fc__) (((__fc__) & 0xF0) >> 4)
51#define WLAN_HDD_80211_FRM_DA_OFFSET 4
52#define P2P_WILDCARD_SSID_LEN 7
53#define P2P_WILDCARD_SSID "DIRECT-"
Sushant Kaushik22257d62014-05-20 19:27:07 +053054#define ACTION_FRAME_RSP_WAIT 500
55#define ACTION_FRAME_ACK_WAIT 300
Chet Lanctot186b5732013-03-18 10:26:30 -070056#ifdef WLAN_FEATURE_11W
57#define WLAN_HDD_SET_WEP_FRM_FC(__fc__) ( (__fc__) = ((__fc__) | 0x40))
58#endif //WLAN_FEATURE_11W
59
Ganesh Kondabattinibabfb492014-12-17 20:25:29 +053060#define HDD_P2P_MAX_ROC_DURATION 1000
61
Jeff Johnson295189b2012-06-20 16:38:30 -070062enum hdd_rx_flags {
63 HDD_RX_FLAG_DECRYPTED = 1 << 0,
64 HDD_RX_FLAG_MMIC_STRIPPED = 1 << 1,
65 HDD_RX_FLAG_IV_STRIPPED = 1 << 2,
66};
67
68
Madan Mohan Koyyalamudic0d1b3f2012-11-13 10:41:07 -080069#define P2P_POWER_SAVE_TYPE_OPPORTUNISTIC (1 << 0)
70#define P2P_POWER_SAVE_TYPE_PERIODIC_NOA (1 << 1)
71#define P2P_POWER_SAVE_TYPE_SINGLE_NOA (1 << 2)
Jeff Johnson295189b2012-06-20 16:38:30 -070072
Madan Mohan Koyyalamudi26bd7142012-10-30 18:14:19 -070073#ifdef WLAN_FEATURE_P2P_DEBUG
74typedef enum { P2P_NOT_ACTIVE,
75 P2P_GO_NEG_PROCESS,
76 P2P_GO_NEG_COMPLETED,
77 P2P_CLIENT_CONNECTING_STATE_1,
78 P2P_GO_COMPLETED_STATE,
79 P2P_CLIENT_CONNECTED_STATE_1,
80 P2P_CLIENT_DISCONNECTED_STATE,
81 P2P_CLIENT_CONNECTING_STATE_2,
82 P2P_CLIENT_COMPLETED_STATE
83 }tP2PConnectionStatus;
84
85extern tP2PConnectionStatus globalP2PConnectionStatus;
86#endif
87
Jeff Johnson295189b2012-06-20 16:38:30 -070088typedef struct p2p_app_setP2pPs{
89 tANI_U8 opp_ps;
90 tANI_U32 ctWindow;
91 tANI_U8 count;
92 tANI_U32 duration;
93 tANI_U32 interval;
94 tANI_U32 single_noa_duration;
95 tANI_U8 psSelection;
96}p2p_app_setP2pPs_t;
97
98int wlan_hdd_cfg80211_remain_on_channel( struct wiphy *wiphy,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -080099#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
100 struct wireless_dev *wdev,
101#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700102 struct net_device *dev,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800103#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700104 struct ieee80211_channel *chan,
Yue Maf49ba872013-08-19 12:04:25 -0700105#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
Jeff Johnson295189b2012-06-20 16:38:30 -0700106 enum nl80211_channel_type channel_type,
Yue Maf49ba872013-08-19 12:04:25 -0700107#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700108 unsigned int duration, u64 *cookie );
109
110int wlan_hdd_cfg80211_cancel_remain_on_channel( struct wiphy *wiphy,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800111#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
112 struct wireless_dev *wdev,
113#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700114 struct net_device *dev,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800115#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700116 u64 cookie );
117
118#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
119int wlan_hdd_cfg80211_mgmt_tx_cancel_wait(struct wiphy *wiphy,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800120#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
121 struct wireless_dev *wdev,
122#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700123 struct net_device *dev,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800124#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700125 u64 cookie);
126#endif
127
128int hdd_setP2pPs( struct net_device *dev, void *msgData );
129int hdd_setP2pOpps( struct net_device *dev, tANI_U8 *command );
130int hdd_setP2pNoa( struct net_device *dev, tANI_U8 *command );
131
132void hdd_indicateMgmtFrame( hdd_adapter_t *pAdapter,
133 tANI_U32 nFrameLength, tANI_U8* pbFrames,
134 tANI_U8 frameType,
Chilam NG571c65a2013-01-19 12:27:36 +0530135 tANI_U32 rxChan, tANI_S8 rxRssi);
Jeff Johnson295189b2012-06-20 16:38:30 -0700136
137void hdd_remainChanReadyHandler( hdd_adapter_t *pAdapter );
138void hdd_sendActionCnf( hdd_adapter_t *pAdapter, tANI_BOOLEAN actionSendSuccess );
Jeff Johnson32d95a32012-09-10 13:15:23 -0700139int wlan_hdd_check_remain_on_channel(hdd_adapter_t *pAdapter);
Sushant Kaushik5ad9b7b2014-05-21 21:09:43 +0530140VOS_STATUS wlan_hdd_cancel_existing_remain_on_channel(hdd_adapter_t *pAdapter);
Jeff Johnson295189b2012-06-20 16:38:30 -0700141
Anand N Sunkade9adb1b2015-07-29 09:56:45 +0530142#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
143int wlan_hdd_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
144 struct cfg80211_mgmt_tx_params *params, u64 *cookie);
145#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
DARAM SUDHA39eede62014-02-12 11:16:40 +0530146int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct wireless_dev *wdev,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800147 struct ieee80211_channel *chan, bool offchan,
Yue Maf49ba872013-08-19 12:04:25 -0700148#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0))
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800149 enum nl80211_channel_type channel_type,
Yue Maf49ba872013-08-19 12:04:25 -0700150 bool channel_type_valid,
151#endif
152 unsigned int wait,
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800153 const u8 *buf, size_t len, bool no_cck,
154 bool dont_wait_for_ack, u64 *cookie );
155#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
DARAM SUDHA39eede62014-02-12 11:16:40 +0530156int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct net_device *dev,
Jeff Johnson295189b2012-06-20 16:38:30 -0700157 struct ieee80211_channel *chan, bool offchan,
158 enum nl80211_channel_type channel_type,
159 bool channel_type_valid, unsigned int wait,
160 const u8 *buf, size_t len, bool no_cck,
161 bool dont_wait_for_ack, u64 *cookie );
162#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
DARAM SUDHA39eede62014-02-12 11:16:40 +0530163int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct net_device *dev,
Jeff Johnson295189b2012-06-20 16:38:30 -0700164 struct ieee80211_channel *chan, bool offchan,
165 enum nl80211_channel_type channel_type,
166 bool channel_type_valid, unsigned int wait,
167 const u8 *buf, size_t len, u64 *cookie );
168#else
DARAM SUDHA39eede62014-02-12 11:16:40 +0530169int wlan_hdd_mgmt_tx( struct wiphy *wiphy, struct net_device *dev,
Jeff Johnson295189b2012-06-20 16:38:30 -0700170 struct ieee80211_channel *chan,
171 enum nl80211_channel_type channel_type,
172 bool channel_type_valid,
173 const u8 *buf, size_t len, u64 *cookie );
174#endif
175
Jeff Johnson295189b2012-06-20 16:38:30 -0700176
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800177#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
178struct wireless_dev* wlan_hdd_add_virtual_intf(
179 struct wiphy *wiphy, const char *name,
180 enum nl80211_iftype type,
181 u32 *flags, struct vif_params *params );
182#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
183struct wireless_dev* wlan_hdd_add_virtual_intf(
184 struct wiphy *wiphy, char *name, enum nl80211_iftype type,
185 u32 *flags, struct vif_params *params );
186#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
Jeff Johnson295189b2012-06-20 16:38:30 -0700187struct net_device* wlan_hdd_add_virtual_intf(
188 struct wiphy *wiphy, char *name, enum nl80211_iftype type,
189 u32 *flags, struct vif_params *params );
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800190#else
191int wlan_hdd_add_virtual_intf( struct wiphy *wiphy, char *name,
192 enum nl80211_iftype type,
193 u32 *flags, struct vif_params *params );
194#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700195
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800196#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
197int wlan_hdd_del_virtual_intf( struct wiphy *wiphy, struct wireless_dev *wdev );
198#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700199int wlan_hdd_del_virtual_intf( struct wiphy *wiphy, struct net_device *dev );
Jeff Johnson3bbe4bf2013-01-18 17:05:29 -0800200#endif
Ganesh Kondabattinibabfb492014-12-17 20:25:29 +0530201void hdd_p2p_roc_work_queue(struct work_struct *work);
Jeff Johnson295189b2012-06-20 16:38:30 -0700202#endif // __P2P_H