skb->pkt_type = pkt_type; 
bt_cb(skb)->pkt_type = pkt_type; 
static int bpa10x_recv_event(struct bpa10x_data *data, unsigned char *buf, int size){	BT_DBG("data %p buf %p size %d", data, buf, size);	if (data->evt_skb) {		struct sk_buff *skb = data->evt_skb;		memcpy(skb_put(skb, size), buf, size);		if (skb->len == data->evt_len) {			data->evt_skb = NULL;			data->evt_len = 0;			hci_recv_frame(skb);		}	} else {		struct sk_buff *skb;		struct hci_event_hdr *hdr;		unsigned char pkt_type;		int pkt_len = 0;		if (size < HCI_EVENT_HDR_SIZE + 1) {			BT_ERR("%s event packet block with size %d is too short",							data->hdev->name, size);			return -EILSEQ;		}		pkt_type = *buf++;		size--;		if (pkt_type != HCI_EVENT_PKT) {			BT_ERR("%s unexpected event packet start byte 0x%02x",							data->hdev->name, pkt_type);			return -EPROTO;		}		hdr = (struct hci_event_hdr *) buf;		pkt_len = HCI_EVENT_HDR_SIZE + hdr->plen;		skb = bt_skb_alloc(pkt_len, GFP_ATOMIC);		if (!skb) {			BT_ERR("%s no memory for new event packet",							data->hdev->name);			return -ENOMEM;		}		skb->dev = (void *) data->hdev;		skb->pkt_type = pkt_type;		memcpy(skb_put(skb, size), buf, size);		if (pkt_len == size) {			hci_recv_frame(skb);		} else {			data->evt_skb = skb;			data->evt_len = pkt_len;		}	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0d48d93947dd9ea21c5cdc76a8581b06a4a39281/bpa10x.c/clean/drivers/bluetooth/bpa10x.c