linux/net/bluetooth/msft.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2020 Google Corporation
 */

#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/mgmt.h>

#include "mgmt_util.h"
#include "msft.h"

#define MSFT_RSSI_THRESHOLD_VALUE_MIN
#define MSFT_RSSI_THRESHOLD_VALUE_MAX
#define MSFT_RSSI_LOW_TIMEOUT_MAX

#define MSFT_OP_READ_SUPPORTED_FEATURES
struct msft_cp_read_supported_features {} __packed;

struct msft_rp_read_supported_features {} __packed;

#define MSFT_OP_LE_MONITOR_ADVERTISEMENT
#define MSFT_MONITOR_ADVERTISEMENT_TYPE_PATTERN
struct msft_le_monitor_advertisement_pattern {};

struct msft_le_monitor_advertisement_pattern_data {};

struct msft_cp_le_monitor_advertisement {} __packed;

struct msft_rp_le_monitor_advertisement {} __packed;

#define MSFT_OP_LE_CANCEL_MONITOR_ADVERTISEMENT
struct msft_cp_le_cancel_monitor_advertisement {} __packed;

struct msft_rp_le_cancel_monitor_advertisement {} __packed;

#define MSFT_OP_LE_SET_ADVERTISEMENT_FILTER_ENABLE
struct msft_cp_le_set_advertisement_filter_enable {} __packed;

struct msft_rp_le_set_advertisement_filter_enable {} __packed;

#define MSFT_EV_LE_MONITOR_DEVICE
struct msft_ev_le_monitor_device {} __packed;

struct msft_monitor_advertisement_handle_data {};

enum monitor_addr_filter_state {};

#define MSFT_MONITOR_ADVERTISEMENT_TYPE_ADDR
struct msft_monitor_addr_filter_data {};

struct msft_data {};

bool msft_monitor_supported(struct hci_dev *hdev)
{}

static bool read_supported_features(struct hci_dev *hdev,
				    struct msft_data *msft)
{}

/* is_mgmt = true matches the handle exposed to userspace via mgmt.
 * is_mgmt = false matches the handle used by the msft controller.
 * This function requires the caller holds hdev->lock
 */
static struct msft_monitor_advertisement_handle_data *msft_find_handle_data
				(struct hci_dev *hdev, u16 handle, bool is_mgmt)
{}

/* This function requires the caller holds msft->filter_lock */
static struct msft_monitor_addr_filter_data *msft_find_address_data
			(struct hci_dev *hdev, u8 addr_type, bdaddr_t *addr,
			 u8 pattern_handle)
{}

/* This function requires the caller holds hdev->lock */
static int msft_monitor_device_del(struct hci_dev *hdev, __u16 mgmt_handle,
				   bdaddr_t *bdaddr, __u8 addr_type,
				   bool notify)
{}

static int msft_le_monitor_advertisement_cb(struct hci_dev *hdev, u16 opcode,
					    struct adv_monitor *monitor,
					    struct sk_buff *skb)
{}

/* This function requires the caller holds hci_req_sync_lock */
static void msft_remove_addr_filters_sync(struct hci_dev *hdev, u8 handle)
{}

static int msft_le_cancel_monitor_advertisement_cb(struct hci_dev *hdev,
						   u16 opcode,
						   struct adv_monitor *monitor,
						   struct sk_buff *skb)
{}

/* This function requires the caller holds hci_req_sync_lock */
static int msft_remove_monitor_sync(struct hci_dev *hdev,
				    struct adv_monitor *monitor)
{}

/* This function requires the caller holds hci_req_sync_lock */
int msft_suspend_sync(struct hci_dev *hdev)
{}

static bool msft_monitor_rssi_valid(struct adv_monitor *monitor)
{}

static bool msft_monitor_pattern_valid(struct adv_monitor *monitor)
{}

static int msft_add_monitor_sync(struct hci_dev *hdev,
				 struct adv_monitor *monitor)
{}

/* This function requires the caller holds hci_req_sync_lock */
static void reregister_monitor(struct hci_dev *hdev)
{}

/* This function requires the caller holds hci_req_sync_lock */
int msft_resume_sync(struct hci_dev *hdev)
{}

/* This function requires the caller holds hci_req_sync_lock */
void msft_do_open(struct hci_dev *hdev)
{}

void msft_do_close(struct hci_dev *hdev)
{}

static int msft_cancel_address_filter_sync(struct hci_dev *hdev, void *data)
{}

void msft_register(struct hci_dev *hdev)
{}

void msft_release(struct hci_dev *hdev)
{}

/* This function requires the caller holds hdev->lock */
static void msft_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr,
			      __u8 addr_type, __u16 mgmt_handle)
{}

/* This function requires the caller holds hdev->lock */
static void msft_device_lost(struct hci_dev *hdev, bdaddr_t *bdaddr,
			     __u8 addr_type, __u16 mgmt_handle)
{}

static void *msft_skb_pull(struct hci_dev *hdev, struct sk_buff *skb,
			   u8 ev, size_t len)
{}

static int msft_add_address_filter_sync(struct hci_dev *hdev, void *data)
{}

/* This function requires the caller holds msft->filter_lock */
static struct msft_monitor_addr_filter_data *msft_add_address_filter
		(struct hci_dev *hdev, u8 addr_type, bdaddr_t *bdaddr,
		 struct msft_monitor_advertisement_handle_data *handle_data)
{}

/* This function requires the caller holds hdev->lock */
static void msft_monitor_device_evt(struct hci_dev *hdev, struct sk_buff *skb)
{}

void msft_vendor_evt(struct hci_dev *hdev, void *data, struct sk_buff *skb)
{}

__u64 msft_get_features(struct hci_dev *hdev)
{}

static void msft_le_set_advertisement_filter_enable_cb(struct hci_dev *hdev,
						       void *user_data,
						       u8 status)
{}

/* This function requires the caller holds hci_req_sync_lock */
int msft_add_monitor_pattern(struct hci_dev *hdev, struct adv_monitor *monitor)
{}

/* This function requires the caller holds hci_req_sync_lock */
int msft_remove_monitor(struct hci_dev *hdev, struct adv_monitor *monitor)
{}

int msft_set_filter_enable(struct hci_dev *hdev, bool enable)
{}

bool msft_curve_validity(struct hci_dev *hdev)
{}