Lines Matching full:qos

1499 static int qos_set_big(struct hci_dev *hdev, struct bt_iso_qos *qos)  in qos_set_big()  argument
1505 if (qos->bcast.big == BT_ISO_QOS_BIG_UNSET) { in qos_set_big()
1517 qos->bcast.big = big; in qos_set_big()
1523 static int qos_set_bis(struct hci_dev *hdev, struct bt_iso_qos *qos) in qos_set_bis() argument
1529 if (qos->bcast.bis == BT_ISO_QOS_BIS_UNSET) { in qos_set_bis()
1530 if (qos->bcast.big != BT_ISO_QOS_BIG_UNSET) { in qos_set_bis()
1531 conn = hci_conn_hash_lookup_big(hdev, qos->bcast.big); in qos_set_bis()
1537 qos->bcast.bis = conn->iso_qos.bcast.bis; in qos_set_bis()
1557 qos->bcast.bis = bis; in qos_set_bis()
1565 struct bt_iso_qos *qos, __u8 base_len, in hci_add_bis() argument
1578 err = qos_set_big(hdev, qos); in hci_add_bis()
1582 err = qos_set_bis(hdev, qos); in hci_add_bis()
1587 conn = hci_conn_hash_lookup_per_adv_bis(hdev, dst, qos->bcast.big, in hci_add_bis()
1588 qos->bcast.big); in hci_add_bis()
1595 conn = hci_conn_hash_lookup_big(hdev, qos->bcast.big); in hci_add_bis()
1597 if (conn && (memcmp(qos, &conn->iso_qos, sizeof(*qos)) || in hci_add_bis()
1788 static int hci_le_create_big(struct hci_conn *conn, struct bt_iso_qos *qos) in hci_le_create_big() argument
1796 data.big = qos->bcast.big; in hci_le_create_big()
1797 data.bis = qos->bcast.bis; in hci_le_create_big()
1804 cp.handle = qos->bcast.big; in hci_le_create_big()
1805 cp.adv_handle = qos->bcast.bis; in hci_le_create_big()
1807 hci_cpu_to_le24(qos->bcast.out.interval, cp.bis.sdu_interval); in hci_le_create_big()
1808 cp.bis.sdu = cpu_to_le16(qos->bcast.out.sdu); in hci_le_create_big()
1809 cp.bis.latency = cpu_to_le16(qos->bcast.out.latency); in hci_le_create_big()
1810 cp.bis.rtn = qos->bcast.out.rtn; in hci_le_create_big()
1811 cp.bis.phy = qos->bcast.out.phy; in hci_le_create_big()
1812 cp.bis.packing = qos->bcast.packing; in hci_le_create_big()
1813 cp.bis.framing = qos->bcast.framing; in hci_le_create_big()
1814 cp.bis.encryption = qos->bcast.encryption; in hci_le_create_big()
1815 memcpy(cp.bis.bcode, qos->bcast.bcode, sizeof(cp.bis.bcode)); in hci_le_create_big()
1824 struct bt_iso_qos *qos; in set_cig_params_sync() local
1834 qos = &conn->iso_qos; in set_cig_params_sync()
1836 hci_cpu_to_le24(qos->ucast.out.interval, pdu.cp.c_interval); in set_cig_params_sync()
1837 hci_cpu_to_le24(qos->ucast.in.interval, pdu.cp.p_interval); in set_cig_params_sync()
1838 pdu.cp.sca = qos->ucast.sca; in set_cig_params_sync()
1839 pdu.cp.packing = qos->ucast.packing; in set_cig_params_sync()
1840 pdu.cp.framing = qos->ucast.framing; in set_cig_params_sync()
1841 pdu.cp.c_latency = cpu_to_le16(qos->ucast.out.latency); in set_cig_params_sync()
1842 pdu.cp.p_latency = cpu_to_le16(qos->ucast.in.latency); in set_cig_params_sync()
1856 qos = &conn->iso_qos; in set_cig_params_sync()
1862 cis->c_phy = qos->ucast.out.phy ? qos->ucast.out.phy : in set_cig_params_sync()
1863 qos->ucast.in.phy; in set_cig_params_sync()
1864 cis->p_phy = qos->ucast.in.phy ? qos->ucast.in.phy : in set_cig_params_sync()
1865 qos->ucast.out.phy; in set_cig_params_sync()
1866 cis->c_rtn = qos->ucast.out.rtn; in set_cig_params_sync()
1867 cis->p_rtn = qos->ucast.in.rtn; in set_cig_params_sync()
1879 static bool hci_le_set_cig_params(struct hci_conn *conn, struct bt_iso_qos *qos) in hci_le_set_cig_params() argument
1887 if (qos->ucast.cig == BT_ISO_QOS_CIG_UNSET) { in hci_le_set_cig_params()
1906 qos->ucast.cig = data.cig; in hci_le_set_cig_params()
1909 if (qos->ucast.cis != BT_ISO_QOS_CIS_UNSET) { in hci_le_set_cig_params()
1910 if (hci_conn_hash_lookup_cis(hdev, NULL, 0, qos->ucast.cig, in hci_le_set_cig_params()
1911 qos->ucast.cis)) in hci_le_set_cig_params()
1917 for (data.cig = qos->ucast.cig, data.cis = 0x00; data.cis < 0xf0; in hci_le_set_cig_params()
1922 qos->ucast.cis = data.cis; in hci_le_set_cig_params()
1927 if (qos->ucast.cis == BT_ISO_QOS_CIS_UNSET) in hci_le_set_cig_params()
1932 UINT_PTR(qos->ucast.cig), NULL) < 0) in hci_le_set_cig_params()
1939 __u8 dst_type, struct bt_iso_qos *qos) in hci_bind_cis() argument
1943 cis = hci_conn_hash_lookup_cis(hdev, dst, dst_type, qos->ucast.cig, in hci_bind_cis()
1944 qos->ucast.cis); in hci_bind_cis()
1960 !memcmp(&cis->iso_qos, qos, sizeof(*qos))) in hci_bind_cis()
1963 /* Update LINK PHYs according to QoS preference */ in hci_bind_cis()
1964 cis->le_tx_phy = qos->ucast.out.phy; in hci_bind_cis()
1965 cis->le_rx_phy = qos->ucast.in.phy; in hci_bind_cis()
1970 if (!qos->ucast.out.interval) in hci_bind_cis()
1971 qos->ucast.out.interval = qos->ucast.in.interval; in hci_bind_cis()
1976 if (!qos->ucast.in.interval) in hci_bind_cis()
1977 qos->ucast.in.interval = qos->ucast.out.interval; in hci_bind_cis()
1982 if (!qos->ucast.out.latency) in hci_bind_cis()
1983 qos->ucast.out.latency = qos->ucast.in.latency; in hci_bind_cis()
1988 if (!qos->ucast.in.latency) in hci_bind_cis()
1989 qos->ucast.in.latency = qos->ucast.out.latency; in hci_bind_cis()
1991 if (!hci_le_set_cig_params(cis, qos)) { in hci_bind_cis()
1998 cis->iso_qos = *qos; in hci_bind_cis()
2080 struct bt_iso_io_qos *qos, __u8 phy) in hci_iso_qos_setup() argument
2083 if (!qos->sdu && qos->phy) { in hci_iso_qos_setup()
2085 qos->sdu = hdev->iso_mtu; in hci_iso_qos_setup()
2087 qos->sdu = hdev->le_mtu; in hci_iso_qos_setup()
2089 qos->sdu = hdev->acl_mtu; in hci_iso_qos_setup()
2093 if (qos->phy == BT_ISO_PHY_ANY) in hci_iso_qos_setup()
2094 qos->phy = phy; in hci_iso_qos_setup()
2097 if (!qos->interval) in hci_iso_qos_setup()
2099 qos->interval = conn->le_conn_interval * 1250; in hci_iso_qos_setup()
2102 if (!qos->latency) in hci_iso_qos_setup()
2103 qos->latency = conn->le_conn_latency; in hci_iso_qos_setup()
2109 struct bt_iso_qos *qos = &conn->iso_qos; in create_big_sync() local
2114 if (qos->bcast.out.phy == 0x02) in create_big_sync()
2118 interval = (qos->bcast.out.interval / 1250) * qos->bcast.sync_factor; in create_big_sync()
2120 if (qos->bcast.bis) in create_big_sync()
2123 err = hci_start_per_adv_sync(hdev, qos->bcast.bis, conn->le_per_adv_data_len, in create_big_sync()
2160 __u8 sid, struct bt_iso_qos *qos) in hci_pa_create_sync() argument
2173 cp->options = qos->bcast.options; in hci_pa_create_sync()
2177 cp->skip = cpu_to_le16(qos->bcast.skip); in hci_pa_create_sync()
2178 cp->sync_timeout = cpu_to_le16(qos->bcast.sync_timeout); in hci_pa_create_sync()
2179 cp->sync_cte_type = qos->bcast.sync_cte_type; in hci_pa_create_sync()
2186 struct bt_iso_qos *qos, in hci_le_big_create_sync() argument
2198 err = qos_set_big(hdev, qos); in hci_le_big_create_sync()
2203 hcon->iso_qos.bcast.big = qos->bcast.big; in hci_le_big_create_sync()
2206 pdu.cp.handle = qos->bcast.big; in hci_le_big_create_sync()
2208 pdu.cp.encryption = qos->bcast.encryption; in hci_le_big_create_sync()
2209 memcpy(pdu.cp.bcode, qos->bcast.bcode, sizeof(pdu.cp.bcode)); in hci_le_big_create_sync()
2210 pdu.cp.mse = qos->bcast.mse; in hci_le_big_create_sync()
2211 pdu.cp.timeout = cpu_to_le16(qos->bcast.timeout); in hci_le_big_create_sync()
2233 struct bt_iso_qos *qos, in hci_bind_bis() argument
2242 conn = hci_conn_hash_lookup_big_state(hdev, qos->bcast.big, BT_OPEN); in hci_bind_bis()
2244 memcpy(qos, &conn->iso_qos, sizeof(*qos)); in hci_bind_bis()
2254 conn = hci_add_bis(hdev, dst, qos, base_len, eir); in hci_bind_bis()
2258 /* Update LINK PHYs according to QoS preference */ in hci_bind_bis()
2259 conn->le_tx_phy = qos->bcast.out.phy; in hci_bind_bis()
2260 conn->le_tx_phy = qos->bcast.out.phy; in hci_bind_bis()
2268 hci_iso_qos_setup(hdev, conn, &qos->bcast.out, in hci_bind_bis()
2272 conn->iso_qos = *qos; in hci_bind_bis()
2309 __u8 dst_type, struct bt_iso_qos *qos, in hci_connect_bis() argument
2316 conn = hci_bind_bis(hdev, dst, qos, base_len, base); in hci_connect_bis()
2323 data.big = qos->bcast.big; in hci_connect_bis()
2324 data.bis = qos->bcast.bis; in hci_connect_bis()
2345 __u8 dst_type, struct bt_iso_qos *qos) in hci_connect_cis() argument
2364 hci_iso_qos_setup(hdev, le, &qos->ucast.out, in hci_connect_cis()
2366 hci_iso_qos_setup(hdev, le, &qos->ucast.in, in hci_connect_cis()
2369 cis = hci_bind_cis(hdev, dst, dst_type, qos); in hci_connect_cis()