1 /* 2 * hdf_wl_interface.h 3 * 4 * hdf driver 5 * 6 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 2 11 * of the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef HDF_WL_INTERFACE_H 24 #define HDF_WL_INTERFACE_H 25 #include <net/cfg80211.h> 26 #include <linux/netdevice.h> 27 #include "net_device.h" 28 29 enum hdf_inf_type { 30 HDF_INF_WLAN0 = 0, 31 HDF_INF_P2P0, 32 HDF_INF_P2P1, 33 HDF_INF_AP0, 34 HDF_INF_MAX 35 }; 36 37 struct hdf_eapol_event_s { 38 struct work_struct eapol_report; 39 NetBufQueue eapolQueue; 40 int32_t idx; 41 }; 42 43 struct hdf_inf_map { 44 struct NetDevice *hnetdev; 45 struct net_device *netdev; 46 struct wireless_dev *wdev; 47 u8 macaddr[ETH_ALEN]; 48 struct hdf_eapol_event_s eapolEvent; 49 }; 50 51 struct InnerConnetResult { 52 uint8_t *bssid; /**< MAC address of the AP associated with the station */ 53 uint16_t statusCode; /**< 16-bit status code defined in the IEEE protocol */ 54 uint8_t *rspIe; /**< Association response IE */ 55 uint8_t *reqIe; /**< Association request IE */ 56 uint32_t reqIeLen; /**< Length of the association request IE */ 57 uint32_t rspIeLen; /**< Length of the association response IE */ 58 uint16_t connectStatus; /**< Connection status */ 59 uint16_t freq; /**< Frequency of the AP */ 60 }; 61 62 struct InnerBssInfo { 63 struct ieee80211_channel *channel; 64 int32_t signal; 65 int16_t freq; 66 struct ieee80211_mgmt *mgmt; 67 uint32_t mgmtLen; 68 }; 69 70 static inline int bdh6_hdf_vxx_lock(struct wireless_dev *vxx, int pad) __acquires(vxx)71 __acquires(vxx) 72 { 73 pad = 0; 74 mutex_lock(&vxx->mtx); 75 __acquire(vxx->mtx); 76 return pad; 77 } 78 79 static inline int bdh6_hdf_vxx_unlock(struct wireless_dev *vxx, int pad) __releases(vxx)80 __releases(vxx) 81 { 82 pad = 1; 83 __release(vxx->mtx); 84 mutex_unlock(&vxx->mtx); 85 return pad; 86 } 87 88 void eapol_report_handler(struct work_struct *work_data); 89 #endif 90