]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/pa-lld.git/commitdiff
GTP-U End Marker message handling enhanced to have option to route like G-PDU
authorAravind Batni <aravindbr@ti.com>
Fri, 24 Apr 2015 21:35:45 +0000 (17:35 -0400)
committerAravind Batni <aravindbr@ti.com>
Fri, 24 Apr 2015 21:35:45 +0000 (17:35 -0400)
20 files changed:
fw/classify2_bin.c
fw/v0/classify2.bib
fw/v0/classify2.p [changed mode: 0755->0644]
fw/v0/classify2_bin.c
fw/v0/pacfgcmn.p [changed mode: 0755->0644]
fw/v0/pdsp_pa.h [changed mode: 0755->0644]
fw/v0/pdsp_subs.h [changed mode: 0755->0644]
fw/v1/classify2.p
fw/v1/in4_pdsp1.bib
fw/v1/pa2_in4_pdsp1_bin.c
fw/v1/pacfgcmn.p
fw/v1/pdsp_pa.h
fw/v1/pdsp_subs.h
pa.h
src/v0/pa.c
src/v0/pafrm.h [changed mode: 0755->0644]
src/v1/pa.c
src/v1/pafrm.h
test/PAUnitTest/src/tests/test5.c [changed mode: 0755->0644]
test/PAUnitTest/src/tests/test5pkts.h [changed mode: 0755->0644]

index 605a28345cd0fab59c8bba752cb341d8f54445f4..06166d81232c713c4cef73de0ed278236fafbb6b 100644 (file)
@@ -87,7 +87,7 @@ const uint32_t c2[] =  {
      0x2e808b96,
      0x0b057601,
      0x51000106,
-     0x530401b1,
+     0x530401b3,
      0x1f1cfcfc,
      0x24002104,
      0x2f000384,
@@ -105,7 +105,7 @@ const uint32_t c2[] =  {
      0x2f000384,
      0x240000de,
      0x690b0302,
-     0x2301d19e,
+     0x2301d39e,
      0x71100302,
      0x71160308,
      0x2400109e,
@@ -138,12 +138,12 @@ const uint32_t c2[] =  {
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x2e818786,
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x2e818786,
      0xc90ed908,
      0x11073737,
@@ -167,13 +167,13 @@ const uint32_t c2[] =  {
      0x1f1ce3e3,
      0x6900c103,
      0x9081e086,
-     0x21033e00,
+     0x21034300,
      0x6901c103,
      0x9081e186,
-     0x21033e00,
+     0x21034300,
      0x6902c103,
      0x9081e286,
-     0x21033e00,
+     0x21034300,
      0x11073737,
      0x13583737,
      0x21008200,
@@ -184,18 +184,18 @@ const uint32_t c2[] =  {
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x24000ce6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0xc90aff04,
      0x24000ae6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x59188004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2e80838a,
      0xd1002a06,
      0x0101dddd,
@@ -215,7 +215,7 @@ const uint32_t c2[] =  {
      0x61104a04,
      0x240012e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09044a81,
      0x01018181,
      0x90811a01,
@@ -246,11 +246,11 @@ const uint32_t c2[] =  {
      0xd10aff00,
      0xd101ff00,
      0x21001000,
-     0x2101f100,
+     0x2101f300,
      0xc90aff04,
      0x24000ae6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x6900dd04,
      0x240009e6,
      0x2f008186,
@@ -266,7 +266,7 @@ const uint32_t c2[] =  {
      0x71104a04,
      0x240012e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x09044a81,
      0x01018181,
      0x90811a01,
@@ -275,7 +275,7 @@ const uint32_t c2[] =  {
      0xc9012a02,
      0x1d001d1d,
      0x81306b92,
-     0x2101f100,
+     0x2101f300,
      0x240001e3,
      0x81042b83,
      0x2eff819d,
@@ -284,8 +284,8 @@ const uint32_t c2[] =  {
      0x240131d1,
      0x24015a91,
      0x240174d2,
-     0x2401d192,
-     0x2401acd3,
+     0x2401d392,
+     0x2401aed3,
      0x24002c00,
      0x01020000,
      0x05220000,
@@ -437,8 +437,8 @@ const uint32_t c2[] =  {
      0x01042121,
      0xc9026607,
      0x51000806,
-     0x69c00824,
-     0x69000923,
+     0x69c00826,
+     0x69000925,
      0x01042121,
      0x1f045656,
      0x813807a9,
@@ -470,7 +470,9 @@ const uint32_t c2[] =  {
      0x691f4603,
      0x13983737,
      0x209e0000,
-     0x69fe4603,
+     0x69fe4605,
+     0xc9031d02,
+     0x21018000,
      0x13a03737,
      0x209e0000,
      0x13a83737,
@@ -530,18 +532,18 @@ const uint32_t c2[] =  {
      0x51ce4704,
      0x240001e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2400005a,
      0x5103670a,
      0x5104670a,
-     0x5306670f,
+     0x53066712,
      0x510c6781,
-     0x53096732,
+     0x53096735,
      0x5105671f,
-     0x53076727,
+     0x5307672a,
      0x240002e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x21008d00,
      0x2100c800,
      0x69062915,
@@ -562,7 +564,7 @@ const uint32_t c2[] =  {
      0x2400f024,
      0x91001761,
      0x59030002,
-     0x2301d89e,
+     0x2301da9e,
      0x2f000384,
      0x21001000,
      0x240021e4,
@@ -571,7 +573,7 @@ const uint32_t c2[] =  {
      0x59388004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x240000e6,
      0x2f008186,
      0x2e80878a,
@@ -663,7 +665,7 @@ const uint32_t c2[] =  {
      0xe10c2281,
      0x240050e2,
      0xe10c2281,
-     0x2101f100,
+     0x2101f300,
      0x240000e6,
      0x2f008186,
      0x2e80838a,
@@ -673,22 +675,22 @@ const uint32_t c2[] =  {
      0x58c08004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x240018c4,
      0x2f000384,
-     0x2102ec00,
+     0x2102f100,
      0x240014c4,
      0x2f000384,
      0x69016a17,
      0x593c8004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80838e,
      0x71046e04,
      0x240011e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -701,48 +703,51 @@ const uint32_t c2[] =  {
      0x8281f38e,
      0x240020c4,
      0x2f000384,
-     0x2101f100,
+     0x2101f300,
      0x69026a0e,
      0x59248004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80878e,
      0x71106e04,
      0x240012e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09046e81,
      0x01008181,
      0x8081fa8e,
-     0x2101f100,
+     0x2101f300,
      0x69046a0b,
      0x59188004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80818e,
      0x1d021d1d,
      0xc9006e02,
      0x1f021d1d,
      0x81b8338e,
-     0x2101f100,
-     0x69056a0a,
+     0x2101f300,
+     0x69056a0d,
      0x59188004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80818e,
      0x1d011d1d,
      0xc9006e02,
      0x1f011d1d,
-     0x2101f100,
+     0x1d031d1d,
+     0xc9016e02,
+     0x1f031d1d,
+     0x2101f300,
      0x69086a1b,
      0x24004cc0,
      0x58c08004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -762,14 +767,14 @@ const uint32_t c2[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2102ba00,
-     0x2101f100,
+     0x2102bf00,
+     0x2101f300,
      0x69096a1c,
      0x2400b0c0,
      0x58c08004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e808d8e,
      0x240200c2,
      0x51006e13,
@@ -785,16 +790,16 @@ const uint32_t c2[] =  {
      0x8082fe91,
      0x01108282,
      0x05014e4e,
-     0x2102db00,
+     0x2102e000,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2102d500,
-     0x2101f100,
+     0x2102da00,
+     0x2101f300,
      0x240002e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -804,7 +809,7 @@ const uint32_t c2[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x2101f100,
+     0x2101f300,
      0x2e80818a,
      0x24000004,
      0x240014c4,
@@ -831,8 +836,8 @@ const uint32_t c2[] =  {
      0x10e2e2e5,
      0x2f000384,
      0x9083e286,
-     0x2101f100,
-     0x2101f100,
+     0x2101f300,
+     0x2101f300,
      0x24000004,
      0x240010c4,
      0x2f000384,
@@ -841,12 +846,12 @@ const uint32_t c2[] =  {
      0x2f000384,
      0x9100b78e,
      0x2f00858e,
-     0x2101f100,
+     0x2101f300,
      0x240058c0,
      0x58c08004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2e80838a,
      0x106a6a24,
      0x10ebebe5,
@@ -876,7 +881,7 @@ const uint32_t c2[] =  {
      0x01040101,
      0x01012424,
      0x671024fc,
-     0x2101f100,
+     0x2101f300,
      0x10d7d790,
      0x24000442,
      0x69026619,
@@ -890,7 +895,7 @@ const uint32_t c2[] =  {
      0x11e08181,
      0x51014703,
      0x240016c1,
-     0x21034d00,
+     0x21035200,
      0x24000dc1,
      0x12c18181,
      0x812c07c1,
@@ -932,7 +937,7 @@ const uint32_t c2[] =  {
      0x11c03900,
      0x51000003,
      0x107b7b21,
-     0x21037b00,
+     0x21038000,
      0xd1010105,
      0x11073900,
      0x51000003,
@@ -944,11 +949,11 @@ const uint32_t c2[] =  {
      0x00214646,
      0x00018686,
      0x24000642,
-     0x21038c00,
+     0x21039100,
      0x00228686,
      0xc9016809,
      0x00224646,
-     0x21038c00,
+     0x21039100,
      0xc9026803,
      0x007b8686,
      0x24000642,
index e416e9948a8aa760bfbacdd91cba597cfe295239..2a8eae9e0e213776d41d8e9426285b67a91a0628 100644 (file)
Binary files a/fw/v0/classify2.bib and b/fw/v0/classify2.bib differ
old mode 100755 (executable)
new mode 100644 (file)
index d2bb96f..e4015ca
@@ -1590,7 +1590,8 @@ l_c2ParseGtpu1:
         \r
 l_c2ParseGtpu2:\r
     qbne    l_c2ParseGtpu3, s_gtp.msgType,  255\r
-    \r
+\r
+l_c2ParseGtpu2_0:    \r
         mov r1.b1, GTPV1_HEADER_LEN_BYTES \r
         and r1.b0, s_gtp.ctrl, GTP_CTRL_MASK \r
         \r
@@ -1661,6 +1662,12 @@ l_c2ParseGtpu6:
          \r
 l_c2ParseGtpu7:\r
     qbne    l_c2ParseGtpu_Err, s_gtp.msgType, 254\r
+      // Check if the routing feature of treating End marker same as G-PDU is enabled\r
+      qbbc  l_c2ParseGtpu7_0, s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255\r
+        // Route same as message 255 if the message type is 254\r
+        jmp l_c2ParseGtpu2_0\r
+\r
+l_c2ParseGtpu7_0:\r
         or  s_pktCxt2.eP1C2Id,  s_pktCxt2.eP1C2Id,  EROUTE_GTPU_MESSAGE_TYPE_254 << PKT2_EIDX_SHIFT\r
         ret  \r
     \r
index 605a28345cd0fab59c8bba752cb341d8f54445f4..06166d81232c713c4cef73de0ed278236fafbb6b 100644 (file)
@@ -87,7 +87,7 @@ const uint32_t c2[] =  {
      0x2e808b96,
      0x0b057601,
      0x51000106,
-     0x530401b1,
+     0x530401b3,
      0x1f1cfcfc,
      0x24002104,
      0x2f000384,
@@ -105,7 +105,7 @@ const uint32_t c2[] =  {
      0x2f000384,
      0x240000de,
      0x690b0302,
-     0x2301d19e,
+     0x2301d39e,
      0x71100302,
      0x71160308,
      0x2400109e,
@@ -138,12 +138,12 @@ const uint32_t c2[] =  {
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x2e818786,
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x2e818786,
      0xc90ed908,
      0x11073737,
@@ -167,13 +167,13 @@ const uint32_t c2[] =  {
      0x1f1ce3e3,
      0x6900c103,
      0x9081e086,
-     0x21033e00,
+     0x21034300,
      0x6901c103,
      0x9081e186,
-     0x21033e00,
+     0x21034300,
      0x6902c103,
      0x9081e286,
-     0x21033e00,
+     0x21034300,
      0x11073737,
      0x13583737,
      0x21008200,
@@ -184,18 +184,18 @@ const uint32_t c2[] =  {
      0x2eff8183,
      0x1f1ce3e3,
      0x2400109e,
-     0x21033e00,
+     0x21034300,
      0x24000ce6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0xc90aff04,
      0x24000ae6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x59188004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2e80838a,
      0xd1002a06,
      0x0101dddd,
@@ -215,7 +215,7 @@ const uint32_t c2[] =  {
      0x61104a04,
      0x240012e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09044a81,
      0x01018181,
      0x90811a01,
@@ -246,11 +246,11 @@ const uint32_t c2[] =  {
      0xd10aff00,
      0xd101ff00,
      0x21001000,
-     0x2101f100,
+     0x2101f300,
      0xc90aff04,
      0x24000ae6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x6900dd04,
      0x240009e6,
      0x2f008186,
@@ -266,7 +266,7 @@ const uint32_t c2[] =  {
      0x71104a04,
      0x240012e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x09044a81,
      0x01018181,
      0x90811a01,
@@ -275,7 +275,7 @@ const uint32_t c2[] =  {
      0xc9012a02,
      0x1d001d1d,
      0x81306b92,
-     0x2101f100,
+     0x2101f300,
      0x240001e3,
      0x81042b83,
      0x2eff819d,
@@ -284,8 +284,8 @@ const uint32_t c2[] =  {
      0x240131d1,
      0x24015a91,
      0x240174d2,
-     0x2401d192,
-     0x2401acd3,
+     0x2401d392,
+     0x2401aed3,
      0x24002c00,
      0x01020000,
      0x05220000,
@@ -437,8 +437,8 @@ const uint32_t c2[] =  {
      0x01042121,
      0xc9026607,
      0x51000806,
-     0x69c00824,
-     0x69000923,
+     0x69c00826,
+     0x69000925,
      0x01042121,
      0x1f045656,
      0x813807a9,
@@ -470,7 +470,9 @@ const uint32_t c2[] =  {
      0x691f4603,
      0x13983737,
      0x209e0000,
-     0x69fe4603,
+     0x69fe4605,
+     0xc9031d02,
+     0x21018000,
      0x13a03737,
      0x209e0000,
      0x13a83737,
@@ -530,18 +532,18 @@ const uint32_t c2[] =  {
      0x51ce4704,
      0x240001e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2400005a,
      0x5103670a,
      0x5104670a,
-     0x5306670f,
+     0x53066712,
      0x510c6781,
-     0x53096732,
+     0x53096735,
      0x5105671f,
-     0x53076727,
+     0x5307672a,
      0x240002e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x21008d00,
      0x2100c800,
      0x69062915,
@@ -562,7 +564,7 @@ const uint32_t c2[] =  {
      0x2400f024,
      0x91001761,
      0x59030002,
-     0x2301d89e,
+     0x2301da9e,
      0x2f000384,
      0x21001000,
      0x240021e4,
@@ -571,7 +573,7 @@ const uint32_t c2[] =  {
      0x59388004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x240000e6,
      0x2f008186,
      0x2e80878a,
@@ -663,7 +665,7 @@ const uint32_t c2[] =  {
      0xe10c2281,
      0x240050e2,
      0xe10c2281,
-     0x2101f100,
+     0x2101f300,
      0x240000e6,
      0x2f008186,
      0x2e80838a,
@@ -673,22 +675,22 @@ const uint32_t c2[] =  {
      0x58c08004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x240018c4,
      0x2f000384,
-     0x2102ec00,
+     0x2102f100,
      0x240014c4,
      0x2f000384,
      0x69016a17,
      0x593c8004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80838e,
      0x71046e04,
      0x240011e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -701,48 +703,51 @@ const uint32_t c2[] =  {
      0x8281f38e,
      0x240020c4,
      0x2f000384,
-     0x2101f100,
+     0x2101f300,
      0x69026a0e,
      0x59248004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80878e,
      0x71106e04,
      0x240012e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x09046e81,
      0x01008181,
      0x8081fa8e,
-     0x2101f100,
+     0x2101f300,
      0x69046a0b,
      0x59188004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80818e,
      0x1d021d1d,
      0xc9006e02,
      0x1f021d1d,
      0x81b8338e,
-     0x2101f100,
-     0x69056a0a,
+     0x2101f300,
+     0x69056a0d,
      0x59188004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e80818e,
      0x1d011d1d,
      0xc9006e02,
      0x1f011d1d,
-     0x2101f100,
+     0x1d031d1d,
+     0xc9016e02,
+     0x1f031d1d,
+     0x2101f300,
      0x69086a1b,
      0x24004cc0,
      0x58c08004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -762,14 +767,14 @@ const uint32_t c2[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x2102ba00,
-     0x2101f100,
+     0x2102bf00,
+     0x2101f300,
      0x69096a1c,
      0x2400b0c0,
      0x58c08004,
      0x240010e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x2e808d8e,
      0x240200c2,
      0x51006e13,
@@ -785,16 +790,16 @@ const uint32_t c2[] =  {
      0x8082fe91,
      0x01108282,
      0x05014e4e,
-     0x2102db00,
+     0x2102e000,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2102d500,
-     0x2101f100,
+     0x2102da00,
+     0x2101f300,
      0x240002e6,
      0x1f007a7a,
-     0x2101f100,
+     0x2101f300,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -804,7 +809,7 @@ const uint32_t c2[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x2101f100,
+     0x2101f300,
      0x2e80818a,
      0x24000004,
      0x240014c4,
@@ -831,8 +836,8 @@ const uint32_t c2[] =  {
      0x10e2e2e5,
      0x2f000384,
      0x9083e286,
-     0x2101f100,
-     0x2101f100,
+     0x2101f300,
+     0x2101f300,
      0x24000004,
      0x240010c4,
      0x2f000384,
@@ -841,12 +846,12 @@ const uint32_t c2[] =  {
      0x2f000384,
      0x9100b78e,
      0x2f00858e,
-     0x2101f100,
+     0x2101f300,
      0x240058c0,
      0x58c08004,
      0x240010e6,
      0x2f008186,
-     0x2101f100,
+     0x2101f300,
      0x2e80838a,
      0x106a6a24,
      0x10ebebe5,
@@ -876,7 +881,7 @@ const uint32_t c2[] =  {
      0x01040101,
      0x01012424,
      0x671024fc,
-     0x2101f100,
+     0x2101f300,
      0x10d7d790,
      0x24000442,
      0x69026619,
@@ -890,7 +895,7 @@ const uint32_t c2[] =  {
      0x11e08181,
      0x51014703,
      0x240016c1,
-     0x21034d00,
+     0x21035200,
      0x24000dc1,
      0x12c18181,
      0x812c07c1,
@@ -932,7 +937,7 @@ const uint32_t c2[] =  {
      0x11c03900,
      0x51000003,
      0x107b7b21,
-     0x21037b00,
+     0x21038000,
      0xd1010105,
      0x11073900,
      0x51000003,
@@ -944,11 +949,11 @@ const uint32_t c2[] =  {
      0x00214646,
      0x00018686,
      0x24000642,
-     0x21038c00,
+     0x21039100,
      0x00228686,
      0xc9016809,
      0x00224646,
-     0x21038c00,
+     0x21039100,
      0xc9026803,
      0x007b8686,
      0x24000642,
old mode 100755 (executable)
new mode 100644 (file)
index d469368..2a13302
@@ -731,6 +731,11 @@ l_paSysConfigPa5a:
             set  s_runCxt.ctrlFlag.t_c2_GTPU_use_link\r
                \r
 l_paSysConfigPa5b:\r
+       clr  s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255\r
+       qbbc l_paSysConfigPa5c, s_paGtpuCfg.ctrlBitMap.t_pa_gtpu_msg254_as_msg255\r
+            set  s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255       \r
+\r
+l_paSysConfigPa5c:\r
        jmp f_cfgReply\r
        \r
     .leave lut2Scope\r
old mode 100755 (executable)
new mode 100644 (file)
index 540c720..a3bed0c
 .ends\r
 \r
 #define t_pa_gtpu_control_use_link          t0\r
+#define t_pa_gtpu_msg254_as_msg255          t1\r
 \r
 // Packet Capture Header \r
 .struct struct_pcap_hdr\r
old mode 100755 (executable)
new mode 100644 (file)
index a8007c4..e57d7bc
 //\r
 #define t_c2_enable_IPSEC_NAT_T t2\r
 \r
+// \r
+// GTPU End Marker message route as G-PDU\r
+//\r
+#define t_c2_GTPU_route_msg254_as_msg255    t3\r
+\r
+\r
 #define SUBS_MAX_LUT2_ENTRIES  8192\r
 \r
 // Multi routing tables\r
index 41e9e05bfc0c5c5d30631f5a75a4b99ed3e26271..ff12618c2d7b8dcc0276b42afa8d5670b0777133 100644 (file)
@@ -1825,6 +1825,7 @@ l_c2ParseGtpu1:
 l_c2ParseGtpu2:
     qbne    l_c2ParseGtpu3, s_gtp.msgType,  255
     
+l_c2ParseGtpu2_0:    
         mov r1.b1, GTPV1_HEADER_LEN_BYTES 
         and r1.b0, s_gtp.ctrl, GTP_CTRL_MASK 
         
@@ -1901,6 +1902,12 @@ l_c2ParseGtpu6:
          
 l_c2ParseGtpu7:
     qbne    l_c2ParseGtpu_Err, s_gtp.msgType, 254
+      // Check if the routing feature of treating End marker same as G-PDU is enabled
+      qbbc  l_c2ParseGtpu7_0, s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255
+        // Route same as message 255 if the message type is 254
+        jmp l_c2ParseGtpu2_0
+      
+l_c2ParseGtpu7_0:    
         or  s_pktCxt.eId_portNum_nextHdr.b1,  s_pktCxt.eId_portNum_nextHdr.b1,   EROUTE_GTPU_MESSAGE_TYPE_254 << PKT_EIDX_SHIFT  
         ret  
     
@@ -2097,7 +2104,7 @@ f_c2ParseEspDec:
    xin    XID_PINFO_A,  s_pktExtDescr,  SIZE(s_pktExtDescr)  
    add    r0.w2,   s_pktCxt.endOffset,  (32+32-2)  
    // Extra 8 bytes are inserted during EOAM enabled case
-   qbbc l_c2ParseEspDec_1, s_runCxt.flags.t_eoamEn   
+   qbbc l_c2ParseEspDec_1, s_runCxt.flags.t_c2_enable_EOAM   
      add  r0.w2,   r0.w2, 8
 l_c2ParseEspDec_1:   
 
index 3073dfe20861427769287c7a53c195d6e937d83a..003044933b19af4fff268663c9cbe187d61a93e0 100644 (file)
Binary files a/fw/v1/in4_pdsp1.bib and b/fw/v1/in4_pdsp1.bib differ
index 8f754989aa0ad315216363c50dc512679a651a01..f71b06cd442a38077d7aa5f1197b5befd3cb66c6 100644 (file)
@@ -96,7 +96,7 @@ const uint32_t in4_pdsp1[] =  {
      0x21010200,
      0x0b057601,
      0x51000105,
-     0x530401e3,
+     0x530401e5,
      0x24801c9f,
      0x1f060e0e,
      0x21008100,
@@ -146,7 +146,7 @@ const uint32_t in4_pdsp1[] =  {
      0x2e838786,
      0x24801c83,
      0x2400109e,
-     0x2103e100,
+     0x2103e600,
      0x2e838786,
      0xc90d9908,
      0x11033737,
@@ -169,13 +169,13 @@ const uint32_t in4_pdsp1[] =  {
      0x90413882,
      0xf081e286,
      0x24801c83,
-     0x2103e100,
+     0x2103e600,
      0x0b0237de,
      0x0904dede,
      0x90def486,
      0x24801c83,
      0x2400109e,
-     0x2103e100,
+     0x2103e600,
      0xd106ff00,
      0x9110078a,
      0x24002004,
@@ -190,15 +190,15 @@ const uint32_t in4_pdsp1[] =  {
      0x21001000,
      0x24000c86,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0xc90aff04,
      0x24000a86,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x590c8004,
      0x24001086,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x2e80858a,
      0xd1002a06,
      0x0101dddd,
@@ -222,7 +222,7 @@ const uint32_t in4_pdsp1[] =  {
      0x240012d9,
      0x1f047b7b,
      0x1d057b7b,
-     0x21024c00,
+     0x21024e00,
      0x09044a81,
      0x01018181,
      0x90811001,
@@ -257,11 +257,11 @@ const uint32_t in4_pdsp1[] =  {
      0xd10aff00,
      0xd101ff00,
      0x21001000,
-     0x21024c00,
+     0x21024e00,
      0xc90aff04,
      0x24000a86,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x6900dd04,
      0x24000986,
      0x2f0080c6,
@@ -280,7 +280,7 @@ const uint32_t in4_pdsp1[] =  {
      0x71104a04,
      0x24001286,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x09044a81,
      0x01018181,
      0x90811001,
@@ -289,15 +289,15 @@ const uint32_t in4_pdsp1[] =  {
      0xc9012a02,
      0x1d001d1d,
      0x8130ab92,
-     0x21024c00,
+     0x21024e00,
      0x240001e3,
      0x81042b83,
      0x24011a90,
      0x24015bd1,
      0x24018891,
      0x2401a6d2,
-     0x24020792,
-     0x2401e1d3,
+     0x24020992,
+     0x2401e3d3,
      0x8500f588,
      0x2eff9f80,
      0x8700f080,
@@ -488,8 +488,8 @@ const uint32_t in4_pdsp1[] =  {
      0x01042121,
      0xc9026607,
      0x51000806,
-     0x69c00826,
-     0x69000925,
+     0x69c00828,
+     0x69000927,
      0x01042121,
      0x1f03b6b6,
      0x813807a9,
@@ -523,7 +523,9 @@ const uint32_t in4_pdsp1[] =  {
      0x691f4603,
      0x134c3737,
      0x209e0000,
-     0x69fe4603,
+     0x69fe4605,
+     0xc9031d02,
+     0x2101b300,
      0x13503737,
      0x209e0000,
      0x13543737,
@@ -588,15 +590,15 @@ const uint32_t in4_pdsp1[] =  {
      0x10e9e9fa,
      0x51ce0703,
      0x1f077b7b,
-     0x21024c00,
+     0x21024e00,
      0x51006602,
-     0x21024c00,
+     0x21024e00,
      0x51004606,
      0x05014646,
      0x2f008026,
      0x2400045b,
      0x1f057b7b,
-     0x21024c00,
+     0x21024e00,
      0x81182788,
      0x2f05098e,
      0x1f067b7b,
@@ -621,16 +623,16 @@ const uint32_t in4_pdsp1[] =  {
      0x5102270e,
      0x5103270e,
      0x5104270e,
-     0x5306279e,
+     0x530627a1,
      0x510c27f7,
-     0x530a27a0,
-     0x5308279c,
-     0x530b279c,
-     0x5309279c,
+     0x530a27a3,
+     0x5308279f,
+     0x530b279f,
+     0x5309279f,
      0x5105273b,
      0x24000286,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x21008d00,
      0x21008d00,
      0x21009000,
@@ -654,11 +656,11 @@ const uint32_t in4_pdsp1[] =  {
      0x1f0f8181,
      0x811007c1,
      0x1f060e0e,
-     0x21027600,
+     0x21027800,
      0xc9057b04,
      0x24008000,
      0x81200760,
-     0x21026700,
+     0x21026900,
      0x911007c1,
      0x1f0f8181,
      0x811007c1,
@@ -667,7 +669,7 @@ const uint32_t in4_pdsp1[] =  {
      0x81082481,
      0x51003a03,
      0x1f060e0e,
-     0x21027600,
+     0x21027800,
      0x8112079a,
      0x101a1a05,
      0x13202424,
@@ -689,7 +691,7 @@ const uint32_t in4_pdsp1[] =  {
      0x59388004,
      0x24001086,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x24000086,
      0x2f0080c6,
      0x2e80878a,
@@ -868,7 +870,7 @@ const uint32_t in4_pdsp1[] =  {
      0xf1042280,
      0x6f00e0ff,
      0xe1042281,
-     0x21024c00,
+     0x21024e00,
      0x24000086,
      0x2f0080c6,
      0x2e80838a,
@@ -878,20 +880,20 @@ const uint32_t in4_pdsp1[] =  {
      0x58c08004,
      0x24001086,
      0x2f0080c6,
-     0x21024c00,
+     0x21024e00,
      0x240018c4,
      0x2f000384,
-     0x2103d200,
+     0x2103d700,
      0x240014c4,
      0x2f000384,
      0x69016a13,
      0x592c8002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80838e,
      0x71046e04,
      0x240011d9,
      0x1f047b7b,
-     0x21024c00,
+     0x21024e00,
      0x09056e81,
      0x09036ec1,
      0x00c18181,
@@ -902,39 +904,42 @@ const uint32_t in4_pdsp1[] =  {
      0x2e808f8e,
      0x01088181,
      0x8281f38e,
-     0x21024c00,
+     0x21024e00,
      0x69026a0c,
      0x59148002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80878e,
      0x71106e04,
      0x240012d9,
      0x1f047b7b,
-     0x21024c00,
+     0x21024e00,
      0x09046e81,
      0x01008181,
      0x8081f08e,
-     0x21024c00,
+     0x21024e00,
      0x69046a09,
      0x59088002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80818e,
      0x1d021d1d,
      0xc9006e02,
      0x1f021d1d,
      0x81b8338e,
-     0x21024c00,
-     0x69056a08,
+     0x21024e00,
+     0x69056a0b,
      0x59088002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80818e,
      0x1d011d1d,
      0xc9006e02,
      0x1f011d1d,
-     0x21024c00,
+     0x1d031d1d,
+     0xc9016e02,
+     0x1f031d1d,
+     0x21024e00,
      0x69066a0e,
      0x59148002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -944,11 +949,11 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21037a00,
-     0x21024c00,
+     0x21037f00,
+     0x21024e00,
      0x69076a0e,
      0x59148002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80878e,
      0x24000cc4,
      0x51006e08,
@@ -958,12 +963,12 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000384,
      0x2e80858f,
      0x05016e6e,
-     0x21038800,
-     0x21024c00,
+     0x21038d00,
+     0x21024e00,
      0x69086a19,
      0x24003cc0,
      0x58c08002,
-     0x2103cf00,
+     0x2103d400,
      0x2e808b8e,
      0x240100c2,
      0x51006e12,
@@ -983,12 +988,12 @@ const uint32_t in4_pdsp1[] =  {
      0x2f000184,
      0x2e80898f,
      0x05016e6e,
-     0x21039700,
-     0x21024c00,
+     0x21039c00,
+     0x21024e00,
      0x69096a1a,
      0x2400a0c0,
      0x58c08002,
-     0x2103cf00,
+     0x2103d400,
      0x2e808d8e,
      0x240300c2,
      0x51006e13,
@@ -1004,27 +1009,27 @@ const uint32_t in4_pdsp1[] =  {
      0x8082fc91,
      0x01108282,
      0x05014e4e,
-     0x2103b600,
+     0x2103bb00,
      0x240018c4,
      0x2f000184,
      0x2e808b8f,
      0x05016e6e,
-     0x2103b000,
-     0x21024c00,
+     0x2103b500,
+     0x21024e00,
      0x690a6a08,
      0x590c8002,
-     0x2103cf00,
+     0x2103d400,
      0x2e80838e,
      0x24ffa8c2,
      0x24100082,
      0xe1d0628e,
-     0x21024c00,
+     0x21024e00,
      0x240002d9,
      0x1f047b7b,
-     0x21024c00,
+     0x21024e00,
      0x240010d9,
      0x1f047b7b,
-     0x21024c00,
+     0x21024e00,
      0x240000e1,
      0x240010c4,
      0x2e80878e,
@@ -1034,12 +1039,12 @@ const uint32_t in4_pdsp1[] =  {
      0x01010101,
      0x0110c1c1,
      0x671f01fa,
-     0x21024c00,
-     0x21024c00,
-     0x21024c00,
-     0x21024c00,
-     0x21024c00,
-     0x21024c00,
+     0x21024e00,
+     0x21024e00,
+     0x21024e00,
+     0x21024e00,
+     0x21024e00,
+     0x21024e00,
      0xc907ff00,
      0x911007ca,
      0x1d0f8a8a,
@@ -1055,7 +1060,7 @@ const uint32_t in4_pdsp1[] =  {
      0x11c00101,
      0x51014703,
      0x24001641,
-     0x2103f200,
+     0x2103f700,
      0x24000d41,
      0x12410101,
      0x812607c1,
@@ -1101,7 +1106,7 @@ const uint32_t in4_pdsp1[] =  {
      0x11c01a00,
      0x51000003,
      0x0b057a21,
-     0x21042400,
+     0x21042900,
      0xd1010105,
      0x11071a00,
      0x51000003,
@@ -1113,11 +1118,11 @@ const uint32_t in4_pdsp1[] =  {
      0x00214646,
      0x00018686,
      0x24000042,
-     0x21043600,
+     0x21043b00,
      0x00228686,
      0xc901680a,
      0x00224646,
-     0x21043600,
+     0x21043b00,
      0xc9026804,
      0x0b057a02,
      0x00028686,
@@ -1161,9 +1166,9 @@ const uint32_t in4_pdsp1[] =  {
      0x69010206,
      0xd1076603,
      0x2400002e,
-     0x21045f00,
+     0x21046400,
      0x2400012e,
-     0x21045f00,
+     0x21046400,
      0x69050214,
      0x1046462e,
      0x81186787,
index 46aa353abde2614f18b667ffad20ac9d89e9de71..5ae059f9f3b032f3faaa06e0f0c1c164301228bb 100644 (file)
@@ -1155,6 +1155,11 @@ l_paSysConfigPa5a:
             set  s_runCxt.ctrlFlag.t_c2_GTPU_use_link
                
 l_paSysConfigPa5b:
+       clr  s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255
+       qbbc l_paSysConfigPa5c, s_paGtpuCfg.ctrlBitMap.t_pa_gtpu_msg254_as_msg255
+            set  s_runCxt.ctrlFlag.t_c2_GTPU_route_msg254_as_msg255       
+
+l_paSysConfigPa5c:
        jmp f_cfgReply
        
     .leave lut2Scope
index e4a28117a6bedb0ebb053290da29b42261bc1b5f..5a589f4fcb9afe228254cf306f0f0d822f70a235 100644 (file)
 .ends
 
 #define t_pa_gtpu_control_use_link          t0
+#define t_pa_gtpu_msg254_as_msg255          t1
 
 // Packet Capture Header 
 .struct struct_pcap_hdr
index e6fd2792114d149e9d5bdb1fa1ceef5ae6395491..568339c580d486091432c820993cdc47277f9e60 100644 (file)
     .u8   ctrlFlag
 .ends
 
+// 
+// EOAM is disabled by default
+//
+#define t_c2_enable_EOAM        t0
+
 // 
 // GTPU is enbaled by default
 // GTPU parsing should be disabled when GTPU port number (2152) is added into LUT2 table
 //
 #define t_c2_enable_IPSEC_NAT_T t2
 
+// 
+// GTPU End Marker message route as G-PDU
+//
+#define t_c2_GTPU_route_msg254_as_msg255    t3
+
+
 
 #define SUBS_MAX_LUT2_ENTRIES  8192
 
diff --git a/pa.h b/pa.h
index caae69a358d7b72af79f75a46ef761b115484d92..401d77e0c24dc451d435874e7bf3a6e3a4fed6a1 100644 (file)
--- a/pa.h
+++ b/pa.h
@@ -1037,7 +1037,7 @@ typedef union  {
 
 /**
  *  @def pa_EROUTE_GTPU_MESSAGE_TYPE_254
- *       GTP-U End Markr packet
+ *       GTP-U End Marker packet
  */
 #define pa_EROUTE_GTPU_MESSAGE_TYPE_254    20
 
@@ -2188,6 +2188,16 @@ typedef struct {
  *                        Clear: GTU-U classification vector consists of the 32-bit of tunnel ID only (Default)
  */
 #define pa_GTPU_CTRL_USE_LINK              0x0001 
+
+/**
+ *  @def  pa_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU
+ *        Control Info -- Set: Configures the GTP-U message routing rule such that the packets with message type 254 (end markers)
+ *                             are routed the same way as message type 255 (G-PDU), meaning GTPU TEID would be recovered and routed for 
+ *                             LUT2 match.
+ *                        Clear: End message routing send to a configured flow/exception route (Default)
+ */
+#define pa_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU  0x0002 
+
 /*@}*/
 /** @} */
 
index 4c762baa62bff41ee37abc3b2e2a90ea37df8a89..41e306dc3b0bf3b100e4c46df7d323e259f0cabd 100644 (file)
@@ -5752,7 +5752,12 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
               PA_SET_STATE_GTPU_LINK(paInst, 0);\r
               ccfg->u.gtpuCfg.ctrlBitMap = (uint8_t)0;\r
             }\r
-          \r
+\r
+            if (gtpuCfg->ctrlBitMap & pa_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU)
+            {
+              ccfg->u.gtpuCfg.ctrlBitMap |= (uint8_t)PAFRM_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU;            
+            }         
+                    \r
             /* GTP-U classification is at PDSP3 only */\r
             *cmdDest = pa_CMD_TX_DEST_3;\r
       \r
old mode 100755 (executable)
new mode 100644 (file)
index 8d50d62..e17c3dd
@@ -453,7 +453,8 @@ typedef struct pafrmGtpuCfg_s  {
   uint16_t rsvd2;       /* alignment */\r
 } pafrmGtpuCfg_t;\r
 \r
-#define PAFRM_GTPU_CTRL_USE_LINK   (1 << 0)\r
+#define PAFRM_GTPU_CTRL_USE_LINK                      (1 << 0)\r
+#define PAFRM_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU      (1 << 1)\r
 \r
 /* Packet Capture configuration */\r
 typedef struct pafrmPktCapIfCfg_s {\r
index c06c85f4a039edaf197368e78dc57ba374821206..f092a76bbbe1a7b83a44c6fb193c7ac1a5a5e6fc 100644 (file)
@@ -9150,6 +9150,11 @@ paReturn_t Pa_control (Pa_Handle      iHandle,
               PA_SET_STATE_GTPU_LINK(paInst, 0);
               ccfg->u.gtpuCfg.ctrlBitMap = (uint8_t)0;
             }
+
+            if (gtpuCfg->ctrlBitMap & pa_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU)
+            {
+              ccfg->u.gtpuCfg.ctrlBitMap |= (uint8_t)PAFRM_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU;            
+            }         
           
             /* GTP-U classification is at Ingress4 PDSP1 only */
             *cmdDest = pa_CMD_TX_DEST_4;
index c1288a85478b0c54ea18d4dff39145b91de0067e..576d70d64d5901ba03474347a7e6e5e5bb975cd2 100644 (file)
@@ -610,7 +610,8 @@ typedef struct pafrmGtpuCfg_s  {
   uint16_t rsvd2;       /* alignment */
 } pafrmGtpuCfg_t;
 
-#define PAFRM_GTPU_CTRL_USE_LINK   (1 << 0)
+#define PAFRM_GTPU_CTRL_USE_LINK                     (1 << 0)
+#define PAFRM_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU     (1 << 1)
 
 /* Packet Capture configuration */
 typedef struct pafrmPktCapIfCfg_s {
old mode 100755 (executable)
new mode 100644 (file)
index 2bea4ca..e819c9c
@@ -1387,7 +1387,7 @@ static paTestStatus_t t5NatTConfiguration (t5TestEncap_t *tencap, int enable)
        return (PA_TEST_PASSED);\r
 }\r
 \r
-static paTestStatus_t t5GtpuConfiguration (t5TestEncap_t *tencap, int linkEn)\r
+static paTestStatus_t t5GtpuConfiguration (t5TestEncap_t *tencap, int linkEn, int routeEn)\r
 {\r
        int                     i;\r
        Cppi_HostDesc  *hd;\r
@@ -1399,6 +1399,13 @@ static paTestStatus_t t5GtpuConfiguration (t5TestEncap_t *tencap, int linkEn)
     /* Issue the command set command */\r
     ctrlInfo.code = pa_CONTROL_GTPU_CONFIG;\r
     ctrlInfo.params.gtpuCfg.ctrlBitMap = linkEn?pa_GTPU_CTRL_USE_LINK:0;\r
+\r
+    /* Route End Marker as G-PDU flag */\r
+    if (routeEn)\r
+    {\r
+      ctrlInfo.params.gtpuCfg.ctrlBitMap |= pa_GTPU_CTRL_ROUTE_END_MARKER_AS_GPDU;\r
+    }\r
+    \r
     cmdReply.replyId  = T5_CMD_SWINFO0_GTPU_CFG_ID;\r
        cmdReply.queue    = tencap->tf->QGen[Q_CMD_REPLY];\r
        hd = testCommonGlobalConfig (tencap->tf, &ctrlInfo,  \r
@@ -2738,6 +2745,13 @@ void paTestL4Routing (UArg a0, UArg a1)
            Task_exit();\r
     }\r
 \r
+    i = setupPktTestInfo(t5GTPUPktInfo1, (sizeof(t5GTPUPktInfo1) / sizeof(pktTestInfo_t)), tfName );\r
+    if (i < 0) {\r
+       System_printf ("%s: (%s:%d): setupPktTestInfo(): setup Pkt Failed \n", tfName, __FILE__, __LINE__);\r
+        t5Encap.pat->testStatus = PA_TEST_FAILED;\r
+           Task_exit();\r
+    }\r
+\r
     i = setupPktTestInfo(t5NatTPktInfo, (sizeof(t5NatTPktInfo) / sizeof(pktTestInfo_t)), tfName );\r
     if (i < 0) {\r
        System_printf ("%s: (%s:%d): setupPktTestInfo(): setup Pkt Failed \n", tfName, __FILE__, __LINE__);\r
@@ -3227,8 +3241,58 @@ void paTestL4Routing (UArg a0, UArg a1)
                System_printf ("%s (%s:%d): testCommonCheckStats Failed\n", tfName, __FILE__, __LINE__);\r
                t5Cleanup (&t5Encap, PA_TEST_FAILED);  /* no return */\r
     }    \r
-    \r
-       /* Delete active L5 handles */\r
+\r
+  /* GTPU Configuration (Route End Marker message same as G-PDU) */\r
+  /* Note: For NetCP1.5 device, the GTPU link is always enabled, this congiuration will be ignored by PASS */\r
+       newStatus = t5GtpuConfiguration (&t5Encap, 0, 1);\r
+       if (newStatus == PA_TEST_FAILED)\r
+               t5Cleanup (&t5Encap, newStatus);  /* No return */\r
+        \r
+  /* GTPU packet testing2 */\r
+       /* Run packets through the system. the complete set of packets is run through three times. */\r
+       for (j = 0; j < T5_NUM_PACKET_ITERATIONS; j++)   {\r
+        int count = 0;\r
+               for (i = 0; i < sizeof(t5GTPUPktInfo1) / sizeof(pktTestInfo_t); i++ )  {\r
+               \r
+                       hd[i] = t5FormGTPUDataPacket (t5Encap.tf, t5Encap.pat, &t5GTPUPktInfo1[i]);\r
+                       \r
+                       if (hd[i] == NULL)  {\r
+                           System_printf ("%s (%s:%d): T5 GTPU packet sent:  run out of buffers\n", tfName, __FILE__, __LINE__);\r
+                System_flush();  \r
+                t5Cleanup (&t5Encap, PA_TEST_FAILED);  /* no return */\r
+                break;\r
+                       }\r
+                       \r
+                       /* Inc the count if the packet is passed back to the host */\r
+                       if (t5GTPUPktInfo1[i].idx < T5_MAX_GTPU_CHAN)\r
+            {\r
+                               expectedPktCount[t5GTPUPktInfo1[i].idx] += 1;\r
+                count ++;\r
+            }\r
+                       /* Increment any expected stats */\r
+                       testCommonIncStats (t5GTPUPktInfo2[i].statsMap, &paTestL4ExpectedStats);        \r
+                       \r
+               }\r
+                       \r
+               for (i = 0; i < sizeof(t5GTPUPktInfo1) / sizeof(pktTestInfo_t); i++)\r
+        {\r
+            //mdebugHaltPdsp(4);\r
+                       Qmss_queuePush (t5Encap.tf->QPaTx[TF_PA_Q_INPUT], (Ptr)hd[i], hd[i]->buffLen, TF_SIZE_DESC, Qmss_Location_TAIL);\r
+               utilCycleDelay (5000);            \r
+            //while (mdebugWait);\r
+        }    \r
+                               \r
+               if (t5ReceiveGTPUDataPkts (t5Encap.tf, t5Encap.pat, t5GTPUPktInfo1, sizeof(t5GTPUPktInfo1)/sizeof(pktTestInfo_t), actualPktCount, count))\r
+        {\r
+            /* Error Handling */\r
+                       System_printf ("%s (%s:%d): t5ReceiveGTPUDataPkts timeout\n", tfName, __FILE__, __LINE__);\r
+            System_flush();  \r
+            t5Cleanup (&t5Encap, PA_TEST_FAILED);  /* no return */\r
+                       break;\r
+        }    \r
+       }\r
+\r
+       /* Delete active L5 handles */\r
     #ifdef NSS_GEN2\r
     if (t5DeleteL5 (&t5Encap, TRUE) != PA_TEST_PASSED)\r
     #else\r
@@ -3241,7 +3305,7 @@ void paTestL4Routing (UArg a0, UArg a1)
     \r
     /* GTPU Configuration (Enable Link) */\r
     /* Note: For NetCP1.5 device, the GTPU link is always enabled, this congiuration will be ignored by PASS */\r
-       newStatus = t5GtpuConfiguration (&t5Encap, 1);\r
+       newStatus = t5GtpuConfiguration (&t5Encap, 1, 0);\r
        if (newStatus == PA_TEST_FAILED)\r
                t5Cleanup (&t5Encap, newStatus);  /* No return */\r
         \r
@@ -3299,7 +3363,6 @@ void paTestL4Routing (UArg a0, UArg a1)
         }    \r
        }\r
        \r
-       \r
        /* Verify that the expected and actual received packet counts match */\r
        for (i = 0; i < T5_MAX_GTPU_CHAN; i++)  {\r
                if (expectedPktCount[i] != actualPktCount[i])  {\r
@@ -3317,8 +3380,8 @@ void paTestL4Routing (UArg a0, UArg a1)
                t5Cleanup (&t5Encap, PA_TEST_FAILED);\r
     }\r
         \r
-    /* GTPU Configuration (Disable Link) */\r
-       newStatus = t5GtpuConfiguration (&t5Encap, 0);\r
+    /* GTPU Configuration (Disable Link, Disable Route of msg254 same as msg255) */\r
+       newStatus = t5GtpuConfiguration (&t5Encap, 0, 0);\r
        if (newStatus == PA_TEST_FAILED)\r
                t5Cleanup (&t5Encap, newStatus);  /* No return */\r
         \r
old mode 100755 (executable)
new mode 100644 (file)
index 11b4785..b03ac4e
@@ -2347,6 +2347,45 @@ static pasahoLongInfo_t gtpuPkt21Info = {
 };\r
 #endif \r
 \r
+/* packet 0_3\r
+ * mac dest = 00:01:02:03:04:aa\r
+ * ip dest = 200.201.202.100\r
+ * Designed to match IP configuration 0 \r
+ * TEID = 0x01000000\r
+ * Insert the PDU number (0xface) at the packet descriptor offset 20\r
+ */\r
+#pragma DATA_SECTION (gtpuPkt0_3, ".testPkts")\r
+static uint8_t gtpuPkt0_3[] = {\r
+       0x00, 0x01, 0x02, 0x03, 0x04, 0xaa, 0x00, 0xe0,\r
+       0xa6, 0x66, 0x57, 0x04, 0x08, 0x00, 0x45, 0x00,\r
+       0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x05, 0x11,\r
+       0x16, 0x78, 0x9e, 0xda, 0x6d, 0x0b, 0xc8, 0xc9,\r
+       0xca, 0x64, 0xaa, 0xbb, 0x08, 0x68, 0x00, 0x4e,\r
+       0x00, 0x00, 0x34, 0xfe, 0x00, 0x3e, 0x01, 0x00,\r
+       0x00, 0x00, 0x6c, 0x6d, 0x01, 0xc0, 0x01, 0xfa,\r
+       0xce, 0x00, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,\r
+       0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81,\r
+       0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,\r
+       0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91,\r
+       0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,\r
+       0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1,\r
+       0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9\r
+};\r
+\r
+#pragma DATA_SECTION (t5GTPUPktInfo1, ".testPkts")\r
+static pktTestInfo_t t5GTPUPktInfo1[] = {\r
+       /* Packet 0_3, modified packet 0 to test treating msg254 same as msg255 */\r
+       {  \r
+               (uint8_t *)gtpuPkt0_3,\r
+               (pasahoLongInfo_t *)&gtpuPkt0Info,\r
+               sizeof(gtpuPkt0_3),\r
+               { (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH),                                                                        /* MAC match */\r
+                 (1 << TF_STATS_BM_C1_NUM_PACKETS) | (1 << TF_STATS_BM_C1_TABLE_MATCH) | (1 << TF_STATS_BM_C1_NUM_IPV4),       /* IP match */\r
+                 (1 << TF_STATS_BM_C2_NUM_PACKETS) | (1 << TF_STATS_BM_C2_NUM_UDP) },                                                                          /* UDP match */\r
+               T5_GTPU_FIRST_PKT_INDEX\r
+       },\r
+};\r
+\r
 #pragma DATA_SECTION (t5GTPUPktInfo, ".testPkts")\r
 static pktTestInfo_t t5GTPUPktInfo[] =  {\r
        \r