From: Wolfgang Walter A friend and I encountered a problem with sco transfers to a headset using linux (vanilla 2.6.15). While all sco packets sent by the headset were received there was no outgoing traffic. After switching debugging output on we found that actually sco_cnt was always zero in hci_sched_sco. hciconfig hci0 shows sco_mtu to be 64:0. Changing that to 64:8 did not help. This was because in hci_cc_info_param hdev->sco_pkts is set to zero. When we changed this line so that hdev->sco_pkts is set to 8 if bs->sco_max_pkt is 0 sco transfer to the headset started to work just fine. Cc: Marcel Holtmann Signed-off-by: Andrew Morton --- net/bluetooth/hci_event.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN net/bluetooth/hci_event.c~bluetooth-fix-problem-with-sco net/bluetooth/hci_event.c --- devel/net/bluetooth/hci_event.c~bluetooth-fix-problem-with-sco 2006-02-13 04:31:32.000000000 -0800 +++ devel-akpm/net/bluetooth/hci_event.c 2006-02-13 04:31:32.000000000 -0800 @@ -322,7 +322,7 @@ static void hci_cc_info_param(struct hci hdev->acl_mtu = __le16_to_cpu(bs->acl_mtu); hdev->sco_mtu = bs->sco_mtu ? bs->sco_mtu : 64; hdev->acl_pkts = hdev->acl_cnt = __le16_to_cpu(bs->acl_max_pkt); - hdev->sco_pkts = hdev->sco_cnt = __le16_to_cpu(bs->sco_max_pkt); + hdev->sco_pkts = hdev->sco_cnt = (bs->sco_max_pkt ? __le16_to_cpu(bs->sco_max_pkt) : 8); BT_DBG("%s mtu: acl %d, sco %d max_pkt: acl %d, sco %d", hdev->name, hdev->acl_mtu, hdev->sco_mtu, hdev->acl_pkts, hdev->sco_pkts); _