Bluetooth: Fix calculation of SCO handle for packet processing
When processing SCO packets, the handle is wrongly assumed as 16-bit value. The actual size is 12-bits and the other 4-bits are used for packet flags. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Родитель
77131dfec6
Коммит
debdedf2eb
|
@ -4387,13 +4387,16 @@ static void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb)
|
|||
{
|
||||
struct hci_sco_hdr *hdr = (void *) skb->data;
|
||||
struct hci_conn *conn;
|
||||
__u16 handle;
|
||||
__u16 handle, flags;
|
||||
|
||||
skb_pull(skb, HCI_SCO_HDR_SIZE);
|
||||
|
||||
handle = __le16_to_cpu(hdr->handle);
|
||||
flags = hci_flags(handle);
|
||||
handle = hci_handle(handle);
|
||||
|
||||
BT_DBG("%s len %d handle 0x%4.4x", hdev->name, skb->len, handle);
|
||||
BT_DBG("%s len %d handle 0x%4.4x flags 0x%4.4x", hdev->name, skb->len,
|
||||
handle, flags);
|
||||
|
||||
hdev->stat.sco_rx++;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче