linux/net/bluetooth/iso.c

// SPDX-License-Identifier: GPL-2.0
/*
 * BlueZ - Bluetooth protocol stack for Linux
 *
 * Copyright (C) 2022 Intel Corporation
 * Copyright 2023-2024 NXP
 */

#include <linux/module.h>
#include <linux/debugfs.h>
#include <linux/seq_file.h>
#include <linux/sched/signal.h>

#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#include <net/bluetooth/iso.h>
#include "eir.h"

static const struct proto_ops iso_sock_ops;

static struct bt_sock_list iso_sk_list =;

/* ---- ISO connections ---- */
struct iso_conn {};

#define iso_conn_lock(c)
#define iso_conn_unlock(c)

static void iso_sock_close(struct sock *sk);
static void iso_sock_kill(struct sock *sk);

/* ----- ISO socket info ----- */
#define iso_pi(sk)

#define EIR_SERVICE_DATA_LENGTH
#define BASE_MAX_LENGTH
#define EIR_BAA_SERVICE_UUID

/* iso_pinfo flags values */
enum {};

struct iso_pinfo {};

static struct bt_iso_qos default_qos;

static bool check_ucast_qos(struct bt_iso_qos *qos);
static bool check_bcast_qos(struct bt_iso_qos *qos);
static bool iso_match_sid(struct sock *sk, void *data);
static bool iso_match_sync_handle(struct sock *sk, void *data);
static bool iso_match_sync_handle_pa_report(struct sock *sk, void *data);
static void iso_sock_disconn(struct sock *sk);

iso_sock_match_t;

static struct sock *iso_get_sock(bdaddr_t *src, bdaddr_t *dst,
				 enum bt_sock_state state,
				 iso_sock_match_t match, void *data);

/* ---- ISO timers ---- */
#define ISO_CONN_TIMEOUT
#define ISO_DISCONN_TIMEOUT

static void iso_sock_timeout(struct work_struct *work)
{}

static void iso_sock_set_timer(struct sock *sk, long timeout)
{}

static void iso_sock_clear_timer(struct sock *sk)
{}

/* ---- ISO connections ---- */
static struct iso_conn *iso_conn_add(struct hci_conn *hcon)
{}

/* Delete channel. Must be called on the locked socket. */
static void iso_chan_del(struct sock *sk, int err)
{}

static void iso_conn_del(struct hci_conn *hcon, int err)
{}

static int __iso_chan_add(struct iso_conn *conn, struct sock *sk,
			  struct sock *parent)
{}

static int iso_chan_add(struct iso_conn *conn, struct sock *sk,
			struct sock *parent)
{}

static inline u8 le_addr_type(u8 bdaddr_type)
{}

static int iso_connect_bis(struct sock *sk)
{}

static int iso_connect_cis(struct sock *sk)
{}

static struct bt_iso_qos *iso_sock_get_qos(struct sock *sk)
{}

static int iso_send_frame(struct sock *sk, struct sk_buff *skb)
{}

static void iso_recv_frame(struct iso_conn *conn, struct sk_buff *skb)
{}

/* -------- Socket interface ---------- */
static struct sock *__iso_get_sock_listen_by_addr(bdaddr_t *src, bdaddr_t *dst)
{}

static struct sock *__iso_get_sock_listen_by_sid(bdaddr_t *ba, bdaddr_t *bc,
						 __u8 sid)
{}

/* Find socket in given state:
 * source bdaddr (Unicast)
 * destination bdaddr (Broadcast only)
 * match func - pass NULL to ignore
 * match func data - pass -1 to ignore
 * Returns closest match.
 */
static struct sock *iso_get_sock(bdaddr_t *src, bdaddr_t *dst,
				 enum bt_sock_state state,
				 iso_sock_match_t match, void *data)
{}

static struct sock *iso_get_sock_big(struct sock *match_sk, bdaddr_t *src,
				     bdaddr_t *dst, uint8_t big)
{}

static void iso_sock_destruct(struct sock *sk)
{}

static void iso_sock_cleanup_listen(struct sock *parent)
{}

/* Kill socket (only if zapped and orphan)
 * Must be called on unlocked socket.
 */
static void iso_sock_kill(struct sock *sk)
{}

static void iso_sock_disconn(struct sock *sk)
{}

static void __iso_sock_close(struct sock *sk)
{}

/* Must be called on unlocked socket. */
static void iso_sock_close(struct sock *sk)
{}

static void iso_sock_init(struct sock *sk, struct sock *parent)
{}

static struct proto iso_proto =;

#define DEFAULT_IO_QOS

static struct bt_iso_qos default_qos =;

static struct sock *iso_sock_alloc(struct net *net, struct socket *sock,
				   int proto, gfp_t prio, int kern)
{}

static int iso_sock_create(struct net *net, struct socket *sock, int protocol,
			   int kern)
{}

static int iso_sock_bind_bc(struct socket *sock, struct sockaddr *addr,
			    int addr_len)
{}

static int iso_sock_bind_pa_sk(struct sock *sk, struct sockaddr_iso *sa,
			       int addr_len)
{}

static int iso_sock_bind(struct socket *sock, struct sockaddr *addr,
			 int addr_len)
{}

static int iso_sock_connect(struct socket *sock, struct sockaddr *addr,
			    int alen, int flags)
{}

static int iso_listen_bis(struct sock *sk)
{}

static int iso_listen_cis(struct sock *sk)
{}

static int iso_sock_listen(struct socket *sock, int backlog)
{}

static int iso_sock_accept(struct socket *sock, struct socket *newsock,
			   struct proto_accept_arg *arg)
{}

static int iso_sock_getname(struct socket *sock, struct sockaddr *addr,
			    int peer)
{}

static int iso_sock_sendmsg(struct socket *sock, struct msghdr *msg,
			    size_t len)
{}

static void iso_conn_defer_accept(struct hci_conn *conn)
{}

static void iso_conn_big_sync(struct sock *sk)
{}

static int iso_sock_recvmsg(struct socket *sock, struct msghdr *msg,
			    size_t len, int flags)
{}

static bool check_io_qos(struct bt_iso_io_qos *qos)
{}

static bool check_ucast_qos(struct bt_iso_qos *qos)
{}

static bool check_bcast_qos(struct bt_iso_qos *qos)
{}

static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
			       sockptr_t optval, unsigned int optlen)
{}

static int iso_sock_getsockopt(struct socket *sock, int level, int optname,
			       char __user *optval, int __user *optlen)
{}

static int iso_sock_shutdown(struct socket *sock, int how)
{}

static int iso_sock_release(struct socket *sock)
{}

static void iso_sock_ready(struct sock *sk)
{}

static bool iso_match_big(struct sock *sk, void *data)
{}

static bool iso_match_pa_sync_flag(struct sock *sk, void *data)
{}

static void iso_conn_ready(struct iso_conn *conn)
{}

static bool iso_match_sid(struct sock *sk, void *data)
{}

static bool iso_match_sync_handle(struct sock *sk, void *data)
{}

static bool iso_match_sync_handle_pa_report(struct sock *sk, void *data)
{}

/* ----- ISO interface with lower layer (HCI) ----- */

int iso_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags)
{}

static void iso_connect_cfm(struct hci_conn *hcon, __u8 status)
{}

static void iso_disconn_cfm(struct hci_conn *hcon, __u8 reason)
{}

void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags)
{}

static struct hci_cb iso_cb =;

static int iso_debugfs_show(struct seq_file *f, void *p)
{}

DEFINE_SHOW_ATTRIBUTE();

static struct dentry *iso_debugfs;

static const struct proto_ops iso_sock_ops =;

static const struct net_proto_family iso_sock_family_ops =;

static bool iso_inited;

bool iso_enabled(void)
{}

int iso_init(void)
{}

int iso_exit(void)
{}