• Home
  • Raw
  • Download

Lines Matching +full:vendor +full:- +full:extension

1 // SPDX-License-Identifier: GPL-2.0-only
39 skb = __hci_cmd_sync(hdev, hdev->msft_opcode, sizeof(cp), &cp, in read_supported_features()
47 if (skb->len < sizeof(*rp)) { in read_supported_features()
52 rp = (struct msft_rp_read_supported_features *)skb->data; in read_supported_features()
54 if (rp->sub_opcode != MSFT_OP_READ_SUPPORTED_FEATURES) in read_supported_features()
57 if (rp->evt_prefix_len > 0) { in read_supported_features()
58 msft->evt_prefix = kmemdup(rp->evt_prefix, rp->evt_prefix_len, in read_supported_features()
60 if (!msft->evt_prefix) in read_supported_features()
64 msft->evt_prefix_len = rp->evt_prefix_len; in read_supported_features()
65 msft->features = __le64_to_cpu(rp->features); in read_supported_features()
79 if (hdev->msft_opcode == HCI_OP_NOP) in msft_do_open()
82 bt_dev_dbg(hdev, "Initialize MSFT extension"); in msft_do_open()
93 hdev->msft_data = msft; in msft_do_open()
98 struct msft_data *msft = hdev->msft_data; in msft_do_close()
103 bt_dev_dbg(hdev, "Cleanup of MSFT extension"); in msft_do_close()
105 hdev->msft_data = NULL; in msft_do_close()
107 kfree(msft->evt_prefix); in msft_do_close()
113 struct msft_data *msft = hdev->msft_data; in msft_vendor_evt()
119 /* When the extension has defined an event prefix, check that it in msft_vendor_evt()
122 if (msft->evt_prefix_len > 0) { in msft_vendor_evt()
123 if (skb->len < msft->evt_prefix_len) in msft_vendor_evt()
126 if (memcmp(skb->data, msft->evt_prefix, msft->evt_prefix_len)) in msft_vendor_evt()
129 skb_pull(skb, msft->evt_prefix_len); in msft_vendor_evt()
135 if (skb->len < 1) in msft_vendor_evt()
138 event = *skb->data; in msft_vendor_evt()
141 bt_dev_dbg(hdev, "MSFT vendor event %u", event); in msft_vendor_evt()
146 struct msft_data *msft = hdev->msft_data; in msft_get_features()
148 return msft ? msft->features : 0; in msft_get_features()