]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/bluetooth/hci_vhci.c
net: fec: call dma_mapping_error() where appropriate
[karo-tx-linux.git] / drivers / bluetooth / hci_vhci.c
index c04a3e6fb37c32f5e8ee4006246567024e2b9017..7b167385a1c4e8bdf7d0974707f0b0b43ea21f43 100644 (file)
@@ -81,21 +81,13 @@ static int vhci_flush(struct hci_dev *hdev)
        return 0;
 }
 
-static int vhci_send_frame(struct sk_buff *skb)
+static int vhci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
 {
-       struct hci_dev* hdev = (struct hci_dev *) skb->dev;
-       struct vhci_data *data;
-
-       if (!hdev) {
-               BT_ERR("Frame for unknown HCI device (hdev=NULL)");
-               return -ENODEV;
-       }
+       struct vhci_data *data = hci_get_drvdata(hdev);
 
        if (!test_bit(HCI_RUNNING, &hdev->flags))
                return -EBUSY;
 
-       data = hci_get_drvdata(hdev);
-
        memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1);
        skb_queue_tail(&data->readq, skb);
 
@@ -179,10 +171,9 @@ static inline ssize_t vhci_get_user(struct vhci_data *data,
                        return -ENODEV;
                }
 
-               skb->dev = (void *) data->hdev;
                bt_cb(skb)->pkt_type = pkt_type;
 
-               ret = hci_recv_frame(skb);
+               ret = hci_recv_frame(data->hdev, skb);
                break;
 
        case HCI_VENDOR_PKT: