dhd_linux_wq.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Broadcom Dongle Host Driver (DHD), Generic work queue framework
  3. * Generic interface to handle dhd deferred work events
  4. *
  5. * Portions of this code are copyright (c) 2020 Cypress Semiconductor Corporation
  6. *
  7. * Copyright (C) 1999-2020, Broadcom Corporation
  8. *
  9. * Unless you and Broadcom execute a separate written software license
  10. * agreement governing use of this software, this software is licensed to you
  11. * under the terms of the GNU General Public License version 2 (the "GPL"),
  12. * available at http://www.broadcom.com/licenses/GPLv2.php, with the
  13. * following added to such license:
  14. *
  15. * As a special exception, the copyright holders of this software give you
  16. * permission to link this software with independent modules, and to copy and
  17. * distribute the resulting executable under terms of your choice, provided that
  18. * you also meet, for each linked independent module, the terms and conditions of
  19. * the license of that module. An independent module is a module which is not
  20. * derived from this software. The special exception does not apply to any
  21. * modifications of the software.
  22. *
  23. * Notwithstanding the above, under no circumstances may you combine this
  24. * software in any way with any other Broadcom software provided under a license
  25. * other than the GPL, without Broadcom's express prior written consent.
  26. *
  27. *
  28. * <<Broadcom-WL-IPTag/Open:>>
  29. *
  30. * $Id: dhd_linux_wq.h 701044 2017-05-23 12:16:12Z $
  31. */
  32. #ifndef _dhd_linux_wq_h_
  33. #define _dhd_linux_wq_h_
  34. /*
  35. * Work event definitions
  36. */
  37. enum _wq_event {
  38. DHD_WQ_WORK_IF_ADD = 1,
  39. DHD_WQ_WORK_IF_DEL,
  40. DHD_WQ_WORK_SET_MAC,
  41. DHD_WQ_WORK_SET_MCAST_LIST,
  42. DHD_WQ_WORK_IPV6_NDO,
  43. DHD_WQ_WORK_HANG_MSG,
  44. DHD_WQ_WORK_DHD_LOG_DUMP,
  45. DHD_WQ_WORK_PKTLOG_DUMP,
  46. DHD_WQ_WORK_INFORM_DHD_MON,
  47. DHD_WQ_WORK_EVENT_LOGTRACE,
  48. DHD_WQ_WORK_DMA_LB_MEM_REL,
  49. DHD_WQ_WORK_NATOE_EVENT,
  50. DHD_WQ_WORK_NATOE_IOCTL,
  51. DHD_WQ_WORK_MACDBG,
  52. DHD_WQ_WORK_DEBUG_UART_DUMP,
  53. DHD_WQ_WORK_GET_BIGDATA_AP,
  54. DHD_WQ_WORK_SOC_RAM_DUMP,
  55. #ifdef DHD_ERPOM
  56. DHD_WQ_WORK_ERROR_RECOVERY,
  57. #endif /* DHD_ERPOM */
  58. DHD_WQ_WORK_H2D_CONSOLE_TIME_STAMP_MATCH,
  59. DHD_WQ_WORK_AXI_ERROR_DUMP,
  60. DHD_WQ_WORK_CTO_RECOVERY,
  61. #ifdef DHD_BANDSTEER
  62. DHD_WQ_WORK_BANDSTEER_STEP_MOVE,
  63. #endif /* DHD_BANDSTEER */
  64. DHD_MAX_WQ_EVENTS
  65. };
  66. /*
  67. * Work event priority
  68. */
  69. enum wq_priority {
  70. DHD_WQ_WORK_PRIORITY_LOW = 1,
  71. DHD_WQ_WORK_PRIORITY_HIGH,
  72. DHD_WQ_MAX_PRIORITY
  73. };
  74. /*
  75. * Error definitions
  76. */
  77. #define DHD_WQ_STS_OK 0
  78. #define DHD_WQ_STS_FAILED -1 /* General failure */
  79. #define DHD_WQ_STS_UNINITIALIZED -2
  80. #define DHD_WQ_STS_SCHED_FAILED -3
  81. #define DHD_WQ_STS_UNKNOWN_EVENT -4
  82. #define DHD_WQ_STS_UNKNOWN_PRIORITY -5
  83. #define DHD_WQ_STS_EVENT_SKIPPED -6
  84. typedef void (*event_handler_t)(void *handle, void *event_data, u8 event);
  85. void *dhd_deferred_work_init(void *dhd);
  86. void dhd_deferred_work_deinit(void *workq);
  87. int dhd_deferred_schedule_work(void *workq, void *event_data, u8 event,
  88. event_handler_t evt_handler, u8 priority);
  89. void dhd_deferred_work_set_skip(void *work, u8 event, bool set);
  90. #endif /* _dhd_linux_wq_h_ */