blob: 22bef000aa07636d3471c31d197343984174b489 [file] [log] [blame]
/*
HCI LE splitter - two stacks - one chip
Copyright (C) 2017 Google, Inc
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation;
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
SOFTWARE IS DISCLAIMED.
*/
#ifndef __BT_HCI_LE_SPLITTER_H
#define __BT_HCI_LE_SPLITTER_H
#include <linux/types.h>
#define HCI_LE_SPLIT_MAX_LE_CONNS 64
#define HCI_LE_SPLITTER_BUFFER_TARGET 3
struct hci_dev;
struct sk_buff;
#ifdef CONFIG_BT_HCI_LE_SPLITTER
int hci_le_splitter_sysfs_init(void);
void hci_le_splitter_init_start(struct hci_dev *hdev);
int hci_le_splitter_init_done(struct hci_dev *hdev);
void hci_le_splitter_init_fail(struct hci_dev *hdev);
void hci_le_splitter_deinit(struct hci_dev *hdev);
/* return true to let bluez have it */
bool hci_le_splitter_should_allow_bluez_rx(struct hci_dev *hdev, struct sk_buff *skb);
/* return true to allow transmission */
bool hci_le_splitter_should_allow_bluez_tx(struct hci_dev *hdev, struct sk_buff *skb);
#else
static inline int hci_le_splitter_init_done(struct hci_dev *hdev)
{
return 0;
}
static inline void hci_le_splitter_init_fail(struct hci_dev *hdev)
{
}
static inline void hci_le_splitter_deinit(struct hci_dev *hdev)
{
}
static inline bool hci_le_splitter_should_allow_bluez_rx(struct hci_dev *hdev, struct sk_buff *skb)
{
return true;
}
static inline bool hci_le_splitter_should_allow_bluez_tx(struct hci_dev *hdev, struct sk_buff *skb)
{
return true;
}
static inline void hci_le_splitter_init_start(struct hci_dev *hdev)
{
}
static inline int hci_le_splitter_sysfs_init(void)
{
return 0;
}
#endif
#endif /* __HCI_LE_SPLITTER_H */