1 /* 2 * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #ifndef __WLAN_HDD_P2P_LISTEN_OFFLOAD_H 21 #define __WLAN_HDD_P2P_LISTEN_OFFLOAD_H 22 23 /** 24 * DOC: wlan_hdd_p2p_listen_offload_h 25 * 26 * WLAN Host Device Driver p2p listen offload API specification 27 */ 28 29 #ifdef FEATURE_P2P_LISTEN_OFFLOAD 30 /** 31 * wlan_hdd_cfg80211_p2p_lo_start() - start P2P Listen Offload 32 * @wiphy: Pointer to wireless phy 33 * @wdev: Pointer to wireless device 34 * @data: Pointer to data 35 * @data_len: Data length 36 * 37 * This function is to process the p2p listen offload start vendor 38 * command. It parses the input parameters and invoke WMA API to 39 * send the command to firmware. 40 * 41 * Return: 0 on success, negative errno on failure 42 */ 43 int wlan_hdd_cfg80211_p2p_lo_start(struct wiphy *wiphy, 44 struct wireless_dev *wdev, 45 const void *data, 46 int data_len); 47 48 /** 49 * wlan_hdd_cfg80211_p2p_lo_stop() - stop P2P Listen Offload 50 * @wiphy: Pointer to wireless phy 51 * @wdev: Pointer to wireless device 52 * @data: Pointer to data 53 * @data_len: Data length 54 * 55 * This function inovkes internal __wlan_hdd_cfg80211_p2p_lo_stop() 56 * to process p2p listen offload stop vendor command. 57 * 58 * Return: 0 on success, negative errno on failure 59 */ 60 int wlan_hdd_cfg80211_p2p_lo_stop(struct wiphy *wiphy, 61 struct wireless_dev *wdev, 62 const void *data, 63 int data_len); 64 65 extern const struct nla_policy 66 p2p_listen_offload_policy[QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX + 1]; 67 68 #define FEATURE_P2P_LISTEN_OFFLOAD_VENDOR_COMMANDS \ 69 { \ 70 .info.vendor_id = QCA_NL80211_VENDOR_ID, \ 71 .info.subcmd = \ 72 QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_START, \ 73 .flags = WIPHY_VENDOR_CMD_NEED_WDEV | \ 74 WIPHY_VENDOR_CMD_NEED_NETDEV | \ 75 WIPHY_VENDOR_CMD_NEED_RUNNING, \ 76 .doit = wlan_hdd_cfg80211_p2p_lo_start, \ 77 vendor_command_policy(p2p_listen_offload_policy, \ 78 QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX)\ 79 }, \ 80 { \ 81 .info.vendor_id = QCA_NL80211_VENDOR_ID, \ 82 .info.subcmd = \ 83 QCA_NL80211_VENDOR_SUBCMD_P2P_LISTEN_OFFLOAD_STOP, \ 84 .flags = WIPHY_VENDOR_CMD_NEED_WDEV | \ 85 WIPHY_VENDOR_CMD_NEED_NETDEV | \ 86 WIPHY_VENDOR_CMD_NEED_RUNNING, \ 87 .doit = wlan_hdd_cfg80211_p2p_lo_stop, \ 88 vendor_command_policy(p2p_listen_offload_policy, \ 89 QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_MAX)\ 90 }, 91 #else /* FEATURE_P2P_LISTEN_OFFLOAD */ 92 #define FEATURE_P2P_LISTEN_OFFLOAD_VENDOR_COMMANDS 93 #endif /* FEATURE_P2P_LISTEN_OFFLOAD */ 94 95 #endif /* __WLAN_HDD_P2P_LISTEN_OFFLOAD_H */ 96 97