Lines Matching refs:skb

2931 	struct sk_buff *skb;
2933 skb = bt_skb_alloc(3, GFP_ATOMIC);
2934 if (!skb)
2937 hci_skb_pkt_type(skb) = HCI_EVENT_PKT;
2938 skb_put_data(skb, hw_err, 3);
2943 return hci_recv_frame(hdev, skb);
2948 int hci_recv_frame(struct hci_dev *hdev, struct sk_buff *skb)
2952 kfree_skb(skb);
2956 switch (hci_skb_pkt_type(skb)) {
2962 __u16 handle = __le16_to_cpu(hci_acl_hdr(skb)->handle);
2967 hci_skb_pkt_type(skb) = HCI_ISODATA_PKT;
2975 kfree_skb(skb);
2979 /* Incoming skb */
2980 bt_cb(skb)->incoming = 1;
2983 __net_timestamp(skb);
2985 skb_queue_tail(&hdev->rx_q, skb);
2993 int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb)
2996 hci_skb_pkt_type(skb) = HCI_DIAG_PKT;
2999 __net_timestamp(skb);
3001 skb_queue_tail(&hdev->rx_q, skb);
3056 static int hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
3060 BT_DBG("%s type %d len %d", hdev->name, hci_skb_pkt_type(skb),
3061 skb->len);
3064 __net_timestamp(skb);
3067 hci_send_to_monitor(hdev, skb);
3071 hci_send_to_sock(hdev, skb);
3074 /* Get rid of skb owner, prior to sending to the driver. */
3075 skb_orphan(skb);
3078 kfree_skb(skb);
3082 err = hdev->send(hdev, skb);
3085 kfree_skb(skb);
3096 struct sk_buff *skb;
3100 skb = hci_prepare_cmd(hdev, opcode, plen, param);
3101 if (!skb) {
3109 bt_cb(skb)->hci.req_flags |= HCI_REQ_START;
3111 skb_queue_tail(&hdev->cmd_q, skb);
3120 struct sk_buff *skb;
3135 skb = hci_prepare_cmd(hdev, opcode, plen, param);
3136 if (!skb) {
3142 hci_send_frame(hdev, skb);
3149 static void *hci_cmd_data(struct sk_buff *skb, __u16 opcode)
3153 if (!skb || skb->len < HCI_COMMAND_HDR_SIZE)
3156 hdr = (void *)skb->data;
3161 return skb->data + HCI_COMMAND_HDR_SIZE;
3210 static void hci_add_acl_hdr(struct sk_buff *skb, __u16 handle, __u16 flags)
3213 int len = skb->len;
3215 skb_push(skb, HCI_ACL_HDR_SIZE);
3216 skb_reset_transport_header(skb);
3217 hdr = (struct hci_acl_hdr *)skb_transport_header(skb);
3223 struct sk_buff *skb, __u16 flags)
3229 skb->len = skb_headlen(skb);
3230 skb->data_len = 0;
3232 hci_skb_pkt_type(skb) = HCI_ACLDATA_PKT;
3234 hci_add_acl_hdr(skb, conn->handle, flags);
3236 list = skb_shinfo(skb)->frag_list;
3239 BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
3241 skb_queue_tail(queue, skb);
3244 BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
3246 skb_shinfo(skb)->frag_list = NULL;
3255 __skb_queue_tail(queue, skb);
3260 skb = list; list = list->next;
3262 hci_skb_pkt_type(skb) = HCI_ACLDATA_PKT;
3263 hci_add_acl_hdr(skb, conn->handle, flags);
3265 BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
3267 __skb_queue_tail(queue, skb);
3274 void hci_send_acl(struct hci_chan *chan, struct sk_buff *skb, __u16 flags)
3280 hci_queue_acl(chan, &chan->data_q, skb, flags);
3286 void hci_send_sco(struct hci_conn *conn, struct sk_buff *skb)
3291 BT_DBG("%s len %d", hdev->name, skb->len);
3294 hdr.dlen = skb->len;
3296 skb_push(skb, HCI_SCO_HDR_SIZE);
3297 skb_reset_transport_header(skb);
3298 memcpy(skb_transport_header(skb), &hdr, HCI_SCO_HDR_SIZE);
3300 hci_skb_pkt_type(skb) = HCI_SCODATA_PKT;
3302 skb_queue_tail(&conn->data_q, skb);
3307 static void hci_add_iso_hdr(struct sk_buff *skb, __u16 handle, __u8 flags)
3310 int len = skb->len;
3312 skb_push(skb, HCI_ISO_HDR_SIZE);
3313 skb_reset_transport_header(skb);
3314 hdr = (struct hci_iso_hdr *)skb_transport_header(skb);
3320 struct sk_buff *skb)
3326 skb->len = skb_headlen(skb);
3327 skb->data_len = 0;
3329 hci_skb_pkt_type(skb) = HCI_ISODATA_PKT;
3331 list = skb_shinfo(skb)->frag_list;
3334 hci_add_iso_hdr(skb, conn->handle, flags);
3338 BT_DBG("%s nonfrag skb %p len %d", hdev->name, skb, skb->len);
3340 skb_queue_tail(queue, skb);
3343 BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
3345 skb_shinfo(skb)->frag_list = NULL;
3347 __skb_queue_tail(queue, skb);
3350 skb = list; list = list->next;
3352 hci_skb_pkt_type(skb) = HCI_ISODATA_PKT;
3355 hci_add_iso_hdr(skb, conn->handle, flags);
3357 BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len);
3359 __skb_queue_tail(queue, skb);
3364 void hci_send_iso(struct hci_conn *conn, struct sk_buff *skb)
3368 BT_DBG("%s len %d", hdev->name, skb->len);
3370 hci_queue_iso(conn, &conn->data_q, skb);
3503 struct sk_buff *skb;
3508 skb = skb_peek(&tmp->data_q);
3509 if (skb->priority < cur_prio)
3512 if (skb->priority > cur_prio) {
3515 cur_prio = skb->priority;
3563 struct sk_buff *skb;
3573 skb = skb_peek(&chan->data_q);
3574 if (skb->priority >= HCI_PRIO_MAX - 1)
3577 skb->priority = HCI_PRIO_MAX - 1;
3579 BT_DBG("chan %p skb %p promoted to %d", chan, skb,
3580 skb->priority);
3618 struct sk_buff *skb;
3627 while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
3628 BT_DBG("skb %p len %d", skb, skb->len);
3629 hci_send_frame(hdev, skb);
3641 struct sk_buff *skb;
3651 while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
3652 BT_DBG("skb %p len %d", skb, skb->len);
3653 hci_send_frame(hdev, skb);
3666 struct sk_buff *skb;
3674 while (quote-- && (skb = skb_peek(&chan->data_q))) {
3675 BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
3676 skb->len, skb->priority);
3679 if (skb->priority < priority)
3682 skb = skb_dequeue(&chan->data_q);
3685 bt_cb(skb)->force_active);
3687 hci_send_frame(hdev, skb);
3718 struct sk_buff *skb;
3733 while (quote-- && (skb = skb_peek(&chan->data_q))) {
3734 BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
3735 skb->len, skb->priority);
3738 if (skb->priority < priority)
3741 skb = skb_dequeue(&chan->data_q);
3743 hci_send_frame(hdev, skb);
3769 struct sk_buff *skb;
3780 while (quote-- && (skb = skb_dequeue(&conn->data_q))) {
3781 BT_DBG("skb %p len %d", skb, skb->len);
3782 hci_send_frame(hdev, skb);
3795 struct sk_buff *skb;
3810 while ((skb = skb_dequeue(&hdev->raw_q)))
3811 hci_send_frame(hdev, skb);
3817 static void hci_acldata_packet(struct hci_dev *hdev, struct sk_buff *skb)
3819 struct hci_acl_hdr *hdr = (void *) skb->data;
3823 skb_pull(skb, HCI_ACL_HDR_SIZE);
3829 BT_DBG("%s len %d handle 0x%4.4x flags 0x%4.4x", hdev->name, skb->len,
3842 l2cap_recv_acldata(conn, skb, flags);
3849 kfree_skb(skb);
3853 static void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
3855 struct hci_sco_hdr *hdr = (void *) skb->data;
3859 skb_pull(skb, HCI_SCO_HDR_SIZE);
3865 BT_DBG("%s len %d handle 0x%4.4x flags 0x%4.4x", hdev->name, skb->len,
3876 hci_skb_pkt_status(skb) = flags & 0x03;
3877 sco_recv_scodata(conn, skb);
3884 kfree_skb(skb);
3887 static void hci_isodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
3893 hdr = skb_pull_data(skb, sizeof(*hdr));
3903 bt_dev_dbg(hdev, "len %d handle 0x%4.4x flags 0x%4.4x", skb->len,
3917 iso_recv(conn, skb, flags);
3921 kfree_skb(skb);
3926 struct sk_buff *skb;
3928 skb = skb_peek(&hdev->cmd_q);
3929 if (!skb)
3932 return (bt_cb(skb)->hci.req_flags & HCI_REQ_START);
3938 struct sk_buff *skb;
3949 skb = skb_clone(hdev->sent_cmd, GFP_KERNEL);
3950 if (!skb)
3953 skb_queue_head(&hdev->cmd_q, skb);
3961 struct sk_buff *skb;
3991 skb = hdev->req_skb;
3997 if (skb && bt_cb(skb)->hci.req_flags & HCI_REQ_SKB) {
3998 *req_complete_skb = bt_cb(skb)->hci.req_complete_skb;
4002 if (skb && bt_cb(skb)->hci.req_complete) {
4003 *req_complete = bt_cb(skb)->hci.req_complete;
4009 while ((skb = __skb_dequeue(&hdev->cmd_q))) {
4010 if (bt_cb(skb)->hci.req_flags & HCI_REQ_START) {
4011 __skb_queue_head(&hdev->cmd_q, skb);
4015 if (bt_cb(skb)->hci.req_flags & HCI_REQ_SKB)
4016 *req_complete_skb = bt_cb(skb)->hci.req_complete_skb;
4018 *req_complete = bt_cb(skb)->hci.req_complete;
4019 dev_kfree_skb_irq(skb);
4027 struct sk_buff *skb;
4036 for (; (skb = skb_dequeue(&hdev->rx_q)); kcov_remote_stop()) {
4037 kcov_remote_start_common(skb_get_kcov_handle(skb));
4040 hci_send_to_monitor(hdev, skb);
4044 hci_send_to_sock(hdev, skb);
4055 kfree_skb(skb);
4061 switch (hci_skb_pkt_type(skb)) {
4065 kfree_skb(skb);
4071 switch (hci_skb_pkt_type(skb)) {
4074 hci_event_packet(hdev, skb);
4079 hci_acldata_packet(hdev, skb);
4084 hci_scodata_packet(hdev, skb);
4089 hci_isodata_packet(hdev, skb);
4093 kfree_skb(skb);
4099 static void hci_send_cmd_sync(struct hci_dev *hdev, struct sk_buff *skb)
4103 bt_dev_dbg(hdev, "skb %p", skb);
4107 hdev->sent_cmd = skb_clone(skb, GFP_KERNEL);
4109 skb_queue_head(&hdev->cmd_q, skb);
4114 err = hci_send_frame(hdev, skb);
4132 struct sk_buff *skb;
4139 skb = skb_dequeue(&hdev->cmd_q);
4140 if (!skb)
4143 hci_send_cmd_sync(hdev, skb);