wbm_buffer_ring.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /*
  2. * Copyright (c) 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. //
  19. // DO NOT EDIT! This file is automatically generated
  20. // These definitions are tied to a particular hardware layout
  21. #ifndef _WBM_BUFFER_RING_H_
  22. #define _WBM_BUFFER_RING_H_
  23. #if !defined(__ASSEMBLER__)
  24. #endif
  25. #include "buffer_addr_info.h"
  26. // ################ START SUMMARY #################
  27. //
  28. // Dword Fields
  29. // 0-1 struct buffer_addr_info buf_addr_info;
  30. //
  31. // ################ END SUMMARY #################
  32. #define NUM_OF_DWORDS_WBM_BUFFER_RING 2
  33. struct wbm_buffer_ring {
  34. struct buffer_addr_info buf_addr_info;
  35. };
  36. /*
  37. struct buffer_addr_info buf_addr_info
  38. Consumer: WBM
  39. Producer: WBM
  40. Details of the physical address of the buffer + source
  41. buffer owner + some SW meta data.
  42. All modules getting this buffer address info, shall keep
  43. all the 64 bits of info in this descriptor together and
  44. eventually all 64 bits shall be given back to WMB when the
  45. buffer is released.
  46. */
  47. /* EXTERNAL REFERENCE : struct buffer_addr_info buf_addr_info */
  48. /* Description WBM_BUFFER_RING_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0
  49. Address (lower 32 bits) of the MSDU buffer OR
  50. MSDU_EXTENSION descriptor OR Link Descriptor
  51. In case of 'NULL' pointer, this field is set to 0
  52. <legal all>
  53. */
  54. #define WBM_BUFFER_RING_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
  55. #define WBM_BUFFER_RING_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  56. #define WBM_BUFFER_RING_0_BUF_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  57. /* Description WBM_BUFFER_RING_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32
  58. Address (upper 8 bits) of the MSDU buffer OR
  59. MSDU_EXTENSION descriptor OR Link Descriptor
  60. In case of 'NULL' pointer, this field is set to 0
  61. <legal all>
  62. */
  63. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
  64. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  65. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  66. /* Description WBM_BUFFER_RING_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER
  67. Consumer: WBM
  68. Producer: SW/FW
  69. In case of 'NULL' pointer, this field is set to 0
  70. Indicates to which buffer manager the buffer OR
  71. MSDU_EXTENSION descriptor OR link descriptor that is being
  72. pointed to shall be returned after the frame has been
  73. processed. It is used by WBM for routing purposes.
  74. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  75. to the WMB buffer idle list
  76. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  77. returned to the WMB idle link descriptor idle list
  78. <enum 2 FW_BM> This buffer shall be returned to the FW
  79. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  80. ring 0
  81. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  82. ring 1
  83. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  84. ring 2
  85. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  86. ring 3
  87. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  88. ring 4
  89. <legal all>
  90. */
  91. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
  92. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  93. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  94. /* Description WBM_BUFFER_RING_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE
  95. Cookie field exclusively used by SW.
  96. In case of 'NULL' pointer, this field is set to 0
  97. HW ignores the contents, accept that it passes the
  98. programmed value on to other descriptors together with the
  99. physical address
  100. Field can be used by SW to for example associate the
  101. buffers physical address with the virtual address
  102. The bit definitions as used by SW are within SW HLD
  103. specification
  104. NOTE:
  105. The three most significant bits can have a special
  106. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  107. STRUCT, and field transmit_bw_restriction is set
  108. In case of NON punctured transmission:
  109. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  110. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  111. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  112. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  113. In case of punctured transmission:
  114. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  115. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  116. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  117. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  118. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  119. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  120. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  121. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  122. Note: a punctured transmission is indicated by the
  123. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  124. TLV
  125. <legal all>
  126. */
  127. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
  128. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  129. #define WBM_BUFFER_RING_1_BUF_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  130. #endif // _WBM_BUFFER_RING_H_