txmon_tlvs.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /*
  2. * Copyright (c) 2022,2024 Qualcomm Innovation Center, Inc. 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 _TXMON_TLVS_H_
  19. #define _TXMON_TLVS_H_
  20. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M 0x0000ffff
  21. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S 0
  22. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M 0xffff0000
  23. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S 16
  24. #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M 0x000000ff
  25. #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S 0
  26. #define TXMON_FW2SW_MON_FES_SETUP_MHZ_M 0x00ffff00
  27. #define TXMON_FW2SW_MON_FES_SETUP_MHZ_S 8
  28. #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M 0xffffffff
  29. #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S 0
  30. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M 0x000fffff
  31. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S 0
  32. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M 0x000007ff
  33. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S 0
  34. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M 0x00003800
  35. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S 11
  36. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M 0x0007c000
  37. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S 14
  38. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M 0x00080000
  39. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S 19
  40. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_GET(_var) \
  41. (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_M) >> \
  42. TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S)
  43. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_SET(_var, _val) \
  44. do { \
  45. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1, _val); \
  46. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ1_S)); \
  47. } while (0)
  48. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_GET(_var) \
  49. (((_var) & TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_M) >> \
  50. TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S)
  51. #define TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_SET(_var, _val) \
  52. do { \
  53. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2, _val); \
  54. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_BAND_CENTER_FREQ2_S)); \
  55. } while (0)
  56. #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_GET(_var) \
  57. (((_var) & TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_M) >> \
  58. TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S)
  59. #define TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_SET(_var, _val) \
  60. do { \
  61. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_PHY_MODE, _val); \
  62. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_PHY_MODE_S)); \
  63. } while (0)
  64. #define TXMON_FW2SW_MON_FES_SETUP_MHZ_GET(_var) \
  65. (((_var) & TXMON_FW2SW_MON_FES_SETUP_MHZ_M) >> \
  66. TXMON_FW2SW_MON_FES_SETUP_MHZ_S)
  67. #define TXMON_FW2SW_MON_FES_SETUP_MHZ_SET(_var, _val) \
  68. do { \
  69. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_MHZ, _val); \
  70. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_MHZ_S)); \
  71. } while (0)
  72. #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_GET(_var) \
  73. (((_var) & TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_M) >> \
  74. TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S)
  75. #define TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_SET(_var, _val) \
  76. do { \
  77. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID, _val); \
  78. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_SCHEDULE_ID_S)); \
  79. } while (0)
  80. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_GET(_var) \
  81. (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_M) >> \
  82. TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S)
  83. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SET(_var, _val) \
  84. do { \
  85. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE, _val); \
  86. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_S)); \
  87. } while (0)
  88. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_GET(_var) \
  89. (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_M) >> \
  90. TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S)
  91. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_SET(_var, _val) \
  92. do { \
  93. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM, _val); \
  94. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_SEQ_NUM_S)); \
  95. } while (0)
  96. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_GET(_var) \
  97. (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_M) >> \
  98. TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S)
  99. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_SET(_var, _val) \
  100. do { \
  101. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIEHW_LINK_ID, _val); \
  102. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_HW_LINK_ID_S)); \
  103. } while (0)
  104. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_GET(_var) \
  105. (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_M) >> \
  106. TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S)
  107. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_SET(_var, _val) \
  108. do { \
  109. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID, _val); \
  110. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_PACKET_ID_S)); \
  111. } while (0)
  112. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_GET(_var) \
  113. (((_var) & TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_M) >> \
  114. TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S)
  115. #define TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_SET(_var, _val) \
  116. do { \
  117. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID, _val); \
  118. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_FW_COOKIE_VALID_S)); \
  119. } while (0)
  120. enum txmon_fw2sw_user_id {
  121. TXMON_FW2SW_TYPE_FES_SETUP = 0, /* Placed after FES_SETUP */
  122. TXMON_FW2SW_TYPE_FES_SETUP_USER = 1, /* Placed before FES_SETUP_COMPLETE */
  123. TXMON_FW2SW_TYPE_FES_SETUP_EXT = 2, /* Placed after FES_SETUP_COMPLETE */
  124. TXMON_FW2SW_TYPE_MAX = 4
  125. };
  126. typedef struct txmon_fw2sw_fes_setup {
  127. A_UINT32 band_center_freq1 : 16,
  128. band_center_freq2 : 16;
  129. A_UINT32 phy_mode : 8, /* this field is filled with WLAN_PHY_MODE enum value */
  130. mhz : 16,
  131. reserved : 8;
  132. A_UINT32 schedule_id;
  133. A_UINT32 fw_cookie : 20,
  134. rsvd : 12;
  135. } txmon_fw2sw_fes_setup_t;
  136. typedef struct txmon_fw2sw_fes_setup_ext {
  137. A_UINT32 reserved;
  138. } txmon_fw2sw_fes_setup_ext_t;
  139. #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M 0x0000003f
  140. #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S 0
  141. #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_GET(_var) \
  142. (((_var) & TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_M) >> \
  143. TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S)
  144. #define TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_SET(_var, _val) \
  145. do { \
  146. HTT_CHECK_SET_VAL(TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID, _val); \
  147. ((_var) |= ((_val) << TXMON_FW2SW_MON_FES_SETUP_USER_USER_ID_S)); \
  148. } while (0)
  149. typedef struct txmon_fw2sw_fes_setup_user {
  150. A_UINT32 user_id : 6,
  151. reserved : 24;
  152. } txmon_fw2sw_fes_setup_user_t;
  153. struct txmon_fw2sw_mon_fes_setup_tlv {
  154. struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP */
  155. struct txmon_fw2sw_fes_setup setup;
  156. };
  157. struct txmon_fw2sw_mon_fes_setup_ext_tlv {
  158. struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_EXT*/
  159. struct txmon_fw2sw_fes_setup_ext setup_ext;
  160. };
  161. struct txmon_fw2sw_mon_fes_setup_user_tlv {
  162. struct tlv_usr_32_hdr tag; /* tlv_usrid => TXMON_FW2SW_TYPE_FES_SETUP_USER */
  163. struct txmon_fw2sw_fes_setup_user user_setup;
  164. };
  165. #endif /* _TXMON_TLVS_H_ */