mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-30 18:54:15 +10:00
Bluetooth: hci_event: fix MTU for BN == 0 in CIS Established
[ Upstream commit0b3725dbf6
] BN == 0x00 in CIS Established means no isochronous data for the corresponding direction (Core v6.1 pp. 2394). In this case SDU MTU should be 0. However, the specification does not say the Max_PDU_C_To_P or P_To_C are then zero. Intel AX210 in Framed CIS mode sets nonzero Max_PDU for direction with zero BN. This causes failure later when we try to LE Setup ISO Data Path for disabled direction, which is disallowed (Core v6.1 pp. 2750). Fix by setting SDU MTU to 0 if BN == 0. Fixes:2be22f1941
("Bluetooth: hci_event: Fix parsing of CIS Established Event") Signed-off-by: Pauli Virtanen <pav@iki.fi> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
8f80c633cb
commit
ae1d9779f0
@ -6664,8 +6664,8 @@ static void hci_le_cis_estabilished_evt(struct hci_dev *hdev, void *data,
|
||||
qos->ucast.out.latency =
|
||||
DIV_ROUND_CLOSEST(get_unaligned_le24(ev->p_latency),
|
||||
1000);
|
||||
qos->ucast.in.sdu = le16_to_cpu(ev->c_mtu);
|
||||
qos->ucast.out.sdu = le16_to_cpu(ev->p_mtu);
|
||||
qos->ucast.in.sdu = ev->c_bn ? le16_to_cpu(ev->c_mtu) : 0;
|
||||
qos->ucast.out.sdu = ev->p_bn ? le16_to_cpu(ev->p_mtu) : 0;
|
||||
qos->ucast.in.phy = ev->c_phy;
|
||||
qos->ucast.out.phy = ev->p_phy;
|
||||
break;
|
||||
@ -6679,8 +6679,8 @@ static void hci_le_cis_estabilished_evt(struct hci_dev *hdev, void *data,
|
||||
qos->ucast.in.latency =
|
||||
DIV_ROUND_CLOSEST(get_unaligned_le24(ev->p_latency),
|
||||
1000);
|
||||
qos->ucast.out.sdu = le16_to_cpu(ev->c_mtu);
|
||||
qos->ucast.in.sdu = le16_to_cpu(ev->p_mtu);
|
||||
qos->ucast.out.sdu = ev->c_bn ? le16_to_cpu(ev->c_mtu) : 0;
|
||||
qos->ucast.in.sdu = ev->p_bn ? le16_to_cpu(ev->p_mtu) : 0;
|
||||
qos->ucast.out.phy = ev->c_phy;
|
||||
qos->ucast.in.phy = ev->p_phy;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user