1 /*
2 *
3 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the
16 * distribution.
17 *
18 * Neither the name of Texas Instruments Incorporated nor the names of
19 * its contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
37 /*
38 * Note: NSS_GEN2: There is no distinguish between MAC and IP broadcast (multi-cast) packet.
39 * Exception routes pa_EROUTE_MAC_BROADCAST and pa_EROUTE_MAC_MULTICAST are not supported
40 */
41 #ifdef NSS_GEN2
42 #define T8_MAC_BROADCAST_PKT_INDEX T8_IP_BROADCAST_PKT_INDEX
43 #define T8_MAC_MULTICAST_PKT_INDEX T8_IP_MULTICAST_PKT_INDEX
44 #else
45 #define T8_MAC_BROADCAST_PKT_INDEX 10
46 #define T8_MAC_MULTICAST_PKT_INDEX 11
47 #endif
48 #define T8_IP_BROADCAST_PKT_INDEX 12
49 #define T8_IP_MULTICAST_PKT_INDEX 13
52 #ifdef _TMS320C6X
53 #pragma DATA_SECTION(pkt1, ".testPkts")
54 #pragma DATA_ALIGN(pkt1, 8)
55 static uint8_t pkt1[] = {
56 #else
57 static uint8_t pkt1[] __attribute__ ((aligned (8))) = {
58 #endif
59 0x10, 0x22, 0x33, 0x44, 0x55, 0x66, 0xaa, 0xbb,
60 0xcc, 0xdd, 0xee, 0xff, 0x81, 0x00, 0x08, 0x88,
61 0x08, 0x00, 0x45, 0x00, 0x00, 0x5c, 0x00, 0x00,
62 0x00, 0x00, 0x05, 0x11, 0x75, 0x4e, 0x0a, 0x0b,
63 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x11, 0x11,
64 0x22, 0x22, 0x00, 0x48, 0x61, 0x89, 0x32, 0x33,
65 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
66 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
67 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
68 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
69 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
70 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
71 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
72 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71
73 };
75 #ifdef NSS_GEN2
76 static pasahoLongInfo_t pkt1Info = {
77 TF_FORM_PKT_INFO_WORD0(0,24,1,0,18), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 18 */
78 TF_FORM_PKT_INFO_WORD1(110,0,0,0), /* end offset = 142, errIdx, portNum = 0, nextHdr = Don't care */
79 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
80 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC|PASAHO_HDR_BITMASK_VLAN),
81 0, 0), /* bitmap, pdspNum = 1, liIndex = 0 */
82 TF_FORM_PKT_INFO_WORD4(0, 0, 1, 0, 0), /* VC, pri, vlan Count = 0, greCount = 0, ipCount = 1 */
83 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
84 };
85 #else
86 static pasahoLongInfo_t pkt1Info = {
87 TF_FORM_PKT_INFO_WORD0(0,24,18), /* cmd len = 20, start offset = 18 */
88 TF_FORM_PKT_INFO_WORD1(110,0,1,0,0,0), /* end offset = 110, pmatch set */
89 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18 */
90 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_VLAN),0,1,0,0,0,0,0), /* vlan count = 1 */
91 TF_FORM_PKT_INFO_WORD4(0)
92 };
93 #endif
95 #ifdef _TMS320C6X
96 #pragma DATA_SECTION(pkt2, ".testPkts")
97 #pragma DATA_ALIGN(pkt2, 8)
98 static uint8_t pkt2[] = {
99 #else
100 static uint8_t pkt2[] __attribute__ ((aligned (8))) = {
101 #endif
102 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0xaa, 0xbb,
103 0xcc, 0xdd, 0xee, 0xff, 0x81, 0x00, 0x08, 0x00,
104 0x45, 0x00,
105 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x11,
106 0x75, 0x4e, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15,
107 0x16, 0x17, 0x11, 0x11, 0x22, 0x22, 0x00, 0x48,
108 0x61, 0x89, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
109 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
110 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
111 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
112 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
113 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
114 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
115 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
116 0x70, 0x71
118 };
120 #ifdef NSS_GEN2
121 static pasahoLongInfo_t pkt2Info = {
122 TF_FORM_PKT_INFO_WORD0(0,24,1,0,18), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 18 */
123 TF_FORM_PKT_INFO_WORD1(108,0,0,PASAHO_HDR_IPv4), /* end offset = 108, errIdx, portNum = 0, nextHdr = IPv4 */
124 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
125 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC|PASAHO_HDR_BITMASK_VLAN),
126 1, 0), /* bitmap, pdspNum = 1, liIndex = 0 */
127 TF_FORM_PKT_INFO_WORD4(0, 0, 1, 0, 0), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 0 */
128 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
129 };
130 #else
131 static pasahoLongInfo_t pkt2Info = {
132 TF_FORM_PKT_INFO_WORD0(0,24,18), /* cmd len = 20, start offset = 18 */
133 TF_FORM_PKT_INFO_WORD1(108,0,1,0,1,0), /* end offset = 108, errIdx = 0, pmatch = 1, c2c(custom) = 0, l1PdspId = 1, l1Idx = don't care */
134 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18 */
135 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_VLAN),
136 PASAHO_HDR_IPv4,1,0,0,0,0,0), /* bitmap, nextHdr = ipv4, vlan Count = 1,
137 * ipCount = 0, gre count = 0, frag = 0,
138 * ip route = 0, multi route = 0 */
139 TF_FORM_PKT_INFO_WORD4(0)
140 };
141 #endif
143 #ifdef _TMS320C6X
144 #pragma DATA_SECTION(pkt3, ".testPkts")
145 #pragma DATA_ALIGN(pkt3, 8)
146 static uint8_t pkt3[] = {
147 #else
148 static uint8_t pkt3[] __attribute__ ((aligned (8))) = {
149 #endif
150 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0xbb,
151 0xcc, 0xdd, 0xee, 0xff, 0x08, 0x00, 0x45, 0x00,
152 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x11,
153 0x75, 0x4e, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15,
154 0x16, 0x17, 0x11, 0x11, 0x22, 0x22, 0x00, 0x48,
155 0x61, 0x89, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
156 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
157 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
158 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
159 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
160 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
161 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
162 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
163 0x70, 0x71
165 };
167 #ifdef NSS_GEN2
168 static pasahoLongInfo_t pkt3Info = {
169 TF_FORM_PKT_INFO_WORD0(0,24,0,0,14), /* cmd len = 24, pmatch = 0, frag = 0, start offset = 18 */
170 TF_FORM_PKT_INFO_WORD1(106,0,0,PASAHO_HDR_IPv4), /* end offset = 106, errIdx, portNum = 0, nextHdr = IPv4 */
171 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
172 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC),
173 0, 0), /* bitmap, pdspNum = 0, liIndex = 0 */
174 TF_FORM_PKT_INFO_WORD4(0, 0, 0, 0, 0), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 0 */
175 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
177 };
178 #else
179 static pasahoLongInfo_t pkt3Info = {
180 TF_FORM_PKT_INFO_WORD0(0,24,14), /* cmd len = 24, start offset = 14 */
181 TF_FORM_PKT_INFO_WORD1(106,0,0,0,0,0), /* end offset = 106, errIdx = 0, pmatch = 0, c2c(custom) = 0, l1PdspId = 0, l1Idx = don't care */
182 TF_FORM_PKT_INFO_WORD2(0,0,0,0), /* L3 offset = 0 */
183 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC),
184 PASAHO_HDR_IPv4,0,0,0,0,0,0), /* bitmap, nextHdr = ipv4, vlan Count = 0,
185 * ipCount = 0, gre count = 0, frag = 0,
186 * ip route = 0, multi route = 0 */
187 TF_FORM_PKT_INFO_WORD4(0)
188 };
189 #endif
191 #ifdef _TMS320C6X
192 #pragma DATA_SECTION(pkt4, ".testPkts")
193 #pragma DATA_ALIGN(pkt4, 8)
194 static uint8_t pkt4[] = {
195 #else
196 static uint8_t pkt4[] __attribute__ ((aligned (8))) = {
197 #endif
198 0x01, 0x00, 0x1e, 0x44, 0x55, 0x66, 0xaa, 0xbb,
199 0xcc, 0xdd, 0xee, 0xff, 0x08, 0x00, 0x45, 0x00,
200 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x11,
201 0x75, 0x4e, 0x0a, 0x0b, 0x0c, 0x0d, 0x14, 0x15,
202 0x16, 0x17, 0x11, 0x11, 0x22, 0x22, 0x00, 0x48,
203 0x61, 0x89, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
204 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
205 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
206 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
207 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
208 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
209 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
210 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
211 0x70, 0x71
213 };
215 #ifdef NSS_GEN2
216 static pasahoLongInfo_t pkt4Info = {
217 TF_FORM_PKT_INFO_WORD0(0,24,0,0,14), /* cmd len = 24, pmatch = 0, frag = 0, start offset = 18 */
218 TF_FORM_PKT_INFO_WORD1(106,0,0,PASAHO_HDR_IPv4), /* end offset = 106, errIdx, portNum = 0, nextHdr = IPv4 */
219 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
220 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC),
221 0, 0), /* bitmap, pdspNum = 0, liIndex = 0 */
222 TF_FORM_PKT_INFO_WORD4(0, 0, 0, 0, 0), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 0 */
223 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
225 };
226 #else
227 static pasahoLongInfo_t pkt4Info = {
228 TF_FORM_PKT_INFO_WORD0(0,24,14), /* cmd len = 24, start offset = 14 */
229 TF_FORM_PKT_INFO_WORD1(106,0,0,0,0,0), /* end offset = 106, errIdx = 0, pmatch = 0, c2c(custom) = 0, l1PdspId = 0, l1Idx = don't care */
230 TF_FORM_PKT_INFO_WORD2(0,0,0,0), /* L3 offset = 0 */
231 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC),
232 PASAHO_HDR_IPv4,0,0,0,0,0,0), /* bitmap, nextHdr = ipv4, vlan Count = 0,
233 * ipCount = 0, gre count = 0, frag = 0,
234 * ip route = 0, multi route = 0 */
235 TF_FORM_PKT_INFO_WORD4(0)
236 };
237 #endif
239 #ifdef _TMS320C6X
240 #pragma DATA_SECTION(pkt5, ".testPkts")
241 #pragma DATA_ALIGN(pkt5, 8)
242 static uint8_t pkt5[] = {
243 #else
244 static uint8_t pkt5[] __attribute__ ((aligned (8))) = {
245 #endif
246 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x1b,
247 0x1c, 0x1d, 0x1e, 0x1f, 0x08, 0x00, 0x45, 0x00,
248 0x00, 0x5c, 0x00, 0x01, 0x00, 0x00, 0x05, 0x11,
249 0x75, 0x4e, 0x0a, 0x0b, 0x0c, 0x0d, 0xff, 0xff,
250 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x00, 0x48,
251 0x61, 0x89, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
252 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
253 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
254 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
255 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
256 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
257 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
258 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
259 0x70, 0x71
261 };
263 #ifdef NSS_GEN2
264 static pasahoLongInfo_t pkt5Info = {
265 TF_FORM_PKT_INFO_WORD0(0,24,1,0,34), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 34 */
266 TF_FORM_PKT_INFO_WORD1(106,0,0,PASAHO_HDR_UDP), /* end offset = 108, errIdx, portNum = 0, nextHdr = IPv4 */
267 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
268 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IPv4),
269 0, 59), /* bitmap, pdspNum = 0, liIndex = 59 */
270 TF_FORM_PKT_INFO_WORD4(0, 0, 0, 0, 1), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 1 */
271 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
272 };
273 #else
274 static pasahoLongInfo_t pkt5Info = {
275 TF_FORM_PKT_INFO_WORD0(0,24,34), /* cmd len = 24, start offset = 34 */
276 TF_FORM_PKT_INFO_WORD1(106,0,1,0,0,59), /* end offset = 106, errIdx = 0, pmatch = 1, c2c(custom) = 0, l1PdspId = 0, l1Idx = don't care */
277 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 14 */
278 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IP),
279 PASAHO_HDR_UDP,0,1,0,0,0,0), /* bitmap, nextHdr = udp, vlan Count = 0,
280 * ipCount = 1, gre count = 0, frag = 0,
281 * ip route = 0, multi route = 0 */
282 TF_FORM_PKT_INFO_WORD4(0)
283 };
284 #endif
286 #ifdef _TMS320C6X
287 #pragma DATA_SECTION(pkt6, ".testPkts")
288 #pragma DATA_ALIGN(pkt6, 8)
289 static uint8_t pkt6[] = {
290 #else
291 static uint8_t pkt6[] __attribute__ ((aligned (8))) = {
292 #endif
293 0x01, 0x00, 0x1e, 0x14, 0x15, 0x16, 0xaa, 0xbb,
294 0xcc, 0xdd, 0xee, 0xff, 0x08, 0x00, 0x45, 0x00,
295 0x00, 0x5c, 0x00, 0x01, 0x00, 0x00, 0x05, 0x11,
296 0x75, 0x4e, 0x0a, 0x0b, 0x0c, 0x0d, 0xe1, 0x15,
297 0x16, 0x17, 0x11, 0x11, 0x22, 0x22, 0x00, 0x48,
298 0x61, 0x89, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
299 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
300 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
301 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
302 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
303 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
304 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
305 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
306 0x70, 0x71
308 };
310 #ifdef NSS_GEN2
311 static pasahoLongInfo_t pkt6Info = {
312 TF_FORM_PKT_INFO_WORD0(0,24,1,0,34), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 34 */
313 TF_FORM_PKT_INFO_WORD1(106,0,0,PASAHO_HDR_UDP), /* end offset = 108, errIdx, portNum = 0, nextHdr = IPv4 */
314 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
315 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IPv4),
316 0, 58), /* bitmap, pdspNum = 0, liIndex = 58 */
317 TF_FORM_PKT_INFO_WORD4(0, 0, 0, 0, 1), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 1 */
318 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
319 };
320 #else
321 static pasahoLongInfo_t pkt6Info = {
322 TF_FORM_PKT_INFO_WORD0(0,24,34), /* cmd len = 24, start offset = 34 */
323 TF_FORM_PKT_INFO_WORD1(106,0,1,0,0,58), /* end offset = 106, errIdx = 0, pmatch = 1, c2c(custom) = 0, l1PdspId = 0, l1Idx = don't care */
324 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 0 */
325 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IP),
326 PASAHO_HDR_UDP,0,1,0,0,0,0), /* bitmap, nextHdr = UDP, vlan Count = 0,
327 * ipCount = 1, gre count = 0, frag = 0,
328 * ip route = 0, multi route = 0 */
329 TF_FORM_PKT_INFO_WORD4(0)
330 };
331 #endif
333 #ifdef _TMS320C6X
334 #pragma DATA_SECTION(pkt7, ".testPkts")
335 #pragma DATA_ALIGN(pkt7, 8)
336 static uint8_t pkt7[] = {
337 #else
338 static uint8_t pkt7[] __attribute__ ((aligned (8))) = {
339 #endif
340 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0xaa, 0xbb,
341 0xcc, 0xdd, 0xee, 0xff, 0x81, 0x00, 0x08, 0x88,
342 0x08, 0x00, 0x45, 0x00, 0x00, 0x5c, 0x00, 0x00,
343 0x00, 0x00, 0x05, 0x11, 0x75, 0x4e, 0x0a, 0x0b,
344 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x11, 0x11,
345 0x22, 0x22, 0x00, 0x48, 0x61, 0x89, 0x32, 0x33,
346 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
347 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
348 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
349 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
350 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
351 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
352 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
353 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71
354 };
356 #ifdef NSS_GEN2
357 static pasahoLongInfo_t pkt7Info = {
358 TF_FORM_PKT_INFO_WORD0(0,24,1,0,18), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 18 */
359 TF_FORM_PKT_INFO_WORD1(110,0,0,0), /* end offset = 108, errIdx, portNum = 0, nextHdr = Don't care */
360 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
361 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_VLAN),
362 0, 0), /* bitmap, pdspNum = 0, liIndex = 59 */
363 TF_FORM_PKT_INFO_WORD4(0, 0, 1, 0, 0), /* VC, pri, vlan Count = 1, greCount = 0, ipCount = 0 */
364 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
366 };
367 #else
368 static pasahoLongInfo_t pkt7Info = {
369 TF_FORM_PKT_INFO_WORD0(0,24,18), /* cmd len = 24, start offset = 18 */
370 TF_FORM_PKT_INFO_WORD1(110,0,0,0,0,0), /* end offset = 110, pmatch clear */
371 TF_FORM_PKT_INFO_WORD2(18,0,0,0), /* L3 offset = 18 */
372 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_VLAN),0,1,0,0,0,0,0), /* vlan count = 1 */
373 TF_FORM_PKT_INFO_WORD4(0)
374 };
375 #endif
378 #ifdef _TMS320C6X
379 #pragma DATA_SECTION(pkt8, ".testPkts")
380 #pragma DATA_ALIGN(pkt8, 8)
381 static uint8_t pkt8[] = {
382 #else
383 static uint8_t pkt8[] __attribute__ ((aligned (8))) = {
384 #endif
385 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0xaa, 0xbb,
386 0xcc, 0xdd, 0xee, 0xff,
387 0x08, 0x00, 0x45, 0x00, 0x00, 0x5c, 0x00, 0x00,
388 0x00, 0x00, 0x05, 0x11, 0x75, 0x4e, 0x0a, 0x0b,
389 0x0c, 0x0d, 0x14, 0x15, 0x16, 0x17, 0x11, 0x11,
390 0x22, 0x22, 0x00, 0x48, 0x61, 0x89, 0x32, 0x33,
391 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
392 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43,
393 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b,
394 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
395 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
396 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
397 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
398 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71
399 };
401 #ifdef NSS_GEN2
402 static pasahoLongInfo_t pkt8Info = {
403 TF_FORM_PKT_INFO_WORD0(0,24,1,0,34), /* cmd len = 24, pmatch = 1, frag = 0, start offset = 34 */
404 TF_FORM_PKT_INFO_WORD1(110,0,0,PASAHO_HDR_UDP), /* end offset = 108, errIdx, portNum = 0, nextHdr = IPv4 */
405 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 18, l4Offset = 0, l5Offset = 0, ahEspOffset = 0 */
406 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IPv4),
407 0, 0), /* bitmap, pdspNum = 0, liIndex = 0 */
408 TF_FORM_PKT_INFO_WORD4(0, 0, 0, 0, 1), /* VC, pri, vlan Count = 0, greCount = 0, ipCount = 1 */
409 TF_FORM_PKT_INFO_WORD5(0) /* Pseudo header checksum */
411 };
412 #else
413 static pasahoLongInfo_t pkt8Info = {
414 TF_FORM_PKT_INFO_WORD0(0,24,34), /* cmd len = 24, start offset = 34 */
415 TF_FORM_PKT_INFO_WORD1(110,0,1,0,0,0), /* end offset = 106, pmatch set */
416 TF_FORM_PKT_INFO_WORD2(14,0,0,0), /* L3 offset = 14 */
417 TF_FORM_PKT_INFO_WORD3((PASAHO_HDR_BITMASK_MAC | PASAHO_HDR_BITMASK_IP),PASAHO_HDR_UDP,0,1,0,0,0,0), /* vlan count = 1 */
418 TF_FORM_PKT_INFO_WORD4(0)
419 };
420 #endif
423 typedef struct pktTest8Info_s {
424 uint8_t *pkt;
425 pasahoLongInfo_t *info;
426 int pktLen;
427 paStatsBmap_t statsMap[3]; /* Bit map of which stats to increment. Some stats must be incremented 3 times */
428 int idx; /* Used to increment the test tracking - tells the test to look for pkt Info */
429 int multiCount; /* Number of multiple entries */
430 } pktTest8Info_t;
433 pktTest8Info_t t8PktTestInfo[] = {
435 { (uint8_t *)pkt1, (pasahoLongInfo_t *)&pkt1Info, sizeof(pkt1),
436 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH),
437 0, 0, 1, 1 },
439 { (uint8_t *)pkt2, (pasahoLongInfo_t *)&pkt2Info, sizeof(pkt2),
440 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH),
441 0, 0, 2, 4 },
442 { (uint8_t *)pkt3, (pasahoLongInfo_t *)&pkt3Info, sizeof(pkt3),
443 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH),
444 0, 0, T8_MAC_BROADCAST_PKT_INDEX, 8 },
446 { (uint8_t *)pkt4, (pasahoLongInfo_t *)&pkt4Info, sizeof(pkt4),
447 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH),
448 0, 0, T8_MAC_MULTICAST_PKT_INDEX, 4 },
450 { (uint8_t *)pkt5, (pasahoLongInfo_t *)&pkt5Info, sizeof(pkt5),
451 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH),
452 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH) | (1 << TF_STATS_BM_C1_NUM_IPV4),
453 0, T8_IP_BROADCAST_PKT_INDEX, 8 },
455 { (uint8_t *)pkt6, (pasahoLongInfo_t *)&pkt6Info, sizeof(pkt6),
456 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH),
457 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH) | (1 << TF_STATS_BM_C1_NUM_IPV4),
458 0, T8_IP_MULTICAST_PKT_INDEX, 4 },
460 { (uint8_t *)pkt7, (pasahoLongInfo_t *)&pkt7Info, sizeof(pkt7),
461 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH) | (1 << TF_STATS_BM_C1_SILENT_DISCARD),
462 0, 0, -1, 0 },
464 { (uint8_t *)pkt8, (pasahoLongInfo_t *)&pkt8Info, sizeof(pkt8),
465 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH) | (1 << TF_STATS_BM_C1_SILENT_DISCARD),
466 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_NO_TABLE_MATCH) | (1 << TF_STATS_BM_C1_NUM_IPV4),
467 0, -1, 0 },
469 };