blob: 0273d3f667d67f7ba70c224eb686211342f0df8a [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-01-08 21:16:34 -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.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42#ifndef __P2P_H
43#define __P2P_H
44/**===========================================================================
45
46\file wlan_hdd_p2p.h
47
48\brief Linux HDD P2P include file
49 Copyright 2008 (c) Qualcomm, Incorporated.
50 All Rights Reserved.
51 Qualcomm Confidential and Proprietary.
52
53==========================================================================*/
54#ifdef CONFIG_CFG80211
55#define ACTION_FRAME_TX_TIMEOUT 1000
Jeff Johnsone7245742012-09-05 17:12:55 -070056#define WAIT_CANCEL_REM_CHAN 1000
57#define WAIT_REM_CHAN_READY 1000
Jeff Johnson295189b2012-06-20 16:38:30 -070058#define WAIT_CHANGE_CHANNEL_FOR_OFFCHANNEL_TX 3000
59
Jeff Johnsone7245742012-09-05 17:12:55 -070060#define ACTION_FRAME_DEFAULT_WAIT 200
61
Jeff Johnson295189b2012-06-20 16:38:30 -070062#define WLAN_HDD_GET_TYPE_FRM_FC(__fc__) (((__fc__) & 0x0F) >> 2)
63#define WLAN_HDD_GET_SUBTYPE_FRM_FC(__fc__) (((__fc__) & 0xF0) >> 4)
64#define WLAN_HDD_80211_FRM_DA_OFFSET 4
65#define P2P_WILDCARD_SSID_LEN 7
66#define P2P_WILDCARD_SSID "DIRECT-"
67
68enum hdd_rx_flags {
69 HDD_RX_FLAG_DECRYPTED = 1 << 0,
70 HDD_RX_FLAG_MMIC_STRIPPED = 1 << 1,
71 HDD_RX_FLAG_IV_STRIPPED = 1 << 2,
72};
73
74
75#ifdef WLAN_FEATURE_P2P
Madan Mohan Koyyalamudic0d1b3f2012-11-13 10:41:07 -080076#define P2P_POWER_SAVE_TYPE_OPPORTUNISTIC (1 << 0)
77#define P2P_POWER_SAVE_TYPE_PERIODIC_NOA (1 << 1)
78#define P2P_POWER_SAVE_TYPE_SINGLE_NOA (1 << 2)
Jeff Johnson295189b2012-06-20 16:38:30 -070079
Madan Mohan Koyyalamudi26bd7142012-10-30 18:14:19 -070080#ifdef WLAN_FEATURE_P2P_DEBUG
81typedef enum { P2P_NOT_ACTIVE,
82 P2P_GO_NEG_PROCESS,
83 P2P_GO_NEG_COMPLETED,
84 P2P_CLIENT_CONNECTING_STATE_1,
85 P2P_GO_COMPLETED_STATE,
86 P2P_CLIENT_CONNECTED_STATE_1,
87 P2P_CLIENT_DISCONNECTED_STATE,
88 P2P_CLIENT_CONNECTING_STATE_2,
89 P2P_CLIENT_COMPLETED_STATE
90 }tP2PConnectionStatus;
91
92extern tP2PConnectionStatus globalP2PConnectionStatus;
93#endif
94
Jeff Johnson295189b2012-06-20 16:38:30 -070095typedef struct p2p_app_setP2pPs{
96 tANI_U8 opp_ps;
97 tANI_U32 ctWindow;
98 tANI_U8 count;
99 tANI_U32 duration;
100 tANI_U32 interval;
101 tANI_U32 single_noa_duration;
102 tANI_U8 psSelection;
103}p2p_app_setP2pPs_t;
104
105int wlan_hdd_cfg80211_remain_on_channel( struct wiphy *wiphy,
106 struct net_device *dev,
107 struct ieee80211_channel *chan,
108 enum nl80211_channel_type channel_type,
109 unsigned int duration, u64 *cookie );
110
111int wlan_hdd_cfg80211_cancel_remain_on_channel( struct wiphy *wiphy,
112 struct net_device *dev,
113 u64 cookie );
114
115#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
116int wlan_hdd_cfg80211_mgmt_tx_cancel_wait(struct wiphy *wiphy,
117 struct net_device *dev,
118 u64 cookie);
119#endif
120
121int hdd_setP2pPs( struct net_device *dev, void *msgData );
122int hdd_setP2pOpps( struct net_device *dev, tANI_U8 *command );
123int hdd_setP2pNoa( struct net_device *dev, tANI_U8 *command );
124
125void hdd_indicateMgmtFrame( hdd_adapter_t *pAdapter,
126 tANI_U32 nFrameLength, tANI_U8* pbFrames,
127 tANI_U8 frameType,
128 tANI_U32 rxChan);
129
130void hdd_remainChanReadyHandler( hdd_adapter_t *pAdapter );
131void hdd_sendActionCnf( hdd_adapter_t *pAdapter, tANI_BOOLEAN actionSendSuccess );
Jeff Johnson32d95a32012-09-10 13:15:23 -0700132int wlan_hdd_check_remain_on_channel(hdd_adapter_t *pAdapter);
Jeff Johnson295189b2012-06-20 16:38:30 -0700133
134#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
135int wlan_hdd_action( struct wiphy *wiphy, struct net_device *dev,
136 struct ieee80211_channel *chan, bool offchan,
137 enum nl80211_channel_type channel_type,
138 bool channel_type_valid, unsigned int wait,
139 const u8 *buf, size_t len, bool no_cck,
140 bool dont_wait_for_ack, u64 *cookie );
141#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
142int wlan_hdd_action( struct wiphy *wiphy, struct net_device *dev,
143 struct ieee80211_channel *chan, bool offchan,
144 enum nl80211_channel_type channel_type,
145 bool channel_type_valid, unsigned int wait,
146 const u8 *buf, size_t len, u64 *cookie );
147#else
148int wlan_hdd_action( struct wiphy *wiphy, struct net_device *dev,
149 struct ieee80211_channel *chan,
150 enum nl80211_channel_type channel_type,
151 bool channel_type_valid,
152 const u8 *buf, size_t len, u64 *cookie );
153#endif
154
155#endif // WLAN_FEATURE_P2P
156
157struct net_device* wlan_hdd_add_virtual_intf(
158 struct wiphy *wiphy, char *name, enum nl80211_iftype type,
159 u32 *flags, struct vif_params *params );
160
161int wlan_hdd_del_virtual_intf( struct wiphy *wiphy, struct net_device *dev );
162
163#endif // CONFIG_CFG80211
164
165#endif // __P2P_H