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