root/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/trx.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. set_tx_desc_pkt_size
  2. set_tx_desc_offset
  3. set_tx_desc_bmc
  4. set_tx_desc_htc
  5. set_tx_desc_last_seg
  6. set_tx_desc_first_seg
  7. set_tx_desc_linip
  8. set_tx_desc_own
  9. get_tx_desc_own
  10. set_tx_desc_macid
  11. set_tx_desc_queue_sel
  12. set_tx_desc_rate_id
  13. set_tx_desc_nav_use_hdr
  14. set_tx_desc_sec_type
  15. set_tx_desc_pkt_offset
  16. set_tx_desc_agg_enable
  17. set_tx_desc_rdg_enable
  18. set_tx_desc_more_frag
  19. set_tx_desc_ampdu_density
  20. set_tx_desc_antsel_a
  21. set_tx_desc_antsel_b
  22. set_tx_desc_seq
  23. set_tx_desc_hwseq_en
  24. set_tx_desc_rts_rate
  25. set_tx_desc_qos
  26. set_tx_desc_use_rate
  27. set_tx_desc_disable_fb
  28. set_tx_desc_cts2self
  29. set_tx_desc_rts_enable
  30. set_tx_desc_hw_rts_enable
  31. set_tx_desc_tx_sub_carrier
  32. set_tx_desc_tx_stbc
  33. set_tx_desc_data_bw
  34. set_tx_desc_rts_short
  35. set_tx_desc_rts_bw
  36. set_tx_desc_rts_sc
  37. set_tx_desc_rts_stbc
  38. set_tx_desc_tx_rate
  39. set_tx_desc_data_shortgi
  40. set_tx_desc_data_rate_fb_limit
  41. set_tx_desc_rts_rate_fb_limit
  42. set_tx_desc_max_agg_num
  43. set_tx_desc_antsel_c
  44. set_tx_desc_tx_buffer_size
  45. get_tx_desc_tx_buffer_size
  46. set_tx_desc_tx_buffer_address
  47. get_tx_desc_tx_buffer_address
  48. set_tx_desc_next_desc_address
  49. get_rx_desc_pkt_len
  50. get_rx_desc_crc32
  51. get_rx_desc_icv
  52. get_rx_desc_drv_info_size
  53. get_rx_desc_security
  54. get_rx_desc_qos
  55. get_rx_desc_shift
  56. get_rx_desc_physt
  57. get_rx_desc_swdec
  58. get_rx_desc_ls
  59. get_rx_desc_fs
  60. get_rx_desc_eor
  61. get_rx_desc_own
  62. set_rx_desc_pkt_len
  63. set_rx_desc_eor
  64. set_rx_desc_own
  65. get_rx_desc_macid
  66. get_rx_desc_paggr
  67. get_rx_desc_faggr
  68. get_rx_desc_a1_fit
  69. get_rx_desc_a2_fit
  70. get_rx_desc_pam
  71. get_rx_desc_pwr
  72. get_rx_desc_md
  73. get_rx_desc_mf
  74. get_rx_desc_type
  75. get_rx_desc_mc
  76. get_rx_desc_bc
  77. get_rx_desc_seq
  78. get_rx_desc_frag
  79. get_rx_desc_rxmcs
  80. get_rx_desc_rxht
  81. get_rx_status_desc_rx_gf
  82. get_rx_desc_splcp
  83. get_rx_desc_bw
  84. get_rx_desc_htc
  85. get_rx_status_desc_eosp
  86. get_rx_status_desc_bssid_fit
  87. get_rx_status_desc_rpt_sel
  88. get_rx_status_desc_pattern_match
  89. get_rx_status_desc_unicast_match
  90. get_rx_status_desc_magic_match
  91. get_rx_desc_iv1
  92. get_rx_desc_tsfl
  93. get_rx_desc_buff_addr
  94. get_rx_desc_buff_addr64
  95. set_rx_desc_buff_addr
  96. set_rx_desc_buff_addr64
  97. get_rx_rpt2_desc_pkt_len
  98. get_rx_rpt2_desc_macid_valid_1
  99. get_rx_rpt2_desc_macid_valid_2
  100. set_earlymode_pktnum
  101. set_earlymode_len0
  102. set_earlymode_len1
  103. set_earlymode_len2_1
  104. set_earlymode_len2_2
  105. set_earlymode_len3
  106. set_earlymode_len4
  107. clear_pci_tx_desc_content

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* Copyright(c) 2009-2013  Realtek Corporation.*/
   3 
   4 #ifndef __RTL92CE_TRX_H__
   5 #define __RTL92CE_TRX_H__
   6 
   7 #define TX_DESC_SIZE                                    64
   8 #define TX_DESC_AGGR_SUBFRAME_SIZE              32
   9 
  10 #define RX_DESC_SIZE                                    32
  11 #define RX_DRV_INFO_SIZE_UNIT                   8
  12 
  13 #define TX_DESC_NEXT_DESC_OFFSET                40
  14 #define USB_HWDESC_HEADER_LEN                   32
  15 #define CRCLENGTH                                               4
  16 
  17 static inline void set_tx_desc_pkt_size(__le32 *__pdesc, u32 __val)
  18 {
  19         le32p_replace_bits(__pdesc, __val, GENMASK(15, 0));
  20 }
  21 
  22 static inline void set_tx_desc_offset(__le32 *__pdesc, u32 __val)
  23 {
  24         le32p_replace_bits(__pdesc, __val, GENMASK(23, 16));
  25 }
  26 
  27 static inline void set_tx_desc_bmc(__le32 *__pdesc, u32 __val)
  28 {
  29         le32p_replace_bits(__pdesc, __val, BIT(24));
  30 }
  31 
  32 static inline void set_tx_desc_htc(__le32 *__pdesc, u32 __val)
  33 {
  34         le32p_replace_bits(__pdesc, __val, BIT(25));
  35 }
  36 
  37 static inline void set_tx_desc_last_seg(__le32 *__pdesc, u32 __val)
  38 {
  39         le32p_replace_bits(__pdesc, __val, BIT(26));
  40 }
  41 
  42 static inline void set_tx_desc_first_seg(__le32 *__pdesc, u32 __val)
  43 {
  44         le32p_replace_bits(__pdesc, __val, BIT(27));
  45 }
  46 
  47 static inline void set_tx_desc_linip(__le32 *__pdesc, u32 __val)
  48 {
  49         le32p_replace_bits(__pdesc, __val, BIT(28));
  50 }
  51 
  52 static inline void set_tx_desc_own(__le32 *__pdesc, u32 __val)
  53 {
  54         le32p_replace_bits(__pdesc, __val, BIT(31));
  55 }
  56 
  57 static inline int get_tx_desc_own(__le32 *__pdesc)
  58 {
  59         return le32_get_bits(*(__pdesc), BIT(31));
  60 }
  61 
  62 static inline void set_tx_desc_macid(__le32 *__pdesc, u32 __val)
  63 {
  64         le32p_replace_bits(__pdesc + 1, __val, GENMASK(5, 0));
  65 }
  66 
  67 static inline void set_tx_desc_queue_sel(__le32 *__pdesc, u32 __val)
  68 {
  69         le32p_replace_bits(__pdesc + 1, __val, GENMASK(12, 8));
  70 }
  71 
  72 static inline void set_tx_desc_rate_id(__le32 *__pdesc, u32 __val)
  73 {
  74         le32p_replace_bits(__pdesc + 1, __val, GENMASK(19, 16));
  75 }
  76 
  77 static inline void set_tx_desc_nav_use_hdr(__le32 *__pdesc, u32 __val)
  78 {
  79         le32p_replace_bits(__pdesc + 1, __val, BIT(20));
  80 }
  81 
  82 static inline void set_tx_desc_sec_type(__le32 *__pdesc, u32 __val)
  83 {
  84         le32p_replace_bits(__pdesc + 1, __val, GENMASK(23, 22));
  85 }
  86 
  87 static inline void set_tx_desc_pkt_offset(__le32 *__pdesc, u32 __val)
  88 {
  89         le32p_replace_bits(__pdesc + 1, __val, GENMASK(30, 26));
  90 }
  91 
  92 static inline void set_tx_desc_agg_enable(__le32 *__pdesc, u32 __val)
  93 {
  94         le32p_replace_bits(__pdesc + 2, __val, BIT(12));
  95 }
  96 
  97 static inline void set_tx_desc_rdg_enable(__le32 *__pdesc, u32 __val)
  98 {
  99         le32p_replace_bits(__pdesc + 2, __val, BIT(13));
 100 }
 101 
 102 static inline void set_tx_desc_more_frag(__le32 *__pdesc, u32 __val)
 103 {
 104         le32p_replace_bits(__pdesc + 2, __val, BIT(17));
 105 }
 106 
 107 static inline void set_tx_desc_ampdu_density(__le32 *__pdesc, u32 __val)
 108 {
 109         le32p_replace_bits(__pdesc + 2, __val, GENMASK(22, 20));
 110 }
 111 
 112 static inline void set_tx_desc_antsel_a(__le32 *__pdesc, u32 __val)
 113 {
 114         le32p_replace_bits(__pdesc + 2, __val, BIT(24));
 115 }
 116 
 117 static inline void set_tx_desc_antsel_b(__le32 *__pdesc, u32 __val)
 118 {
 119         le32p_replace_bits(__pdesc + 2, __val, BIT(25));
 120 }
 121 
 122 static inline void set_tx_desc_seq(__le32 *__pdesc, u32 __val)
 123 {
 124         le32p_replace_bits(__pdesc + 3, __val, GENMASK(27, 16));
 125 }
 126 
 127 static inline void set_tx_desc_hwseq_en(__le32 *__pdesc, u32 __val)
 128 {
 129         le32p_replace_bits(__pdesc + 3, __val, BIT(31));
 130 }
 131 
 132 static inline void set_tx_desc_rts_rate(__le32 *__pdesc, u32 __val)
 133 {
 134         le32p_replace_bits(__pdesc + 4, __val, GENMASK(4, 0));
 135 }
 136 
 137 static inline void set_tx_desc_qos(__le32 *__pdesc, u32 __val)
 138 {
 139         le32p_replace_bits(__pdesc + 4, __val, BIT(6));
 140 }
 141 
 142 static inline void set_tx_desc_use_rate(__le32 *__pdesc, u32 __val)
 143 {
 144         le32p_replace_bits(__pdesc + 4, __val, BIT(8));
 145 }
 146 
 147 static inline void set_tx_desc_disable_fb(__le32 *__pdesc, u32 __val)
 148 {
 149         le32p_replace_bits(__pdesc + 4, __val, BIT(10));
 150 }
 151 
 152 static inline void set_tx_desc_cts2self(__le32 *__pdesc, u32 __val)
 153 {
 154         le32p_replace_bits(__pdesc + 4, __val, BIT(11));
 155 }
 156 
 157 static inline void set_tx_desc_rts_enable(__le32 *__pdesc, u32 __val)
 158 {
 159         le32p_replace_bits(__pdesc + 4, __val, BIT(12));
 160 }
 161 
 162 static inline void set_tx_desc_hw_rts_enable(__le32 *__pdesc, u32 __val)
 163 {
 164         le32p_replace_bits(__pdesc + 4, __val, BIT(13));
 165 }
 166 
 167 static inline void set_tx_desc_tx_sub_carrier(__le32 *__pdesc, u32 __val)
 168 {
 169         le32p_replace_bits(__pdesc + 4, __val, GENMASK(21, 20));
 170 }
 171 
 172 static inline void set_tx_desc_tx_stbc(__le32 *__pdesc, u32 __val)
 173 {
 174         le32p_replace_bits(__pdesc + 4, __val, GENMASK(23, 22));
 175 }
 176 
 177 static inline void set_tx_desc_data_bw(__le32 *__pdesc, u32 __val)
 178 {
 179         le32p_replace_bits(__pdesc + 4, __val, BIT(25));
 180 }
 181 
 182 static inline void set_tx_desc_rts_short(__le32 *__pdesc, u32 __val)
 183 {
 184         le32p_replace_bits(__pdesc + 4, __val, BIT(26));
 185 }
 186 
 187 static inline void set_tx_desc_rts_bw(__le32 *__pdesc, u32 __val)
 188 {
 189         le32p_replace_bits(__pdesc + 4, __val, BIT(27));
 190 }
 191 
 192 static inline void set_tx_desc_rts_sc(__le32 *__pdesc, u32 __val)
 193 {
 194         le32p_replace_bits(__pdesc + 4, __val, GENMASK(29, 28));
 195 }
 196 
 197 static inline void set_tx_desc_rts_stbc(__le32 *__pdesc, u32 __val)
 198 {
 199         le32p_replace_bits(__pdesc + 4, __val, GENMASK(31, 30));
 200 }
 201 
 202 static inline void set_tx_desc_tx_rate(__le32 *__pdesc, u32 __val)
 203 {
 204         le32p_replace_bits(__pdesc + 5, __val, GENMASK(5, 0));
 205 }
 206 
 207 static inline void set_tx_desc_data_shortgi(__le32 *__pdesc, u32 __val)
 208 {
 209         le32p_replace_bits(__pdesc + 5, __val, BIT(6));
 210 }
 211 
 212 static inline void set_tx_desc_data_rate_fb_limit(__le32 *__pdesc, u32 __val)
 213 {
 214         le32p_replace_bits(__pdesc + 5, __val, GENMASK(12, 8));
 215 }
 216 
 217 static inline void set_tx_desc_rts_rate_fb_limit(__le32 *__pdesc, u32 __val)
 218 {
 219         le32p_replace_bits(__pdesc + 5, __val, GENMASK(16, 13));
 220 }
 221 
 222 static inline void set_tx_desc_max_agg_num(__le32 *__pdesc, u32 __val)
 223 {
 224         le32p_replace_bits(__pdesc + 6, __val, GENMASK(15, 11));
 225 }
 226 
 227 static inline void set_tx_desc_antsel_c(__le32 *__pdesc, u32 __val)
 228 {
 229         le32p_replace_bits(__pdesc + 7, __val, BIT(29));
 230 }
 231 
 232 static inline void set_tx_desc_tx_buffer_size(__le32 *__pdesc, u32 __val)
 233 {
 234         le32p_replace_bits(__pdesc + 7, __val, GENMASK(15, 0));
 235 }
 236 
 237 static inline int get_tx_desc_tx_buffer_size(__le32 *__pdesc)
 238 {
 239         return le32_get_bits(*(__pdesc + 7), GENMASK(15, 0));
 240 }
 241 
 242 static inline void set_tx_desc_tx_buffer_address(__le32 *__pdesc, u32 __val)
 243 {
 244         *(__pdesc + 8) = cpu_to_le32(__val);
 245 }
 246 
 247 static inline u32 get_tx_desc_tx_buffer_address(__le32 *__pdesc)
 248 {
 249         return le32_to_cpu(*(__pdesc + 8));
 250 }
 251 
 252 static inline void set_tx_desc_next_desc_address(__le32 *__pdesc, u32 __val)
 253 {
 254         *(__pdesc + 10) = cpu_to_le32(__val);
 255 }
 256 
 257 static inline int get_rx_desc_pkt_len(__le32 *__pdesc)
 258 {
 259         return le32_get_bits(*(__pdesc), GENMASK(13, 0));
 260 }
 261 
 262 static inline int get_rx_desc_crc32(__le32 *__pdesc)
 263 {
 264         return le32_get_bits(*(__pdesc), BIT(14));
 265 }
 266 
 267 static inline int get_rx_desc_icv(__le32 *__pdesc)
 268 {
 269         return le32_get_bits(*(__pdesc), BIT(15));
 270 }
 271 
 272 static inline int get_rx_desc_drv_info_size(__le32 *__pdesc)
 273 {
 274         return le32_get_bits(*(__pdesc), GENMASK(19, 16));
 275 }
 276 
 277 static inline int get_rx_desc_security(__le32 *__pdesc)
 278 {
 279         return le32_get_bits(*(__pdesc), GENMASK(22, 20));
 280 }
 281 
 282 static inline int get_rx_desc_qos(__le32 *__pdesc)
 283 {
 284         return le32_get_bits(*(__pdesc), BIT(23));
 285 }
 286 
 287 static inline int get_rx_desc_shift(__le32 *__pdesc)
 288 {
 289         return le32_get_bits(*(__pdesc), GENMASK(25, 24));
 290 }
 291 
 292 static inline int get_rx_desc_physt(__le32 *__pdesc)
 293 {
 294         return le32_get_bits(*(__pdesc), BIT(26));
 295 }
 296 
 297 static inline int get_rx_desc_swdec(__le32 *__pdesc)
 298 {
 299         return le32_get_bits(*(__pdesc), BIT(27));
 300 }
 301 
 302 static inline int get_rx_desc_ls(__le32 *__pdesc)
 303 {
 304         return le32_get_bits(*(__pdesc), BIT(28));
 305 }
 306 
 307 static inline int get_rx_desc_fs(__le32 *__pdesc)
 308 {
 309         return le32_get_bits(*(__pdesc), BIT(29));
 310 }
 311 
 312 static inline int get_rx_desc_eor(__le32 *__pdesc)
 313 {
 314         return le32_get_bits(*(__pdesc), BIT(30));
 315 }
 316 
 317 static inline int get_rx_desc_own(__le32 *__pdesc)
 318 {
 319         return le32_get_bits(*(__pdesc), BIT(31));
 320 }
 321 
 322 static inline void set_rx_desc_pkt_len(__le32 *__pdesc, u32 __val)
 323 {
 324         le32p_replace_bits(__pdesc, __val, GENMASK(13, 0));
 325 }
 326 
 327 static inline void set_rx_desc_eor(__le32 *__pdesc, u32 __val)
 328 {
 329         le32p_replace_bits(__pdesc, __val, BIT(30));
 330 }
 331 
 332 static inline void set_rx_desc_own(__le32 *__pdesc, u32 __val)
 333 {
 334         le32p_replace_bits(__pdesc, __val, BIT(31));
 335 }
 336 
 337 static inline int get_rx_desc_macid(__le32 *__pdesc)
 338 {
 339         return le32_get_bits(*(__pdesc + 1), GENMASK(5, 0));
 340 }
 341 
 342 static inline int get_rx_desc_paggr(__le32 *__pdesc)
 343 {
 344         return le32_get_bits(*(__pdesc + 1), BIT(14));
 345 }
 346 
 347 static inline int get_rx_desc_faggr(__le32 *__pdesc)
 348 {
 349         return le32_get_bits(*(__pdesc + 1), BIT(15));
 350 }
 351 
 352 static inline int get_rx_desc_a1_fit(__le32 *__pdesc)
 353 {
 354         return le32_get_bits(*(__pdesc + 1), GENMASK(19, 16));
 355 }
 356 
 357 static inline int get_rx_desc_a2_fit(__le32 *__pdesc)
 358 {
 359         return le32_get_bits(*(__pdesc + 1), GENMASK(23, 20));
 360 }
 361 
 362 static inline int get_rx_desc_pam(__le32 *__pdesc)
 363 {
 364         return le32_get_bits(*(__pdesc + 1), BIT(24));
 365 }
 366 
 367 static inline int get_rx_desc_pwr(__le32 *__pdesc)
 368 {
 369         return le32_get_bits(*(__pdesc + 1), BIT(25));
 370 }
 371 
 372 static inline int get_rx_desc_md(__le32 *__pdesc)
 373 {
 374         return le32_get_bits(*(__pdesc + 1), BIT(26));
 375 }
 376 
 377 static inline int get_rx_desc_mf(__le32 *__pdesc)
 378 {
 379         return le32_get_bits(*(__pdesc + 1), BIT(27));
 380 }
 381 
 382 static inline int get_rx_desc_type(__le32 *__pdesc)
 383 {
 384         return le32_get_bits(*(__pdesc + 1), GENMASK(29, 28));
 385 }
 386 
 387 static inline int get_rx_desc_mc(__le32 *__pdesc)
 388 {
 389         return le32_get_bits(*(__pdesc + 1), BIT(30));
 390 }
 391 
 392 static inline int get_rx_desc_bc(__le32 *__pdesc)
 393 {
 394         return le32_get_bits(*(__pdesc + 1), BIT(31));
 395 }
 396 
 397 static inline int get_rx_desc_seq(__le32 *__pdesc)
 398 {
 399         return le32_get_bits(*(__pdesc + 2), GENMASK(11, 0));
 400 }
 401 
 402 static inline int get_rx_desc_frag(__le32 *__pdesc)
 403 {
 404         return le32_get_bits(*(__pdesc + 2), GENMASK(15, 12));
 405 }
 406 
 407 static inline int get_rx_desc_rxmcs(__le32 *__pdesc)
 408 {
 409         return le32_get_bits(*(__pdesc + 3), GENMASK(5, 0));
 410 }
 411 
 412 static inline int get_rx_desc_rxht(__le32 *__pdesc)
 413 {
 414         return le32_get_bits(*(__pdesc + 3), BIT(6));
 415 }
 416 
 417 static inline int get_rx_status_desc_rx_gf(__le32 *__pdesc)
 418 {
 419         return le32_get_bits(*(__pdesc + 3), BIT(7));
 420 }
 421 
 422 static inline int get_rx_desc_splcp(__le32 *__pdesc)
 423 {
 424         return le32_get_bits(*(__pdesc + 3), BIT(8));
 425 }
 426 
 427 static inline int get_rx_desc_bw(__le32 *__pdesc)
 428 {
 429         return le32_get_bits(*(__pdesc + 3), BIT(9));
 430 }
 431 
 432 static inline int get_rx_desc_htc(__le32 *__pdesc)
 433 {
 434         return le32_get_bits(*(__pdesc + 3), BIT(10));
 435 }
 436 
 437 static inline int get_rx_status_desc_eosp(__le32 *__pdesc)
 438 {
 439         return le32_get_bits(*(__pdesc + 3), BIT(11));
 440 }
 441 
 442 static inline int get_rx_status_desc_bssid_fit(__le32 *__pdesc)
 443 {
 444         return le32_get_bits(*(__pdesc + 3), GENMASK(13, 12));
 445 }
 446 
 447 static inline int get_rx_status_desc_rpt_sel(__le32 *__pdesc)
 448 {
 449         return le32_get_bits(*(__pdesc + 3), GENMASK(15, 14));
 450 }
 451 
 452 static inline int get_rx_status_desc_pattern_match(__le32 *__pdesc)
 453 {
 454         return le32_get_bits(*(__pdesc + 3), BIT(29));
 455 }
 456 
 457 static inline int get_rx_status_desc_unicast_match(__le32 *__pdesc)
 458 {
 459         return le32_get_bits(*(__pdesc + 3), BIT(30));
 460 }
 461 
 462 static inline int get_rx_status_desc_magic_match(__le32 *__pdesc)
 463 {
 464         return le32_get_bits(*(__pdesc + 3), BIT(31));
 465 }
 466 
 467 static inline u32 get_rx_desc_iv1(__le32 *__pdesc)
 468 {
 469         return le32_to_cpu(*(__pdesc + 4));
 470 }
 471 
 472 static inline u32 get_rx_desc_tsfl(__le32 *__pdesc)
 473 {
 474         return le32_to_cpu(*(__pdesc + 5));
 475 }
 476 
 477 static inline u32 get_rx_desc_buff_addr(__le32 *__pdesc)
 478 {
 479         return le32_to_cpu(*(__pdesc + 6));
 480 }
 481 
 482 static inline u32 get_rx_desc_buff_addr64(__le32 *__pdesc)
 483 {
 484         return le32_to_cpu(*(__pdesc + 7));
 485 }
 486 
 487 static inline void set_rx_desc_buff_addr(__le32 *__pdesc, u32 __val)
 488 {
 489         *(__pdesc + 6) = cpu_to_le32(__val);
 490 }
 491 
 492 static inline void set_rx_desc_buff_addr64(__le32 *__pdesc, u32 __val)
 493 {
 494         *(__pdesc + 7) = cpu_to_le32(__val);
 495 }
 496 
 497 /* TX report 2 format in Rx desc*/
 498 
 499 static inline int get_rx_rpt2_desc_pkt_len(__le32 *__status)
 500 {
 501         return le32_get_bits(*(__status), GENMASK(8, 0));
 502 }
 503 
 504 static inline u32 get_rx_rpt2_desc_macid_valid_1(__le32 *__status)
 505 {
 506         return le32_to_cpu(*(__status + 4));
 507 }
 508 
 509 static inline u32 get_rx_rpt2_desc_macid_valid_2(__le32 *__status)
 510 {
 511         return le32_to_cpu(*(__status + 5));
 512 }
 513 
 514 static inline void set_earlymode_pktnum(__le32 *__paddr, u32 __value)
 515 {
 516         le32p_replace_bits(__paddr, __value, GENMASK(3, 0));
 517 }
 518 
 519 static inline void set_earlymode_len0(__le32 *__paddr, u32 __value)
 520 {
 521         le32p_replace_bits(__paddr, __value, GENMASK(15, 4));
 522 }
 523 
 524 static inline void set_earlymode_len1(__le32 *__paddr, u32 __value)
 525 {
 526         le32p_replace_bits(__paddr, __value, GENMASK(27, 16));
 527 }
 528 
 529 static inline void set_earlymode_len2_1(__le32 *__paddr, u32 __value)
 530 {
 531         le32p_replace_bits(__paddr, __value, GENMASK(31, 28));
 532 }
 533 
 534 static inline void set_earlymode_len2_2(__le32 *__paddr, u32 __value)
 535 {
 536         le32p_replace_bits(__paddr + 1, __value, GENMASK(7, 0));
 537 }
 538 
 539 static inline void set_earlymode_len3(__le32 *__paddr, u32 __value)
 540 {
 541         le32p_replace_bits(__paddr + 1, __value, GENMASK(19, 8));
 542 }
 543 
 544 static inline void set_earlymode_len4(__le32 *__paddr, u32 __value)
 545 {
 546         le32p_replace_bits(__paddr + 1, __value, GENMASK(31, 20));
 547 }
 548 
 549 static inline void clear_pci_tx_desc_content(__le32 *__pdesc, int _size)
 550 {
 551         if (_size > TX_DESC_NEXT_DESC_OFFSET)
 552                 memset(__pdesc, 0, TX_DESC_NEXT_DESC_OFFSET);
 553         else
 554                 memset(__pdesc, 0, _size);
 555 }
 556 
 557 #define RTL8188_RX_HAL_IS_CCK_RATE(rxmcs)\
 558         (rxmcs == DESC92C_RATE1M ||\
 559          rxmcs == DESC92C_RATE2M ||\
 560          rxmcs == DESC92C_RATE5_5M ||\
 561          rxmcs == DESC92C_RATE11M)
 562 
 563 struct phy_status_rpt {
 564         u8      padding[2];
 565         u8      ch_corr[2];
 566         u8      cck_sig_qual_ofdm_pwdb_all;
 567         u8      cck_agc_rpt_ofdm_cfosho_a;
 568         u8      cck_rpt_b_ofdm_cfosho_b;
 569         u8      rsvd_1;/* ch_corr_msb; */
 570         u8      noise_power_db_msb;
 571         u8      path_cfotail[2];
 572         u8      pcts_mask[2];
 573         u8      stream_rxevm[2];
 574         u8      path_rxsnr[2];
 575         u8      noise_power_db_lsb;
 576         u8      rsvd_2[3];
 577         u8      stream_csi[2];
 578         u8      stream_target_csi[2];
 579         u8      sig_evm;
 580         u8      rsvd_3;
 581 #if defined(__LITTLE_ENDIAN)
 582         u8      antsel_rx_keep_2:1;     /*ex_intf_flg:1;*/
 583         u8      sgi_en:1;
 584         u8      rxsc:2;
 585         u8      idle_long:1;
 586         u8      r_ant_train_en:1;
 587         u8      ant_sel_b:1;
 588         u8      ant_sel:1;
 589 #else   /* __BIG_ENDIAN */
 590         u8      ant_sel:1;
 591         u8      ant_sel_b:1;
 592         u8      r_ant_train_en:1;
 593         u8      idle_long:1;
 594         u8      rxsc:2;
 595         u8      sgi_en:1;
 596         u8      antsel_rx_keep_2:1;     /*ex_intf_flg:1;*/
 597 #endif
 598 } __packed;
 599 
 600 struct rx_fwinfo_88e {
 601         u8 gain_trsw[4];
 602         u8 pwdb_all;
 603         u8 cfosho[4];
 604         u8 cfotail[4];
 605         s8 rxevm[2];
 606         s8 rxsnr[4];
 607         u8 pdsnr[2];
 608         u8 csi_current[2];
 609         u8 csi_target[2];
 610         u8 sigevm;
 611         u8 max_ex_pwr;
 612         u8 ex_intf_flag:1;
 613         u8 sgi_en:1;
 614         u8 rxsc:2;
 615         u8 reserve:4;
 616 } __packed;
 617 
 618 struct tx_desc_88e {
 619         u32 pktsize:16;
 620         u32 offset:8;
 621         u32 bmc:1;
 622         u32 htc:1;
 623         u32 lastseg:1;
 624         u32 firstseg:1;
 625         u32 linip:1;
 626         u32 noacm:1;
 627         u32 gf:1;
 628         u32 own:1;
 629 
 630         u32 macid:6;
 631         u32 rsvd0:2;
 632         u32 queuesel:5;
 633         u32 rd_nav_ext:1;
 634         u32 lsig_txop_en:1;
 635         u32 pifs:1;
 636         u32 rateid:4;
 637         u32 nav_usehdr:1;
 638         u32 en_descid:1;
 639         u32 sectype:2;
 640         u32 pktoffset:8;
 641 
 642         u32 rts_rc:6;
 643         u32 data_rc:6;
 644         u32 agg_en:1;
 645         u32 rdg_en:1;
 646         u32 bar_retryht:2;
 647         u32 agg_break:1;
 648         u32 morefrag:1;
 649         u32 raw:1;
 650         u32 ccx:1;
 651         u32 ampdudensity:3;
 652         u32 bt_int:1;
 653         u32 ant_sela:1;
 654         u32 ant_selb:1;
 655         u32 txant_cck:2;
 656         u32 txant_l:2;
 657         u32 txant_ht:2;
 658 
 659         u32 nextheadpage:8;
 660         u32 tailpage:8;
 661         u32 seq:12;
 662         u32 cpu_handle:1;
 663         u32 tag1:1;
 664         u32 trigger_int:1;
 665         u32 hwseq_en:1;
 666 
 667         u32 rtsrate:5;
 668         u32 apdcfe:1;
 669         u32 qos:1;
 670         u32 hwseq_ssn:1;
 671         u32 userrate:1;
 672         u32 dis_rtsfb:1;
 673         u32 dis_datafb:1;
 674         u32 cts2self:1;
 675         u32 rts_en:1;
 676         u32 hwrts_en:1;
 677         u32 portid:1;
 678         u32 pwr_status:3;
 679         u32 waitdcts:1;
 680         u32 cts2ap_en:1;
 681         u32 txsc:2;
 682         u32 stbc:2;
 683         u32 txshort:1;
 684         u32 txbw:1;
 685         u32 rtsshort:1;
 686         u32 rtsbw:1;
 687         u32 rtssc:2;
 688         u32 rtsstbc:2;
 689 
 690         u32 txrate:6;
 691         u32 shortgi:1;
 692         u32 ccxt:1;
 693         u32 txrate_fb_lmt:5;
 694         u32 rtsrate_fb_lmt:4;
 695         u32 retrylmt_en:1;
 696         u32 txretrylmt:6;
 697         u32 usb_txaggnum:8;
 698 
 699         u32 txagca:5;
 700         u32 txagcb:5;
 701         u32 usemaxlen:1;
 702         u32 maxaggnum:5;
 703         u32 mcsg1maxlen:4;
 704         u32 mcsg2maxlen:4;
 705         u32 mcsg3maxlen:4;
 706         u32 mcs7sgimaxlen:4;
 707 
 708         u32 txbuffersize:16;
 709         u32 sw_offset30:8;
 710         u32 sw_offset31:4;
 711         u32 rsvd1:1;
 712         u32 antsel_c:1;
 713         u32 null_0:1;
 714         u32 null_1:1;
 715 
 716         u32 txbuffaddr;
 717         u32 txbufferaddr64;
 718         u32 nextdescaddress;
 719         u32 nextdescaddress64;
 720 
 721         u32 reserve_pass_pcie_mm_limit[4];
 722 } __packed;
 723 
 724 struct rx_desc_88e {
 725         u32 length:14;
 726         u32 crc32:1;
 727         u32 icverror:1;
 728         u32 drv_infosize:4;
 729         u32 security:3;
 730         u32 qos:1;
 731         u32 shift:2;
 732         u32 phystatus:1;
 733         u32 swdec:1;
 734         u32 lastseg:1;
 735         u32 firstseg:1;
 736         u32 eor:1;
 737         u32 own:1;
 738 
 739         u32 macid:6;
 740         u32 tid:4;
 741         u32 hwrsvd:5;
 742         u32 paggr:1;
 743         u32 faggr:1;
 744         u32 a1_fit:4;
 745         u32 a2_fit:4;
 746         u32 pam:1;
 747         u32 pwr:1;
 748         u32 moredata:1;
 749         u32 morefrag:1;
 750         u32 type:2;
 751         u32 mc:1;
 752         u32 bc:1;
 753 
 754         u32 seq:12;
 755         u32 frag:4;
 756         u32 nextpktlen:14;
 757         u32 nextind:1;
 758         u32 rsvd:1;
 759 
 760         u32 rxmcs:6;
 761         u32 rxht:1;
 762         u32 amsdu:1;
 763         u32 splcp:1;
 764         u32 bandwidth:1;
 765         u32 htc:1;
 766         u32 tcpchk_rpt:1;
 767         u32 ipcchk_rpt:1;
 768         u32 tcpchk_valid:1;
 769         u32 hwpcerr:1;
 770         u32 hwpcind:1;
 771         u32 iv0:16;
 772 
 773         u32 iv1;
 774 
 775         u32 tsfl;
 776 
 777         u32 bufferaddress;
 778         u32 bufferaddress64;
 779 
 780 } __packed;
 781 
 782 void rtl88ee_tx_fill_desc(struct ieee80211_hw *hw,
 783                           struct ieee80211_hdr *hdr, u8 *pdesc_tx,
 784                           u8 *txbd, struct ieee80211_tx_info *info,
 785                           struct ieee80211_sta *sta,
 786                           struct sk_buff *skb,
 787                           u8 hw_queue, struct rtl_tcb_desc *ptcb_desc);
 788 bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw,
 789                            struct rtl_stats *status,
 790                            struct ieee80211_rx_status *rx_status,
 791                            u8 *pdesc, struct sk_buff *skb);
 792 void rtl88ee_set_desc(struct ieee80211_hw *hw, u8 *pdesc,
 793                       bool istx, u8 desc_name, u8 *val);
 794 u64 rtl88ee_get_desc(struct ieee80211_hw *hw,
 795                      u8 *pdesc, bool istx, u8 desc_name);
 796 bool rtl88ee_is_tx_desc_closed(struct ieee80211_hw *hw,
 797                                u8 hw_queue, u16 index);
 798 void rtl88ee_tx_polling(struct ieee80211_hw *hw, u8 hw_queue);
 799 void rtl88ee_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc,
 800                              bool firstseg, bool lastseg,
 801                              struct sk_buff *skb);
 802 #endif

/* [<][>][^][v][top][bottom][index][help] */