Lines Matching refs:dump

34 		   hci_dmp_cb(skb)->pkt_type, hdev->dump.state)
54 hdev->dump.state, state);
56 hdev->dump.state = state;
58 return hci_devcd_update_hdr_state(hdev->dump.head,
59 hdev->dump.alloc_size, state);
64 char dump_start[] = "--- Start dump ---\n";
72 if (hdev->dump.dmp_hdr)
73 hdev->dump.dmp_hdr(hdev, skb);
83 if (hdev->dump.notify_change)
84 hdev->dump.notify_change(hdev, state);
90 hdev->dump.head = NULL;
91 hdev->dump.tail = NULL;
92 hdev->dump.alloc_size = 0;
96 cancel_delayed_work(&hdev->dump.dump_timeout);
97 skb_queue_purge(&hdev->dump.dump_q);
103 vfree(hdev->dump.head);
111 hdev->dump.head = vmalloc(size);
112 if (!hdev->dump.head)
115 hdev->dump.alloc_size = size;
116 hdev->dump.tail = hdev->dump.head;
117 hdev->dump.end = hdev->dump.head + size;
127 if (hdev->dump.tail + size > hdev->dump.end)
130 memcpy(hdev->dump.tail, buf, size);
131 hdev->dump.tail += size;
139 if (hdev->dump.tail + len > hdev->dump.end)
142 memset(hdev->dump.tail, pattern, len);
143 hdev->dump.tail += len;
185 if (hdev->dump.state != HCI_DEVCOREDUMP_IDLE) {
191 bt_dev_dbg(hdev, "Invalid dump init pkt");
197 bt_dev_err(hdev, "Zero size dump init pkt");
202 bt_dev_err(hdev, "Failed to prepare for dump");
207 queue_delayed_work(hdev->workqueue, &hdev->dump.dump_timeout,
208 hdev->dump.timeout);
213 if (hdev->dump.state != HCI_DEVCOREDUMP_ACTIVE) {
227 if (hdev->dump.state != HCI_DEVCOREDUMP_ACTIVE) {
248 if (hdev->dump.state != HCI_DEVCOREDUMP_ACTIVE) {
254 dump_size = hdev->dump.tail - hdev->dump.head;
257 hdev->dump.alloc_size);
259 dev_coredumpv(&hdev->dev, hdev->dump.head, dump_size, GFP_KERNEL);
267 if (hdev->dump.state != HCI_DEVCOREDUMP_ACTIVE) {
273 dump_size = hdev->dump.tail - hdev->dump.head;
276 hdev->dump.alloc_size);
279 dev_coredumpv(&hdev->dev, hdev->dump.head, dump_size, GFP_KERNEL);
293 * HCI_DEVCOREDUMP_DONE: Once the dump collection is complete, the drive
298 * HCI_DEVCOREDUMP_ABORT: The driver can cancel ongoing dump collection in
314 struct hci_dev *hdev = container_of(work, struct hci_dev, dump.dump_rx);
318 while ((skb = skb_dequeue(&hdev->dump.dump_q))) {
320 * hci_devcd_timeout() will report the available dump data.
322 if (hdev->dump.state == HCI_DEVCOREDUMP_TIMEOUT) {
328 start_state = hdev->dump.state;
353 hci_dmp_cb(skb)->pkt_type, hdev->dump.state);
363 if (start_state != hdev->dump.state)
364 hci_devcd_notify(hdev, hdev->dump.state);
368 if (hdev->dump.state == HCI_DEVCOREDUMP_DONE ||
369 hdev->dump.state == HCI_DEVCOREDUMP_ABORT)
379 dump.dump_timeout.work);
386 cancel_work(&hdev->dump.dump_rx);
390 dump_size = hdev->dump.tail - hdev->dump.head;
392 hdev->dump.alloc_size);
395 dev_coredumpv(&hdev->dev, hdev->dump.head, dump_size, GFP_KERNEL);
409 * written to. The dmp_hdr() should create a dump header to identify
416 hdev->dump.coredump = coredump;
417 hdev->dump.dmp_hdr = dmp_hdr;
418 hdev->dump.notify_change = notify_change;
419 hdev->dump.supported = true;
420 hdev->dump.timeout = DEVCOREDUMP_TIMEOUT;
429 return hdev->dump.supported;
446 skb_queue_tail(&hdev->dump.dump_q, skb);
447 queue_work(hdev->workqueue, &hdev->dump.dump_rx);
465 skb_queue_tail(&hdev->dump.dump_q, skb);
466 queue_work(hdev->workqueue, &hdev->dump.dump_rx);
490 skb_queue_tail(&hdev->dump.dump_q, skb);
491 queue_work(hdev->workqueue, &hdev->dump.dump_rx);
510 skb_queue_tail(&hdev->dump.dump_q, skb);
511 queue_work(hdev->workqueue, &hdev->dump.dump_rx);
530 skb_queue_tail(&hdev->dump.dump_q, skb);
531 queue_work(hdev->workqueue, &hdev->dump.dump_rx);