Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: btintel: Read supported offload use cases

Read offload use cases supported by controller.

Signed-off-by: Kiran K <kiran.k@intel.com>
Reviewed-by: Chethan T N <chethan.tumkur.narayan@intel.com>
Reviewed-by: Srivatsa Ravishankar <ravishankar.srivatsa@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

authored by

Kiran K and committed by
Luiz Augusto von Dentz
a358ef86 9ae66402

+37
+32
drivers/bluetooth/btintel.c
··· 2158 2158 return err; 2159 2159 } 2160 2160 2161 + static int btintel_configure_offload(struct hci_dev *hdev) 2162 + { 2163 + struct sk_buff *skb; 2164 + int err = 0; 2165 + struct intel_offload_use_cases *use_cases; 2166 + 2167 + skb = __hci_cmd_sync(hdev, 0xfc86, 0, NULL, HCI_INIT_TIMEOUT); 2168 + if (IS_ERR(skb)) { 2169 + bt_dev_err(hdev, "Reading offload use cases failed (%ld)", 2170 + PTR_ERR(skb)); 2171 + return PTR_ERR(skb); 2172 + } 2173 + 2174 + if (skb->len < sizeof(*use_cases)) { 2175 + err = -EIO; 2176 + goto error; 2177 + } 2178 + 2179 + use_cases = (void *)skb->data; 2180 + 2181 + if (use_cases->status) { 2182 + err = -bt_to_errno(skb->data[0]); 2183 + goto error; 2184 + } 2185 + error: 2186 + kfree_skb(skb); 2187 + return err; 2188 + } 2189 + 2161 2190 static int btintel_bootloader_setup_tlv(struct hci_dev *hdev, 2162 2191 struct intel_version_tlv *ver) 2163 2192 { ··· 2227 2198 * fails to load the file, no need to fail the setup. 2228 2199 */ 2229 2200 btintel_load_ddc_config(hdev, ddcname); 2201 + 2202 + /* Read supported use cases and set callbacks to fetch datapath id */ 2203 + btintel_configure_offload(hdev); 2230 2204 2231 2205 hci_dev_clear_flag(hdev, HCI_QUALITY_REPORT); 2232 2206
+5
drivers/bluetooth/btintel.h
··· 132 132 __u8 page1[16]; 133 133 } __packed; 134 134 135 + struct intel_offload_use_cases { 136 + __u8 status; 137 + __u8 preset[8]; 138 + } __packed; 139 + 135 140 #define INTEL_HW_PLATFORM(cnvx_bt) ((u8)(((cnvx_bt) & 0x0000ff00) >> 8)) 136 141 #define INTEL_HW_VARIANT(cnvx_bt) ((u8)(((cnvx_bt) & 0x003f0000) >> 16)) 137 142 #define INTEL_CNVX_TOP_TYPE(cnvx_top) ((cnvx_top) & 0x00000fff)