NVIDIA DOCA SDK
Data Center on a Chip Framework Documentation
tcp_session_table.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2023 NVIDIA CORPORATION AND AFFILIATES. All rights reserved.
3
*
4
* Redistribution and use in source and binary forms, with or without modification, are permitted
5
* provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright notice, this list of
7
* conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright notice, this list of
9
* conditions and the following disclaimer in the documentation and/or other materials
10
* provided with the distribution.
11
* * Neither the name of the NVIDIA CORPORATION nor the names of its contributors may be used
12
* to endorse or promote products derived from this software without specific prior written
13
* permission.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
16
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
17
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE
18
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
19
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
20
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
21
* STRICT LIABILITY, OR TOR (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
*
24
*/
25
26
#ifndef DOCA_GPU_PACKET_PROCESSING_TCP_SESSION_H
27
#define DOCA_GPU_PACKET_PROCESSING_TCP_SESSION_H
28
29
#include <
stdint.h
>
30
#include <rte_common.h>
31
#include <rte_byteorder.h>
32
#include <rte_hash.h>
33
34
#define TCP_SESSION_MAX_ENTRIES 4096
35
36
/* TCP session key */
37
struct
tcp_session_key
{
38
rte_be32_t
src_addr
;
/* TCP session key src addr */
39
rte_be32_t
dst_addr
;
/* TCP session key dst addr */
40
rte_be16_t
src_port
;
/* TCP session key src port */
41
rte_be16_t
dst_port
;
/* TCP session key dst port */
42
};
43
44
/* TCP session entry */
45
struct
tcp_session_entry
{
46
struct
tcp_session_key
key
;
/* TCP session key */
47
struct
doca_flow_pipe_entry *
flow
;
/* TCP session key DOCA flow entry */
48
};
49
50
/* TCP session params */
51
extern
struct
rte_hash_parameters
tcp_session_ht_params
;
52
/* TCP session table */
53
extern
struct
rte_hash *
tcp_session_table
;
54
55
/*
56
* TCP session table CRC
57
*
58
* @data [in]: Network card PCIe address
59
* @data_len [in]: DOCA device
60
* @init_val [in]: DPDK port id associated with the DOCA device
61
* @return: 0 on success and 1 otherwise
62
*/
63
uint32_t
tcp_session_table_crc
(
const
void
*data, uint32_t data_len, uint32_t init_val);
64
65
/*
66
* TCP session table CRC
67
*
68
* @key [in]: TCP session table key
69
* @return: ptr on success and NULL otherwise
70
*/
71
struct
tcp_session_entry
*
tcp_session_table_find
(
struct
tcp_session_key
*
key
);
72
73
/*
74
* TCP session table CRC
75
*
76
* @entry [in]: TCP session table key
77
*/
78
void
tcp_session_table_delete
(
struct
tcp_session_entry
*
entry
);
79
80
/*
81
* Establish new TCP session
82
*
83
* @key [in]: TCP session table key
84
* @return: ptr on success and NULL otherwise
85
*/
86
struct
tcp_session_entry
*
tcp_session_table_new
(
struct
tcp_session_key
*
key
);
87
88
#endif
entry
static struct doca_flow_pipe_entry * entry[MAX_ENTRIES]
Definition:
flow_pipe_resize_sample.c:46
stdint.h
tcp_session_entry
Definition:
tcp_session_table.h:45
tcp_session_entry::flow
struct doca_flow_pipe_entry * flow
Definition:
tcp_session_table.h:47
tcp_session_entry::key
struct tcp_session_key key
Definition:
tcp_session_table.h:46
tcp_session_key
Definition:
tcp_session_table.h:37
tcp_session_key::dst_port
rte_be16_t dst_port
Definition:
tcp_session_table.h:41
tcp_session_key::src_addr
rte_be32_t src_addr
Definition:
tcp_session_table.h:38
tcp_session_key::src_port
rte_be16_t src_port
Definition:
tcp_session_table.h:40
tcp_session_key::dst_addr
rte_be32_t dst_addr
Definition:
tcp_session_table.h:39
tcp_session_table
struct rte_hash * tcp_session_table
Definition:
tcp_session_table.c:39
tcp_session_ht_params
struct rte_hash_parameters tcp_session_ht_params
Definition:
tcp_session_table.c:30
tcp_session_table_crc
uint32_t tcp_session_table_crc(const void *data, uint32_t data_len, uint32_t init_val)
tcp_session_table_new
struct tcp_session_entry * tcp_session_table_new(struct tcp_session_key *key)
tcp_session_table_find
struct tcp_session_entry * tcp_session_table_find(struct tcp_session_key *key)
tcp_session_table_delete
void tcp_session_table_delete(struct tcp_session_entry *entry)
applications
gpu_packet_processing
dpdk_tcp
tcp_session_table.h
Generated on Wed Aug 13 2025 09:23:36 for NVIDIA DOCA SDK by
1.9.1