Bluetooth: hci_uart: Use h4_recv_buf helper for Atheros AR300x

Instead of using hci_recv_stream_fragment, use the local available
h4_recv_buf helper function.

To ensure that the function is available select BT_HCIUART_H4.
Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
上级 c27799f9
master alk-4.19.24 alk-4.19.30 alk-4.19.34 alk-4.19.36 alk-4.19.43 alk-4.19.48 alk-4.19.57 ck-4.19.67 ck-4.19.81 ck-4.19.91 github/fork/deepanshu1422/fix-typo-in-comment github/fork/haosdent/fix-typo linux-next v4.19.91 v4.19.90 v4.19.89 v4.19.88 v4.19.87 v4.19.86 v4.19.85 v4.19.84 v4.19.83 v4.19.82 v4.19.81 v4.19.80 v4.19.79 v4.19.78 v4.19.77 v4.19.76 v4.19.75 v4.19.74 v4.19.73 v4.19.72 v4.19.71 v4.19.70 v4.19.69 v4.19.68 v4.19.67 v4.19.66 v4.19.65 v4.19.64 v4.19.63 v4.19.62 v4.19.61 v4.19.60 v4.19.59 v4.19.58 v4.19.57 v4.19.56 v4.19.55 v4.19.54 v4.19.53 v4.19.52 v4.19.51 v4.19.50 v4.19.49 v4.19.48 v4.19.47 v4.19.46 v4.19.45 v4.19.44 v4.19.43 v4.19.42 v4.19.41 v4.19.40 v4.19.39 v4.19.38 v4.19.37 v4.19.36 v4.19.35 v4.19.34 v4.19.33 v4.19.32 v4.19.31 v4.19.30 v4.19.29 v4.19.28 v4.19.27 v4.19.26 v4.19.25 v4.19.24 v4.19.23 v4.19.22 v4.19.21 v4.19.20 v4.19.19 v4.19.18 v4.19.17 v4.19.16 v4.19.15 v4.19.14 v4.19.13 v4.19.12 v4.19.11 v4.19.10 v4.19.9 v4.19.8 v4.19.7 v4.19.6 v4.19.5 v4.19.4 v4.19.3 v4.19.2 v4.19.1 v4.19 v4.19-rc8 v4.19-rc7 v4.19-rc6 v4.19-rc5 v4.19-rc4 v4.19-rc3 v4.19-rc2 v4.19-rc1 ck-release-21 ck-release-20 ck-release-19.2 ck-release-19.1 ck-release-19 ck-release-18 ck-release-17.2 ck-release-17.1 ck-release-17 ck-release-16 ck-release-15.1 ck-release-15 ck-release-14 ck-release-13.2 ck-release-13 ck-release-12 ck-release-11 ck-release-10 ck-release-9 ck-release-7 alk-release-15 alk-release-14 alk-release-13.2 alk-release-13 alk-release-12 alk-release-11 alk-release-10 alk-release-9 alk-release-7
无相关合并请求
...@@ -62,6 +62,7 @@ config BT_HCIUART_BCSP ...@@ -62,6 +62,7 @@ config BT_HCIUART_BCSP
config BT_HCIUART_ATH3K config BT_HCIUART_ATH3K
bool "Atheros AR300x serial support" bool "Atheros AR300x serial support"
depends on BT_HCIUART depends on BT_HCIUART
select BT_HCIUART_H4
help help
HCIATH3K (HCI Atheros AR300x) is a serial protocol for HCIATH3K (HCI Atheros AR300x) is a serial protocol for
communication between host and Atheros AR300x Bluetooth devices. communication between host and Atheros AR300x Bluetooth devices.
......
...@@ -45,6 +45,7 @@ struct ath_struct { ...@@ -45,6 +45,7 @@ struct ath_struct {
struct hci_uart *hu; struct hci_uart *hu;
unsigned int cur_sleep; unsigned int cur_sleep;
struct sk_buff *rx_skb;
struct sk_buff_head txq; struct sk_buff_head txq;
struct work_struct ctxtsw; struct work_struct ctxtsw;
}; };
...@@ -136,6 +137,8 @@ static int ath_close(struct hci_uart *hu) ...@@ -136,6 +137,8 @@ static int ath_close(struct hci_uart *hu)
skb_queue_purge(&ath->txq); skb_queue_purge(&ath->txq);
kfree_skb(ath->rx_skb);
cancel_work_sync(&ath->ctxtsw); cancel_work_sync(&ath->ctxtsw);
hu->priv = NULL; hu->priv = NULL;
...@@ -190,12 +193,13 @@ static struct sk_buff *ath_dequeue(struct hci_uart *hu) ...@@ -190,12 +193,13 @@ static struct sk_buff *ath_dequeue(struct hci_uart *hu)
/* Recv data */ /* Recv data */
static int ath_recv(struct hci_uart *hu, const void *data, int count) static int ath_recv(struct hci_uart *hu, const void *data, int count)
{ {
int ret; struct ath_struct *ath = hu->priv;
ret = hci_recv_stream_fragment(hu->hdev, data, count); ath->rx_skb = h4_recv_buf(hu->hdev, ath->rx_skb, data, count);
if (ret < 0) { if (IS_ERR(ath->rx_skb)) {
BT_ERR("Frame Reassembly Failed"); int err = PTR_ERR(ath->rx_skb);
return ret; BT_ERR("%s: Frame reassembly failed (%d)", hu->hdev->name, err);
return err;
} }
return count; return count;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
反馈
建议
客服 返回
顶部