if (!skb)
                return -ENOMEM;
 
-       bt_cb(skb)->pkt_type = HCI_EVENT_PKT;
+       hci_skb_pkt_type(skb) = HCI_EVENT_PKT;
        memcpy(skb_put(skb, 3), hw_err, 3);
 
        /* Send Hardware Error to upper stack */
                return -ENXIO;
        }
 
-       if (bt_cb(skb)->pkt_type != HCI_EVENT_PKT &&
-           bt_cb(skb)->pkt_type != HCI_ACLDATA_PKT &&
-           bt_cb(skb)->pkt_type != HCI_SCODATA_PKT) {
+       if (hci_skb_pkt_type(skb) != HCI_EVENT_PKT &&
+           hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
+           hci_skb_pkt_type(skb) != HCI_SCODATA_PKT) {
                kfree_skb(skb);
                return -EINVAL;
        }
 int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb)
 {
        /* Mark as diagnostic packet */
-       bt_cb(skb)->pkt_type = HCI_DIAG_PKT;
+       hci_skb_pkt_type(skb) = HCI_DIAG_PKT;
 
        /* Time stamp */
        __net_timestamp(skb);
 {
        int err;
 
-       BT_DBG("%s type %d len %d", hdev->name, bt_cb(skb)->pkt_type, skb->len);
+       BT_DBG("%s type %d len %d", hdev->name, hci_skb_pkt_type(skb),
+              skb->len);
 
        /* Time stamp */
        __net_timestamp(skb);
        skb->len = skb_headlen(skb);
        skb->data_len = 0;
 
-       bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
+       hci_skb_pkt_type(skb) = HCI_ACLDATA_PKT;
 
        switch (hdev->dev_type) {
        case HCI_BREDR:
                do {
                        skb = list; list = list->next;
 
-                       bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT;
+                       hci_skb_pkt_type(skb) = HCI_ACLDATA_PKT;
                        hci_add_acl_hdr(skb, conn->handle, flags);
 
                        BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
        skb_reset_transport_header(skb);
        memcpy(skb_transport_header(skb), &hdr, HCI_SCO_HDR_SIZE);
 
-       bt_cb(skb)->pkt_type = HCI_SCODATA_PKT;
+       hci_skb_pkt_type(skb) = HCI_SCODATA_PKT;
 
        skb_queue_tail(&conn->data_q, skb);
        queue_work(hdev->workqueue, &hdev->tx_work);
 
                if (test_bit(HCI_INIT, &hdev->flags)) {
                        /* Don't process data packets in this states. */
-                       switch (bt_cb(skb)->pkt_type) {
+                       switch (hci_skb_pkt_type(skb)) {
                        case HCI_ACLDATA_PKT:
                        case HCI_SCODATA_PKT:
                                kfree_skb(skb);
                }
 
                /* Process frame */
-               switch (bt_cb(skb)->pkt_type) {
+               switch (hci_skb_pkt_type(skb)) {
                case HCI_EVENT_PKT:
                        BT_DBG("%s Event packet", hdev->name);
                        hci_event_packet(hdev, skb);
 
        /* Apply filter */
        flt = &hci_pi(sk)->filter;
 
-       flt_type = bt_cb(skb)->pkt_type & HCI_FLT_TYPE_BITS;
+       flt_type = hci_skb_pkt_type(skb) & HCI_FLT_TYPE_BITS;
 
        if (!test_bit(flt_type, &flt->type_mask))
                return true;
 
        /* Extra filter for event packets only */
-       if (bt_cb(skb)->pkt_type != HCI_EVENT_PKT)
+       if (hci_skb_pkt_type(skb) != HCI_EVENT_PKT)
                return false;
 
        flt_event = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);
                        continue;
 
                if (hci_pi(sk)->channel == HCI_CHANNEL_RAW) {
-                       if (bt_cb(skb)->pkt_type != HCI_COMMAND_PKT &&
-                           bt_cb(skb)->pkt_type != HCI_EVENT_PKT &&
-                           bt_cb(skb)->pkt_type != HCI_ACLDATA_PKT &&
-                           bt_cb(skb)->pkt_type != HCI_SCODATA_PKT)
+                       if (hci_skb_pkt_type(skb) != HCI_COMMAND_PKT &&
+                           hci_skb_pkt_type(skb) != HCI_EVENT_PKT &&
+                           hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
+                           hci_skb_pkt_type(skb) != HCI_SCODATA_PKT)
                                continue;
                        if (is_filtered_packet(sk, skb))
                                continue;
                } else if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
                        if (!bt_cb(skb)->incoming)
                                continue;
-                       if (bt_cb(skb)->pkt_type != HCI_EVENT_PKT &&
-                           bt_cb(skb)->pkt_type != HCI_ACLDATA_PKT &&
-                           bt_cb(skb)->pkt_type != HCI_SCODATA_PKT)
+                       if (hci_skb_pkt_type(skb) != HCI_EVENT_PKT &&
+                           hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
+                           hci_skb_pkt_type(skb) != HCI_SCODATA_PKT)
                                continue;
                } else {
                        /* Don't send frame to other channel types */
                                continue;
 
                        /* Put type byte before the data */
-                       memcpy(skb_push(skb_copy, 1), &bt_cb(skb)->pkt_type, 1);
+                       memcpy(skb_push(skb_copy, 1), &hci_skb_pkt_type(skb), 1);
                }
 
                nskb = skb_clone(skb_copy, GFP_ATOMIC);
 
        BT_DBG("hdev %p len %d", hdev, skb->len);
 
-       switch (bt_cb(skb)->pkt_type) {
+       switch (hci_skb_pkt_type(skb)) {
        case HCI_COMMAND_PKT:
                opcode = cpu_to_le16(HCI_MON_COMMAND_PKT);
                break;
        bt_cb(skb)->incoming = 1;
        __net_timestamp(skb);
 
-       bt_cb(skb)->pkt_type = HCI_EVENT_PKT;
+       hci_skb_pkt_type(skb) = HCI_EVENT_PKT;
        hci_send_to_sock(hdev, skb);
        kfree_skb(skb);
 }
                goto drop;
        }
 
-       bt_cb(skb)->pkt_type = *((unsigned char *) skb->data);
+       hci_skb_pkt_type(skb) = *((unsigned char *) skb->data);
        skb_pull(skb, 1);
 
        if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
                 *
                 * However check that the packet type is valid.
                 */
-               if (bt_cb(skb)->pkt_type != HCI_COMMAND_PKT &&
-                   bt_cb(skb)->pkt_type != HCI_ACLDATA_PKT &&
-                   bt_cb(skb)->pkt_type != HCI_SCODATA_PKT) {
+               if (hci_skb_pkt_type(skb) != HCI_COMMAND_PKT &&
+                   hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
+                   hci_skb_pkt_type(skb) != HCI_SCODATA_PKT) {
                        err = -EINVAL;
                        goto drop;
                }
 
                skb_queue_tail(&hdev->raw_q, skb);
                queue_work(hdev->workqueue, &hdev->tx_work);
-       } else if (bt_cb(skb)->pkt_type == HCI_COMMAND_PKT) {
+       } else if (hci_skb_pkt_type(skb) == HCI_COMMAND_PKT) {
                u16 opcode = get_unaligned_le16(skb->data);
                u16 ogf = hci_opcode_ogf(opcode);
                u16 ocf = hci_opcode_ocf(opcode);
                        goto drop;
                }
 
-               if (bt_cb(skb)->pkt_type != HCI_ACLDATA_PKT &&
-                   bt_cb(skb)->pkt_type != HCI_SCODATA_PKT) {
+               if (hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
+                   hci_skb_pkt_type(skb) != HCI_SCODATA_PKT) {
                        err = -EINVAL;
                        goto drop;
                }