skb->pkt_type = pkt_type; 
bt_cb(skb)->pkt_type = pkt_type; 
static inline int bfusb_recv_block(struct bfusb *bfusb, int hdr, unsigned char *data, int len){	BT_DBG("bfusb %p hdr 0x%02x data %p len %d", bfusb, hdr, data, len);	if (hdr & 0x10) {		BT_ERR("%s error in block", bfusb->hdev->name);		if (bfusb->reassembly)			kfree_skb(bfusb->reassembly);		bfusb->reassembly = NULL;		return -EIO;	}	if (hdr & 0x04) {		struct sk_buff *skb;		unsigned char pkt_type;		int pkt_len = 0;		if (bfusb->reassembly) {			BT_ERR("%s unexpected start block", bfusb->hdev->name);			kfree_skb(bfusb->reassembly);			bfusb->reassembly = NULL;		}		if (len < 1) {			BT_ERR("%s no packet type found", bfusb->hdev->name);			return -EPROTO;		}		pkt_type = *data++; len--;		switch (pkt_type) {		case HCI_EVENT_PKT:			if (len >= HCI_EVENT_HDR_SIZE) {				struct hci_event_hdr *hdr = (struct hci_event_hdr *) data;				pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;			} else {				BT_ERR("%s event block is too short", bfusb->hdev->name);				return -EILSEQ;			}			break;		case HCI_ACLDATA_PKT:			if (len >= HCI_ACL_HDR_SIZE) {				struct hci_acl_hdr *hdr = (struct hci_acl_hdr *) data;				pkt_len = HCI_ACL_HDR_SIZE + __le16_to_cpu(hdr->dlen);			} else {				BT_ERR("%s data block is too short", bfusb->hdev->name);				return -EILSEQ;			}			break;		case HCI_SCODATA_PKT:			if (len >= HCI_SCO_HDR_SIZE) {				struct hci_sco_hdr *hdr = (struct hci_sco_hdr *) data;				pkt_len = HCI_SCO_HDR_SIZE + hdr->dlen;			} else {				BT_ERR("%s audio block is too short", bfusb->hdev->name);				return -EILSEQ;			}			break;		}		skb = bt_skb_alloc(pkt_len, GFP_ATOMIC);		if (!skb) {			BT_ERR("%s no memory for the packet", bfusb->hdev->name);			return -ENOMEM;		}		skb->dev = (void *) bfusb->hdev;		skb->pkt_type = pkt_type;		bfusb->reassembly = skb;	} else {		if (!bfusb->reassembly) {			BT_ERR("%s unexpected continuation block", bfusb->hdev->name);			return -EIO;		}	}	if (len > 0)		memcpy(skb_put(bfusb->reassembly, len), data, len);	if (hdr & 0x08) {		hci_recv_frame(bfusb->reassembly);		bfusb->reassembly = NULL;	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0d48d93947dd9ea21c5cdc76a8581b06a4a39281/bfusb.c/clean/drivers/bluetooth/bfusb.c