diff options
Diffstat (limited to 'net/bluetooth/hci_core.c')
-rw-r--r-- | net/bluetooth/hci_core.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 9c4541bc488..9ba92adaa9a 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -1395,7 +1395,7 @@ void hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags) | |||
1395 | 1395 | ||
1396 | skb->dev = (void *) hdev; | 1396 | skb->dev = (void *) hdev; |
1397 | bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT; | 1397 | bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT; |
1398 | hci_add_acl_hdr(skb, conn->handle, flags | ACL_START); | 1398 | hci_add_acl_hdr(skb, conn->handle, flags); |
1399 | 1399 | ||
1400 | list = skb_shinfo(skb)->frag_list; | 1400 | list = skb_shinfo(skb)->frag_list; |
1401 | if (!list) { | 1401 | if (!list) { |
@@ -1413,12 +1413,15 @@ void hci_send_acl(struct hci_conn *conn, struct sk_buff *skb, __u16 flags) | |||
1413 | spin_lock_bh(&conn->data_q.lock); | 1413 | spin_lock_bh(&conn->data_q.lock); |
1414 | 1414 | ||
1415 | __skb_queue_tail(&conn->data_q, skb); | 1415 | __skb_queue_tail(&conn->data_q, skb); |
1416 | |||
1417 | flags &= ~ACL_START; | ||
1418 | flags |= ACL_CONT; | ||
1416 | do { | 1419 | do { |
1417 | skb = list; list = list->next; | 1420 | skb = list; list = list->next; |
1418 | 1421 | ||
1419 | skb->dev = (void *) hdev; | 1422 | skb->dev = (void *) hdev; |
1420 | bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT; | 1423 | bt_cb(skb)->pkt_type = HCI_ACLDATA_PKT; |
1421 | hci_add_acl_hdr(skb, conn->handle, flags | ACL_CONT); | 1424 | hci_add_acl_hdr(skb, conn->handle, flags); |
1422 | 1425 | ||
1423 | BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len); | 1426 | BT_DBG("%s frag %p len %d", hdev->name, skb, skb->len); |
1424 | 1427 | ||