1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2012-2015,2020-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for any 6*5113495bSYour Name * purpose with or without fee is hereby granted, provided that the above 7*5113495bSYour Name * copyright notice and this permission notice appear in all copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*5113495bSYour Name * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*5113495bSYour Name * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*5113495bSYour Name * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*5113495bSYour Name * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*5113495bSYour Name * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*5113495bSYour Name * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*5113495bSYour Name */ 17*5113495bSYour Name 18*5113495bSYour Name /** 19*5113495bSYour Name * DOC: osif_cm_req.h 20*5113495bSYour Name * 21*5113495bSYour Name * This header file maintains declarations of connect, disconnect, roam 22*5113495bSYour Name * request apis. 23*5113495bSYour Name */ 24*5113495bSYour Name 25*5113495bSYour Name #ifndef __OSIF_CM_REQ_H 26*5113495bSYour Name #define __OSIF_CM_REQ_H 27*5113495bSYour Name 28*5113495bSYour Name #include "qdf_status.h" 29*5113495bSYour Name #include "wlan_cm_public_struct.h" 30*5113495bSYour Name #include <net/cfg80211.h> 31*5113495bSYour Name #include "wlan_objmgr_vdev_obj.h" 32*5113495bSYour Name #include "wlan_osif_features.h" 33*5113495bSYour Name 34*5113495bSYour Name #define FEATURE_DRIVER_DISCONNECT_REASON \ 35*5113495bSYour Name [QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON_INDEX] = { \ 36*5113495bSYour Name .vendor_id = QCA_NL80211_VENDOR_ID, \ 37*5113495bSYour Name .subcmd = QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON, \ 38*5113495bSYour Name }, 39*5113495bSYour Name 40*5113495bSYour Name /** 41*5113495bSYour Name * struct osif_connect_params - extra connect params 42*5113495bSYour Name * @scan_ie: default scan ie to be used in connect scan and unicast probe req 43*5113495bSYour Name * during connect 44*5113495bSYour Name * @force_rsne_override: force the arbitrary rsne received in connect req to be 45*5113495bSYour Name * used with out validation, used for the scenarios where the device is used 46*5113495bSYour Name * as a testbed device with special functionality and not recommended 47*5113495bSYour Name * for production. 48*5113495bSYour Name * @dot11mode_filter: dot11mode filter used to restrict connection to 49*5113495bSYour Name * 11n/11ac/11ax. 50*5113495bSYour Name * @sae_pwe: SAE mechanism for PWE derivation 51*5113495bSYour Name * 0 = hunting-and-pecking loop only 52*5113495bSYour Name * 1 = hash-to-element only 53*5113495bSYour Name * 2 = both hunting-and-pecking loop and hash-to-element enabled 54*5113495bSYour Name * @prev_bssid: Previous bssid in case of roam scenario 55*5113495bSYour Name */ 56*5113495bSYour Name struct osif_connect_params { 57*5113495bSYour Name struct element_info scan_ie; 58*5113495bSYour Name bool force_rsne_override; 59*5113495bSYour Name enum dot11_mode_filter dot11mode_filter; 60*5113495bSYour Name uint8_t sae_pwe; 61*5113495bSYour Name struct qdf_mac_addr prev_bssid; 62*5113495bSYour Name }; 63*5113495bSYour Name 64*5113495bSYour Name #ifdef CFG80211_MULTI_AKM_CONNECT_SUPPORT 65*5113495bSYour Name #define WLAN_CM_MAX_CONNECT_AKMS 5 66*5113495bSYour Name #endif 67*5113495bSYour Name 68*5113495bSYour Name #if defined(WLAN_FEATURE_FILS_SK) && \ 69*5113495bSYour Name (defined(CFG80211_FILS_SK_OFFLOAD_SUPPORT) || \ 70*5113495bSYour Name (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0))) 71*5113495bSYour Name /** 72*5113495bSYour Name * osif_cm_get_fils_auth_type() - get fils auth type 73*5113495bSYour Name * @auth: nl auth type 74*5113495bSYour Name * 75*5113495bSYour Name * Return: enum wlan_fils_auth_type 76*5113495bSYour Name */ 77*5113495bSYour Name enum wlan_fils_auth_type 78*5113495bSYour Name osif_cm_get_fils_auth_type(enum nl80211_auth_type auth); 79*5113495bSYour Name #endif 80*5113495bSYour Name 81*5113495bSYour Name /** 82*5113495bSYour Name * osif_cm_connect() - Connect start request 83*5113495bSYour Name * @dev: net dev 84*5113495bSYour Name * @vdev: vdev pointer 85*5113495bSYour Name * @req: connect req 86*5113495bSYour Name * @params: connect params 87*5113495bSYour Name * 88*5113495bSYour Name * Return: int 89*5113495bSYour Name */ 90*5113495bSYour Name int osif_cm_connect(struct net_device *dev, struct wlan_objmgr_vdev *vdev, 91*5113495bSYour Name const struct cfg80211_connect_params *req, 92*5113495bSYour Name const struct osif_connect_params *params); 93*5113495bSYour Name 94*5113495bSYour Name /** 95*5113495bSYour Name * osif_cm_disconnect() - Disconnect start request 96*5113495bSYour Name * @dev: net dev 97*5113495bSYour Name * @vdev: vdev pointer 98*5113495bSYour Name * @reason: disconnect reason 99*5113495bSYour Name * 100*5113495bSYour Name * Return: int 101*5113495bSYour Name */ 102*5113495bSYour Name int osif_cm_disconnect(struct net_device *dev, struct wlan_objmgr_vdev *vdev, 103*5113495bSYour Name uint16_t reason); 104*5113495bSYour Name 105*5113495bSYour Name /** 106*5113495bSYour Name * osif_cm_disconnect_sync() - Disconnect vdev and wait for it to complete 107*5113495bSYour Name * @vdev: vdev pointer 108*5113495bSYour Name * @reason: disconnect reason 109*5113495bSYour Name * 110*5113495bSYour Name * Return: int 111*5113495bSYour Name */ 112*5113495bSYour Name int osif_cm_disconnect_sync(struct wlan_objmgr_vdev *vdev, uint16_t reason); 113*5113495bSYour Name 114*5113495bSYour Name #endif /* __OSIF_CM_REQ_H */ 115