113d8befe44fc2e56af0af70b121457d1d61f4d6
[keystone-rtos/netapi.git] / ti / runtime / netapi / demo / src / navl_wrapper.h
1 /******************************************************************************
2  * FILE PURPOSE:  User space access to transport resources on SOC
3  ******************************************************************************
4  * FILE NAME:   navl_wrapper.h
5  *
6  * DESCRIPTION: NAVL Wrapper definitions and data structures
7  *
8  * REVISION HISTORY:
9  *
10  *  Copyright (c) Texas Instruments Incorporated 2014
11  *
12  *  Redistribution and use in source and binary forms, with or without
13  *  modification, are permitted provided that the following conditions
14  *  are met:
15  *
16  *    Redistributions of source code must retain the above copyright
17  *    notice, this list of conditions and the following disclaimer.
18  *
19  *    Redistributions in binary form must reproduce the above copyright
20  *    notice, this list of conditions and the following disclaimer in the
21  *    documentation and/or other materials provided with the
22  *    distribution.
23  *
24  *    Neither the name of Texas Instruments Incorporated nor the names of
25  *    its contributors may be used to endorse or promote products derived
26  *    from this software without specific prior written permission.
27  *
28  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  */
41 /* ============================================================= */
42 /**
43  *   @file  netapi.h
44  *
45  *   path  ti/runtime/netapi/demo/src/navl_wrapper.h
46  *
47  *   @brief  
48  *
49  */
53 #ifndef __NAVL_WRAPPER_H
54 #define __NAVL_WRAPPER_H
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
60 #include <stdio.h>
61 #include <stdint.h>
62 #include <stdlib.h>
63 #include <stddef.h>
64 #include <string.h>
65 #include <navl/navl.h>
67 #define NUM_PROCS 3
69 #define NUM_FP_PROCS 2
72 #define MAX_BIN 10
73 typedef struct 
74 {
75     uint32_t num_threads;
76     uint32_t num_protocols;
77 } navl_wrapper_cfg_info_t;
79 /* for tracking packet stats */
80 typedef struct
81 {
82     uint64_t packets;
83     uint64_t bytes;
84     char name[9];
85     uint64_t cycles;
86     uint64_t cycles_nomem;
87     long cycles_nomem_max;
88     long cycles_nomem_min;
89     uint64_t class; //# packets classified
90     long bin_cycles[MAX_BIN];
91     uint32_t pad[3];
92 } navl_wrapper_pkt_stat_t;
96 /* for tracking packets per thread/core basis */
97 typedef struct 
98 {
99     navl_wrapper_cfg_info_t     navl_cfg;
100     navl_wrapper_pkt_stat_t     stats_pkt[2];
101 } navl_wrapper_shm_pkt_stats_t;
106 /* for tracking memory stats */
107 typedef struct
109     int64_t curr;
110     int64_t peak;
111     int64_t fail;
112 } navl_wrapper_stat_t;
117 /* instance variables */
118 typedef struct {
119 /* handles */
120     navl_handle_t           navl;
122     /* configuration */
123     const char             *config_capfile;
124     const char             *config_plugins;
125     int                     config_num_proto;
126     int                     config_conn_id_attr;
127     int                     config_http_attr;
128     int                     config_num_memctx;
129     int                     config_num_memobj;
131     /* options */
132     int                     option_dpi;
133     int                     option_simple;
134     int                     option_track_memory;
135     int                     option_limit_memory;
136     int                     option_tunnel;
137     int                     option_realtime_mode;
138     int                     option_verbose;
140     /* diagnostics */
141     int                     error_navl;
143     /* statistics */
144 #define NUM_MEM_CTX 50
145 #define NUM_MEM_OBJ 50
146     navl_wrapper_stat_t    stats_mem[NUM_MEM_CTX][NUM_MEM_OBJ];
147     char                    ctx_name[NUM_MEM_CTX][64];
148     char                    obj_name[NUM_MEM_OBJ][64];
149     navl_wrapper_pkt_stat_t *stats_pkt[2];
150     uint64_t                stats_conns;
152     /* misc vars */
153     int                     running;
154     int64_t                 alloc_curr;
155     int64_t                 alloc_peak;
156 } navl_mcb_t;
158 #ifdef __cplusplus
160 #endif
161 #endif