1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (C) 2020 Google Corporation 4 */ 5 6 #define MSFT_FEATURE_MASK_BREDR_RSSI_MONITOR BIT(0) 7 #define MSFT_FEATURE_MASK_LE_CONN_RSSI_MONITOR BIT(1) 8 #define MSFT_FEATURE_MASK_LE_ADV_RSSI_MONITOR BIT(2) 9 #define MSFT_FEATURE_MASK_LE_ADV_MONITOR BIT(3) 10 #define MSFT_FEATURE_MASK_CURVE_VALIDITY BIT(4) 11 #define MSFT_FEATURE_MASK_CONCURRENT_ADV_MONITOR BIT(5) 12 13 #if IS_ENABLED(CONFIG_BT_MSFTEXT) 14 15 bool msft_monitor_supported(struct hci_dev *hdev); 16 void msft_register(struct hci_dev *hdev); 17 void msft_unregister(struct hci_dev *hdev); 18 void msft_do_open(struct hci_dev *hdev); 19 void msft_do_close(struct hci_dev *hdev); 20 void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb); 21 __u64 msft_get_features(struct hci_dev *hdev); 22 int msft_add_monitor_pattern(struct hci_dev *hdev, struct adv_monitor *monitor); 23 int msft_remove_monitor(struct hci_dev *hdev, struct adv_monitor *monitor, 24 u16 handle); 25 void msft_req_add_set_filter_enable(struct hci_request *req, bool enable); 26 int msft_set_filter_enable(struct hci_dev *hdev, bool enable); 27 int msft_suspend_sync(struct hci_dev *hdev); 28 int msft_resume_sync(struct hci_dev *hdev); 29 bool msft_curve_validity(struct hci_dev *hdev); 30 31 #else 32 33 static inline bool msft_monitor_supported(struct hci_dev *hdev) 34 { 35 return false; 36 } 37 38 static inline void msft_register(struct hci_dev *hdev) {} 39 static inline void msft_unregister(struct hci_dev *hdev) {} 40 static inline void msft_do_open(struct hci_dev *hdev) {} 41 static inline void msft_do_close(struct hci_dev *hdev) {} 42 static inline void msft_vendor_evt(struct hci_dev *hdev, void *data, 43 struct sk_buff *skb) {} 44 static inline __u64 msft_get_features(struct hci_dev *hdev) { return 0; } 45 static inline int msft_add_monitor_pattern(struct hci_dev *hdev, 46 struct adv_monitor *monitor) 47 { 48 return -EOPNOTSUPP; 49 } 50 51 static inline int msft_remove_monitor(struct hci_dev *hdev, 52 struct adv_monitor *monitor, 53 u16 handle) 54 { 55 return -EOPNOTSUPP; 56 } 57 58 static inline void msft_req_add_set_filter_enable(struct hci_request *req, 59 bool enable) {} 60 static inline int msft_set_filter_enable(struct hci_dev *hdev, bool enable) 61 { 62 return -EOPNOTSUPP; 63 } 64 65 static inline int msft_suspend_sync(struct hci_dev *hdev) 66 { 67 return -EOPNOTSUPP; 68 } 69 70 static inline int msft_resume_sync(struct hci_dev *hdev) 71 { 72 return -EOPNOTSUPP; 73 } 74 75 static inline bool msft_curve_validity(struct hci_dev *hdev) 76 { 77 return false; 78 } 79 80 #endif 81