Bluetooth: Turn hci_recv_frame into an exported function
authorMarcel Holtmann <marcel@holtmann.org>
Tue, 17 Nov 2009 23:40:39 +0000 (00:40 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Dec 2009 18:34:20 +0000 (19:34 +0100)
For future simplification it is important that the hci_recv_frame
function is no longer an inline function. So move it into the module
itself and export it.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/hci_core.h
net/bluetooth/hci_core.c

index 7b640ae..8460f22 100644 (file)
@@ -437,28 +437,7 @@ int hci_inquiry(void __user *arg);
 
 void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
 
 
 void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb);
 
-/* Receive frame from HCI drivers */
-static inline int hci_recv_frame(struct sk_buff *skb)
-{
-       struct hci_dev *hdev = (struct hci_dev *) skb->dev;
-       if (!hdev || (!test_bit(HCI_UP, &hdev->flags) 
-                       && !test_bit(HCI_INIT, &hdev->flags))) {
-               kfree_skb(skb);
-               return -ENXIO;
-       }
-
-       /* Incomming skb */
-       bt_cb(skb)->incoming = 1;
-
-       /* Time stamp */
-       __net_timestamp(skb);
-
-       /* Queue frame for rx task */
-       skb_queue_tail(&hdev->rx_q, skb);
-       hci_sched_rx(hdev);
-       return 0;
-}
-
+int hci_recv_frame(struct sk_buff *skb);
 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count);
 
 int hci_register_sysfs(struct hci_dev *hdev);
 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count);
 
 int hci_register_sysfs(struct hci_dev *hdev);
index e1da8f6..3fc90e5 100644 (file)
@@ -987,6 +987,29 @@ int hci_resume_dev(struct hci_dev *hdev)
 }
 EXPORT_SYMBOL(hci_resume_dev);
 
 }
 EXPORT_SYMBOL(hci_resume_dev);
 
+/* Receive frame from HCI drivers */
+int hci_recv_frame(struct sk_buff *skb)
+{
+       struct hci_dev *hdev = (struct hci_dev *) skb->dev;
+       if (!hdev || (!test_bit(HCI_UP, &hdev->flags)
+                               && !test_bit(HCI_INIT, &hdev->flags))) {
+               kfree_skb(skb);
+               return -ENXIO;
+       }
+
+       /* Incomming skb */
+       bt_cb(skb)->incoming = 1;
+
+       /* Time stamp */
+       __net_timestamp(skb);
+
+       /* Queue frame for rx task */
+       skb_queue_tail(&hdev->rx_q, skb);
+       hci_sched_rx(hdev);
+       return 0;
+}
+EXPORT_SYMBOL(hci_recv_frame);
+
 /* Receive packet type fragment */
 #define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 2])
 
 /* Receive packet type fragment */
 #define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 2])