Additional changes to integrate with highperf-lib, moved osal.c to highperf-lib
[keystone-rtos/netapi.git] / ti / runtime / netapi / test / net_test.h
1 /******************************************************************************
2  * FILE PURPOSE:  local defines for net_test application.
3  ******************************************************************************
4  * FILE NAME:   net_test.h
5  *
6  * DESCRIPTION: NET TEST definitions and defines
7  *
8  * REVISION HISTORY:
9  *
10  *  Copyright (c) Texas Instruments Incorporated 2010-2011
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 /* ============================================================= */
44 #define MAX_SEC_INDEX                   6
47 //IPSEC MODE(only choose one rx and one tx)
48 #define IPSEC_MODE_RX_INFLOW            1
49 #define IPSEC_MODE_TX_INFLOW            2
50 #define IPSEC_MODE_RX_SIDEBAND          3
51 #define IPSEC_MODE_TX_SIDEBAND          4
54 #define netTest_MAC_HEADER_LEN          14
55 #define netTest_IP_HEADER_LEN           20
56 #define netTest_UDP_HEADER_LEN          8
57 #define netTest_ESP_HEADER_LEN          8
58 #define netTest_AES_CBC_IV_LEN          16
59 #define netTest_AES_CTR_IV_LEN   8
60 #define netTest_3DES_CBC_IV_LEN         8
61 #define netTest_AES_GCM_IV_LEN          8
62 #define netTest_AES_CCM_IV_LEN          8
63 #define netTest_AES_GMAC_IV_LEN          8
64 #define netTest_NULL_IV_LEN             0
65 #define netTest_ICV_LEN                 12
66 #define netTest_AES_GCM_CCM_ICV_LEN     16
67 #define netTest_AES_GMAC_ICV_LEN     16
70 /* The input strings for the input config file is given below */
71 #define INIT_CONFIG_MAC0            "mac0"
72 #define INIT_CONFIG_MAC1            "mac1"
73 #define INIT_CONFIG_IP0             "ip0"
74 #define INIT_CONFIG_IP1             "ip1"
75 #define INIT_CONFIG_IP2             "ip2"
76 #define INIT_CONFIG_LOCAL_IPSEC_IP  "local_ipsec_ip"
77 #define INIT_CONFIG_REMOTE_IPSEC_IP "remote_ipsec_ip"
78 #define INIT_CONFIG_IPSEC_MODE_RX   "ipsec_mode_rx"
79 #define INIT_CONFIG_IPSEC_MODE_TX   "ipsec_mode_tx"
80 #define INIT_CONFIG_IPSEC_IF_NO     "ipsec_if"
83 #define CONFIG_STRING_LEN 25
87 #define MAX_ROUTES 16
88 /* tmannan - begin */
90 typedef struct {
91     nwalDmTxPayloadInfo_t   tx_payload_info;
92     uint8_t inner_ip_offset;
93     NETCP_CFG_SA_T rx_tunnel;
94     void * rx_data_mode_handle;
95     void * rx_inflow_mode_handle;
96     NETCP_CFG_SA_T tx_tunnel;
97     void * tx_data_mode_handle;
98     void * tx_inflow_mode_handle;
99     uint8_t enc_key_length;
100     uint8_t auth_tag_size;
101     nwalTxPktInfo_t tx_pkt_info;
102     nwal_saEALG         cipherMode;
103     nwal_saAALG         authMode;
104     /*stuff for routing use case */
105     unsigned int src;  //BE
106     unsigned int dst;  //BE
107     unsigned int spi;  //BE
108     unsigned int seq;  //BE
109     int iv_len; //iv len (size of iv in pkt)
110     int bl; //block len (for padding calc)
111 #ifdef NET_TEST_ENABLE_SIDE_BAND_LOW_LEVEL_API
112    /* Save NETCP CMD details during create time */
113     nwalTxDmPSCmdInfo_t     rx_dmPSCmdInfo;
114     nwalTxDmPSCmdInfo_t     tx_dmPSCmdInfo;
115 #endif
116 } netTestSA_t;
120 typedef struct{
121     char mac0[CONFIG_STRING_LEN];
122     char mac1[CONFIG_STRING_LEN];
123     char ip0[CONFIG_STRING_LEN];
124     char ip1[CONFIG_STRING_LEN];
125     char ip2[CONFIG_STRING_LEN];
126     char local_ipsec_ip[CONFIG_STRING_LEN];
127     char remote_ipsec_ip[CONFIG_STRING_LEN];
128     char ipsec_mode_rx[CONFIG_STRING_LEN];
129     char ipsec_mode_tx[CONFIG_STRING_LEN];
130     char routes[MAX_ROUTES][CONFIG_STRING_LEN];
131     char ports[MAX_ROUTES][CONFIG_STRING_LEN];
132     char dst_ips[MAX_ROUTES][CONFIG_STRING_LEN];
133     char paths[MAX_ROUTES][CONFIG_STRING_LEN];
134     char ipsec_if_no[CONFIG_STRING_LEN];
135 } netTestConfigFile_t;
140 typedef struct {
141 unsigned char mac0[6];
142 unsigned char mac1[6];
143 nwalIpAddr_t ip0;
144 nwalIpAddr_t ip1;
145 nwalIpAddr_t ip2;
146 nwalIpAddr_t local_ipsec_ip;
147 nwalIpAddr_t remote_ipsec_ip;
148 uint8_t ipsec_mode_rx;
149 uint8_t ipsec_mode_tx;
150 int ipsec_if_no;  /* 0 if mac0, 1 if mac 1 */
152 } netTestConfig_t;
154 typedef struct stats_t
156         long itx;  //initially generated
157         long itx2;
158         long rx;
159         long tx;
160         long n_bad;
161         long n_new;
162         long n_class0_rx;   //count of pkts classified 
163         long n_class1_rx;   //count of pkts classified 
164         long n_class2_rx;   //count of pkts classified 
165         long n_t1;
166         long n_t2;
167         long n_t3;
168         long sec_tx;
169         long sec_rx;
170         long sb_tx;
171         long sb_rx;
172         long secp_rx;
173         long n_auth_ok;
174         unsigned long long  app_cycles;
175         unsigned long long  send_cycles;
176         unsigned long long  tx_cache_cycles;
177         unsigned long long total_decrypt_time;
178         unsigned long long total_encrypt_time;
179                 long rx_min;
180                 long tx_min;
181 } STATS_T; 
183 typedef struct head_t
185         long ip[5];
186         long udp[2];
187 } HEAD_T;
189 typedef struct key_t
191   long src_ip;
192   long dst_ip;
193   short src_port;
194   short dst_port;
195 } KEY_T;