diff options
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/hci_core.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index e1da8f68759c..3fc90e543ec1 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -987,6 +987,29 @@ int hci_resume_dev(struct hci_dev *hdev) | |||
987 | } | 987 | } |
988 | EXPORT_SYMBOL(hci_resume_dev); | 988 | EXPORT_SYMBOL(hci_resume_dev); |
989 | 989 | ||
990 | /* Receive frame from HCI drivers */ | ||
991 | int hci_recv_frame(struct sk_buff *skb) | ||
992 | { | ||
993 | struct hci_dev *hdev = (struct hci_dev *) skb->dev; | ||
994 | if (!hdev || (!test_bit(HCI_UP, &hdev->flags) | ||
995 | && !test_bit(HCI_INIT, &hdev->flags))) { | ||
996 | kfree_skb(skb); | ||
997 | return -ENXIO; | ||
998 | } | ||
999 | |||
1000 | /* Incomming skb */ | ||
1001 | bt_cb(skb)->incoming = 1; | ||
1002 | |||
1003 | /* Time stamp */ | ||
1004 | __net_timestamp(skb); | ||
1005 | |||
1006 | /* Queue frame for rx task */ | ||
1007 | skb_queue_tail(&hdev->rx_q, skb); | ||
1008 | hci_sched_rx(hdev); | ||
1009 | return 0; | ||
1010 | } | ||
1011 | EXPORT_SYMBOL(hci_recv_frame); | ||
1012 | |||
990 | /* Receive packet type fragment */ | 1013 | /* Receive packet type fragment */ |
991 | #define __reassembly(hdev, type) ((hdev)->reassembly[(type) - 2]) | 1014 | #define __reassembly(hdev, type) ((hdev)->reassembly[(type) - 2]) |
992 | 1015 | ||