pktlog_ac_i.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #ifndef _PKTLOG_AC_I_
  19. #define _PKTLOG_AC_I_
  20. #ifndef REMOVE_PKT_LOG
  21. #include <ol_txrx_internal.h>
  22. #include <pktlog_ac.h>
  23. #define PKTLOG_TAG "ATH_PKTLOG"
  24. #define PKTLOG_DEFAULT_BUFSIZE (10 * 1024 * 1024) /* 10MB */
  25. #define PKTLOG_DEFAULT_SACK_THR 3
  26. #define PKTLOG_DEFAULT_TAIL_LENGTH 100
  27. #define PKTLOG_DEFAULT_THRUPUT_THRESH (64 * 1024)
  28. #define PKTLOG_DEFAULT_PER_THRESH 30
  29. #define PKTLOG_DEFAULT_PHYERR_THRESH 300
  30. #define PKTLOG_DEFAULT_TRIGGER_INTERVAL 500
  31. /* Max Pktlog buffer size received from fw/hw */
  32. #define MAX_PKTLOG_RECV_BUF_SIZE 2048
  33. struct ath_pktlog_arg {
  34. struct ath_pktlog_info *pl_info;
  35. uint32_t flags;
  36. uint16_t missed_cnt;
  37. #ifdef HELIUMPLUS
  38. uint8_t log_type;
  39. uint8_t macId;
  40. #else
  41. uint16_t log_type;
  42. #endif
  43. size_t log_size;
  44. uint16_t timestamp;
  45. #ifdef PKTLOG_HAS_SPECIFIC_DATA
  46. uint32_t type_specific_data;
  47. #endif
  48. char *buf;
  49. };
  50. void pktlog_getbuf_intsafe(struct ath_pktlog_arg *plarg);
  51. char *pktlog_getbuf(struct pktlog_dev_t *pl_dev,
  52. struct ath_pktlog_info *pl_info,
  53. size_t log_size, struct ath_pktlog_hdr *pl_hdr);
  54. #ifdef PKTLOG_HAS_SPECIFIC_DATA
  55. /**
  56. * pktlog_hdr_set_specific_data() - set type specific data
  57. * @log_hdr: pktlog header
  58. * @type_specific_data: type specific data
  59. *
  60. * Return: None
  61. */
  62. void
  63. pktlog_hdr_set_specific_data(struct ath_pktlog_hdr *log_hdr,
  64. uint32_t type_specific_data);
  65. /**
  66. * pktlog_hdr_get_specific_data() - get type specific data
  67. * @log_hdr: pktlog header
  68. * @type_specific_data: type specific data
  69. *
  70. * Return: pktlog subtype
  71. */
  72. uint32_t
  73. pktlog_hdr_get_specific_data(struct ath_pktlog_hdr *log_hdr);
  74. /**
  75. * pktlog_arg_set_specific_data() - set type specific data
  76. * @log_hdr: pktlog arg
  77. * @type_specific_data: type specific data
  78. *
  79. * Return: None
  80. */
  81. void
  82. pktlog_arg_set_specific_data(struct ath_pktlog_arg *plarg,
  83. uint32_t type_specific_data);
  84. /**
  85. * pktlog_arg_get_specific_data() - set type specific data
  86. * @log_hdr: pktlog arg
  87. * @type_specific_data: type specific data
  88. *
  89. * Return: pktlog subtype
  90. */
  91. uint32_t
  92. pktlog_arg_get_specific_data(struct ath_pktlog_arg *plarg);
  93. #else
  94. static inline void
  95. pktlog_hdr_set_specific_data(struct ath_pktlog_hdr *log_hdr,
  96. uint32_t type_specific_data)
  97. {
  98. }
  99. static inline uint32_t
  100. pktlog_hdr_get_specific_data(struct ath_pktlog_hdr *log_hdr)
  101. {
  102. return 0;
  103. }
  104. static inline void
  105. pktlog_arg_set_specific_data(struct ath_pktlog_arg *plarg,
  106. uint32_t type_specific_data)
  107. {
  108. }
  109. static inline uint32_t
  110. pktlog_arg_get_specific_data(struct ath_pktlog_arg *plarg)
  111. {
  112. return 0;
  113. }
  114. #endif /* PKTLOG_HAS_SPECIFIC_DATA */
  115. #endif /* REMOVE_PKT_LOG */
  116. #endif