hal_rx_flow_info.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
  3. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for
  6. * any purpose with or without fee is hereby granted, provided that the
  7. * above copyright notice and this permission notice appear in all
  8. * copies.
  9. *
  10. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  11. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  12. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  13. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  14. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  15. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  16. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  17. * PERFORMANCE OF THIS SOFTWARE.
  18. */
  19. #ifndef __HAL_RX_FLOW_DEFINES_H
  20. #define __HAL_RX_FLOW_DEFINES_H
  21. #include "hal_flow.h"
  22. #define HAL_FST_HASH_KEY_SIZE_BYTES 40
  23. #define HAL_OFFSET(block, field) block ## _ ## field ## _OFFSET
  24. #define HAL_RX_FST_ENTRY_SIZE (NUM_OF_DWORDS_RX_FLOW_SEARCH_ENTRY * 4)
  25. /**
  26. * struct hal_rx_flow - Rx Flow parameters to be sent to HW
  27. * @tuple_info: Rx Flow 5-tuple (src & dest IP, src & dest ports, L4 protocol)
  28. * @reo_destination_handler: REO destination for this flow
  29. * @reo_destination_indication: REO indication for this flow
  30. * @fse_metadata: Flow metadata or tag passed to HW for marking packets
  31. * @use_ppe_ds: send the pkt to REO2PPE instead of REO2HOST
  32. * @priority_vld: field used by DS
  33. * @service_code: field used by DS
  34. */
  35. struct hal_rx_flow {
  36. struct hal_flow_tuple_info tuple_info;
  37. uint8_t reo_destination_handler;
  38. uint8_t reo_destination_indication;
  39. uint32_t fse_metadata;
  40. uint8_t use_ppe_ds;
  41. uint8_t priority_vld;
  42. uint16_t service_code;
  43. };
  44. /**
  45. * struct hal_rx_fst - HAL RX Flow search table context
  46. * @base_vaddr: Virtual Base address of HW FST
  47. * @base_paddr: Physical Base address of HW FST
  48. * @key: Pointer to 320-bit Key read from cfg
  49. * @shifted_key: Pointer to left-shifted 320-bit Key used for Toeplitz Hash
  50. * @max_entries : Max number of entries in flow searchh table
  51. * @max_skid_length : Max search length if there is hash collision
  52. * @hash_mask: Hash mask to apply to index into FST
  53. * @key_cache: Toepliz Key Cache configured key
  54. * @add_flow_count: Add flow count
  55. * @del_flow_count: Delete flow count
  56. * @fst_entry_size: size of each flow entry
  57. */
  58. struct hal_rx_fst {
  59. uint8_t *base_vaddr;
  60. qdf_dma_addr_t base_paddr;
  61. uint8_t *key;
  62. #ifndef WLAN_SUPPORT_RX_FISA
  63. uint8_t shifted_key[HAL_FST_HASH_KEY_SIZE_BYTES];
  64. uint32_t key_cache[HAL_FST_HASH_KEY_SIZE_BYTES][1 << 8];
  65. #endif
  66. uint16_t max_entries;
  67. uint16_t max_skid_length;
  68. uint16_t hash_mask;
  69. uint32_t add_flow_count;
  70. uint32_t del_flow_count;
  71. uint32_t fst_entry_size;
  72. };
  73. #endif /* HAL_RX_FLOW_DEFINES_H */