1 /* 2 * Copyright (c) 2019-2021 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 #ifndef __HAL_RX_FLOW_DEFINES_H 20 #define __HAL_RX_FLOW_DEFINES_H 21 22 #include "hal_flow.h" 23 24 #define HAL_FST_HASH_KEY_SIZE_BYTES 40 25 #define HAL_OFFSET(block, field) block ## _ ## field ## _OFFSET 26 27 #define HAL_RX_FST_ENTRY_SIZE (NUM_OF_DWORDS_RX_FLOW_SEARCH_ENTRY * 4) 28 29 /** 30 * struct hal_rx_flow - Rx Flow parameters to be sent to HW 31 * @tuple_info: Rx Flow 5-tuple (src & dest IP, src & dest ports, L4 protocol) 32 * @reo_destination_handler: REO destination for this flow 33 * @reo_destination_indication: REO indication for this flow 34 * @fse_metadata: Flow metadata or tag passed to HW for marking packets 35 */ 36 struct hal_rx_flow { 37 struct hal_flow_tuple_info tuple_info; 38 uint8_t reo_destination_handler; 39 uint8_t reo_destination_indication; 40 uint32_t fse_metadata; 41 }; 42 43 /** 44 * struct hal_rx_fst - HAL RX Flow search table context 45 * @base_vaddr: Virtual Base address of HW FST 46 * @base_paddr: Physical Base address of HW FST 47 * @key: Pointer to 320-bit Key read from cfg 48 * @shifted_key: Pointer to left-shifted 320-bit Key used for Toeplitz Hash 49 * @max_entries : Max number of entries in flow searchh table 50 * @max_skid_length : Max search length if there is hash collision 51 * @hash_mask: Hash mask to apply to index into FST 52 * @key_cache: Toepliz Key Cache configured key 53 * @add_flow_count: Add flow count 54 * @del_flow_count: Delete flow count 55 */ 56 struct hal_rx_fst { 57 uint8_t *base_vaddr; 58 qdf_dma_addr_t base_paddr; 59 uint8_t *key; 60 #ifndef WLAN_SUPPORT_RX_FISA 61 uint8_t shifted_key[HAL_FST_HASH_KEY_SIZE_BYTES]; 62 uint32_t key_cache[HAL_FST_HASH_KEY_SIZE_BYTES][1 << 8]; 63 #endif 64 uint16_t max_entries; 65 uint16_t max_skid_length; 66 uint16_t hash_mask; 67 uint32_t add_flow_count; 68 uint32_t del_flow_count; 69 }; 70 71 #endif /* HAL_RX_FLOW_DEFINES_H */ 72