/* * Copyright c Realtek Semiconductor Corporation, 2002 * All rights reserved. * * Program : Header File for Virtual MAC * Abstract : * Author : Louis Yung-Chieh Lo (yjlou@realtek.com.tw) * $Id: testModel.c,v 1.3 2012/10/24 04:49:43 ikevin362 Exp $ */ #include <linux/delay.h> #include "testModel.h" #include "virtualMac.h" #include "../AsicDriver/rtl865xc_asicregs.h" #include "rtl865xc_testModel_L34_test.h" #include "rtl8198c_IPv6_test.h" #include <linux/jiffies.h> #include <linux/time.h> char dbgMsg[1024]; #define MODEL_TEST_CASE( case_no, func, group_mask ) \ { \ no: case_no, \ name: #func, \ fp: func, \ group: group_mask, \ } /**************************************************************************** ****__*****__************* ** ***| |***| |****__****** ** ***| |***| |***| |***** ** ***| |***| |***|__|***** ** ***| |***| |************ Add Your Model Test Cases HERE !!! ** ***| ___ |****__****** ** ***| |***| |***| |***** ** ***| |***| |***| |***** ** ***| |***| |***| |***** ** ***| |***| |***| |***** ** ***|__|***|__|***|__|***** ** ****************************************************************************/ extern int32 layer3Config_V6RdDecap_ArpRouting( void ); static MODEL_TEST_CASE_T modelTestCase[] = { /*------------------------------test area------------------------------*/ MODEL_TEST_CASE( 20000, rtl8198C_testFillTable, GRP_ALL | GRP_L34 ), // MODEL_TEST_CASE( 20100, rtl8198c_dumpRegs, GRP_ALL | GRP_L34 ), MODEL_TEST_CASE( 100, rtl8198C_testL2learnLimit, GRP_ALL | GRP_L34 ), MODEL_TEST_CASE( 200, layer3Config_V6RdDecap_ArpRouting, GRP_ALL | GRP_L34 ), /*------------------------------verify test case------------------------------*/ /** sample code here **/ MODEL_TEST_CASE( 40001, rtl8198C_testArpRouting, GRP_ALL | GRP_L34), //40001 done MODEL_TEST_CASE( 40002, rtl8198C_testNxthopRouting, GRP_ALL | GRP_L34), //40002 done MODEL_TEST_CASE( 40003, rtl8198C_testL2, GRP_ALL | GRP_L2), //40003 done MODEL_TEST_CASE( 40004, rtl8198C_testV6ArpRouting, GRP_ALL | GRP_L34), //40004 done MODEL_TEST_CASE( 40005, rtl8198C_testV6NxthopRouting, GRP_ALL | GRP_L34),//40005 done MODEL_TEST_CASE( 40006, rtl8198C_testV6L2, GRP_ALL | GRP_L34), //40006 done MODEL_TEST_CASE( 40007, rtl8198C_testNAPTOutbound, GRP_ALL | GRP_L34), //40007 done MODEL_TEST_CASE( 40008, rtl8198C_testNAPTInbound, GRP_ALL | GRP_L34), //40008 done MODEL_TEST_CASE( 40009, rtl8198C_testV6RdEncap_ArpRouting, GRP_ALL | GRP_L34), //40009 done MODEL_TEST_CASE( 40010, rtl8198C_testV6RdDecap_ArpRouting, GRP_ALL | GRP_L34), //40010 done MODEL_TEST_CASE( 40011, rtl8198C_testDsLiteEncap_NxthopRouting, GRP_ALL | GRP_L34), //40011 done MODEL_TEST_CASE( 40012, rtl8198C_testDsLiteDecap_NxthopRouting, GRP_ALL | GRP_L34), //40012 done MODEL_TEST_CASE( 40013, rtl8198C_testNAPTOutboundAclRedirect, GRP_ALL | GRP_L34), //40013 done MODEL_TEST_CASE( 40014, rtl8198C_testNAPTOutboundAclRedirectChain, GRP_ALL | GRP_L34), //40014 done MODEL_TEST_CASE( 40015, rtl8198C_testPktIPMulticast_txRemarkVid, GRP_ALL | GRP_L34), //40015 done MODEL_TEST_CASE( 40016, rtl8198C_testNAPTInbound_4way, GRP_ALL | GRP_L34), //40016 done MODEL_TEST_CASE( 40017, rtl8198C_testNAPTOutbound_4way, GRP_ALL | GRP_L34), //40017 done MODEL_TEST_CASE( 40018, rtl8198C_testMultipleWAN, GRP_ALL | GRP_L34), //40018 done MODEL_TEST_CASE( 40019, rtl8198C_testMultipleWAN1, GRP_ALL | GRP_L34), //40019 done MODEL_TEST_CASE( 40020, rtl8198C_testV6NxthopRouting_AclV6CombRedirect, GRP_ALL | GRP_L34), //40020 done #if defined(CONFIG_RTL_8685S_HWNAT) MODEL_TEST_CASE( 40021, rtl8198C_testV6Mcast, GRP_ALL | GRP_L34), //40021 done /*nic direct tx and hwlookup */ MODEL_TEST_CASE( 40025, rtl8198C_testL2_NicDirectTx, GRP_ALL | GRP_L34), //40025 done /*NAPT outbound using ARP table*/ MODEL_TEST_CASE( 40026, rtl8198C_testNAPTOutbound_ARP, GRP_ALL | GRP_L34), //40026 done /*40027: Direct tx auto add vlan and 802.1p priority , 40028: vlan_autoAdd modify and remove*/ MODEL_TEST_CASE( 40027, rtl8198C_testL2_NicDirectTx_VLANADD, GRP_ALL | GRP_L34), //40027 done MODEL_TEST_CASE( 40028, rtl8198C_testL2_NicDirectTx_VLANADD_Test, GRP_ALL | GRP_L34), //40028 done /* sample "NAT" flow */ MODEL_TEST_CASE( 40029, rtl8198C_testNATOutbound, GRP_ALL | GRP_L34), //40028 done #endif /** verify test case here **/ //IPM source port unmuch and IPM table unmuch flooding bug MODEL_TEST_CASE( 41000, rtl8198C_testPktIPMulticastL2, GRP_ALL | GRP_L34 ), //41000 done //L4 perflow test MODEL_TEST_CASE( 41100, rtl8198C_testNAPTOutboundPerflow, GRP_ALL | GRP_L34), //41100 done // L3/L4 check=0xffff bug MODEL_TEST_CASE( 41200, rtl8198C_testl3CheckSum, GRP_ALL | GRP_L34), //41200 done MODEL_TEST_CASE( 41300, rtl8198C_testl4CheckSum, GRP_ALL | GRP_L34), //41300 done MODEL_TEST_CASE( 43100, rtl8198C_testl4TCPCheckSum, GRP_ALL | GRP_L34), //43100 done MODEL_TEST_CASE( 43200, rtl8198C_testNxthopRouting_checksumbug, GRP_ALL | GRP_L34), //43200 done // 6rd egress+IPM MTU bug MODEL_TEST_CASE( 41400, rtl8198C_testV6RdEncapIPM_ArpRouting, GRP_ALL | GRP_L34), // 41400 done // 6rd/dsl ingress MTU bug MODEL_TEST_CASE( 41500, rtl8198C_testV6RdDecapMtuBug_ArpRouting, GRP_ALL | GRP_L34), // 41500 done MODEL_TEST_CASE( 41600, rtl8198C_testDsLiteDecapMtuBug_NxthopRouting, GRP_ALL | GRP_L34), // 41600 done // 6rd/dsl+IPM TTL bug MODEL_TEST_CASE( 41700, rtl8198C_testV6RdEncapIPMTtlBug_ArpRouting, GRP_ALL | GRP_L34), // 41700 done MODEL_TEST_CASE( 41800, rtl8198C_testV6RdDecapIPMTtlBug_ArpRouting, GRP_ALL | GRP_L34), // 41800 done MODEL_TEST_CASE( 41900, rtl8198C_testDsLiteDecapIPMTtlBug_NxthopRouting, GRP_ALL | GRP_L34), // 41900 done //SNAP MTU bug MODEL_TEST_CASE( 42000, rtl8198C_testArpRouting_SnapMtuBug, GRP_ALL | GRP_L34), // 42000 done //Acl change Vlan Bug MODEL_TEST_CASE( 42100, rtl8198C_testL2AclChangeVlanBug, GRP_ALL | GRP_L34), // 42100 done //1 TODO:Testing ME //learning port limit those case can't retest,one reboot one testing. MODEL_TEST_CASE( 42300, rtl8198C_testL2_learnLimitForwardNotLearn, GRP_ALL | GRP_L34), // 42300 done MODEL_TEST_CASE( 42400, rtl8198C_testL2_learnLimitToCpu, GRP_ALL | GRP_L34), // 42400 done MODEL_TEST_CASE( 42500, rtl8198C_testL2_learnLimitForwardNotLearnCopyToCpu, GRP_ALL | GRP_L34), // 42500 done MODEL_TEST_CASE( 42900, rtl8198C_testL2_learnLimitDropAndAgingOut, GRP_ALL | GRP_L34), // 42900 done MODEL_TEST_CASE( 43000, rtl8198C_testL2_learnLimitDropAndClloision, GRP_ALL | GRP_L34), // 43000 done //new feature unknow_da/unknow_sa/unmuch_sa trap to cpu MODEL_TEST_CASE( 42600, rtl8198C_testL2UnknowSADA, GRP_ALL | GRP_L34), // 42300 done //Acl comb with ipv6 Bug MODEL_TEST_CASE( 42700, rtl8198C_testV6NxthopRouting_AclV6CombBug, GRP_ALL | GRP_L34), //42700 done MODEL_TEST_CASE( 45700, rtl8198C_testL2_learnLimitToCpu_L2Hashfull, GRP_ALL | GRP_L34), /* RL6405 Test */ #if defined(CONFIG_RTL_8685S_HWNAT) /* IPM hit v6l3 ALE hang bug*/ MODEL_TEST_CASE( 43300, rtl8198C_testV6Mcast, GRP_ALL | GRP_L34), //43300 done MODEL_TEST_CASE( 43400, rtl8198C_testDsLiteDecapIPM_ALE_HangBug_NxthopRouting, GRP_ALL | GRP_L34),//43400 done /* ipv6 extension len > (l4+data) cause hsb.l4checksum=0 bug (both TCP and UDP) */ MODEL_TEST_CASE( 43500, rtl8198C_testV6L2_l4hsbCheckErrorBug, GRP_ALL | GRP_L34), //43500 done /* new feature nic hwlookup mode support to OffLoad IPv4 IPv6 L3/L4/TCP/UPD/ICMP/IGMP */ MODEL_TEST_CASE( 43600, rtl8198C_testL2_checkSumOffLoad_HwLookUp, GRP_ALL | GRP_L34), //43600 done MODEL_TEST_CASE( 43700, rtl8198C_testL2_checkSumOffLoad_DirectTx, GRP_ALL | GRP_L34), //43700 done /* new feature add l2 learning limitation control counter +1 -1 */ MODEL_TEST_CASE( 43800, rtl8198C_testLearningLimit_SWAddSubCounter, GRP_ALL | GRP_L34), //43800 done /* new feature IPM routing select DMac*/ MODEL_TEST_CASE( 43900, rtl8198C_testIPMv6_selectDestIf, GRP_ALL | GRP_L34), //43900 done MODEL_TEST_CASE( 44000, rtl8198C_test_IPMv4_selectDestIf, GRP_ALL | GRP_L34), //44000 done /* ip fragment pakcet ation change*/ MODEL_TEST_CASE( 44100, rtl8198C_testL2_aclFragmentPkt, GRP_ALL | GRP_L34), //44100 done /* 2kL2 alc redirect interface and pppor*/ MODEL_TEST_CASE( 44200, rtl8198C_testL2_acl2kl2, GRP_ALL | GRP_L34), //44200 done /*vlan packet + direct tx vlan autoadd + checksum offload bug 6rd/dslite ingress/egress */ MODEL_TEST_CASE( 44300, rtl8198C_DirectTx_6RD_DSLITE_BUG, GRP_ALL | GRP_L34), //44300 MODEL_TEST_CASE( 44400, rtl8198C_testDsLiteDecap_NxthopRouting_directBug, GRP_ALL | GRP_L34), //44400 MODEL_TEST_CASE( 44500, rtl8198C_testV6RdEncap_ArpRouting_directBug, GRP_ALL | GRP_L34), //44500 MODEL_TEST_CASE( 44600, rtl8198C_testDsLiteEncap_NxthopRouting_directBug, GRP_ALL | GRP_L34), //44600 /* acl 8 align bug*/ MODEL_TEST_CASE( 44700, acl_config_comb8Align, GRP_ALL | GRP_L34), //44600 MODEL_TEST_CASE( 44800, rtl8198C_testV6NxthopRouting_AclV6Comb8AlignBug, GRP_ALL | GRP_L34), //44600 /*IPMv4 vlan and dscp remarking for 5 port chip test case*/ MODEL_TEST_CASE( 44900, rtl8198C_testPktIPMulticastL3, GRP_ALL | GRP_L34 | GRP_IPMC), MODEL_TEST_CASE( 45000, rtl8198C_testPktIPMulticastUnmatchSPA, GRP_ALL | GRP_L34 | GRP_IPMC), MODEL_TEST_CASE( 45100, rtl8198C_testPktIPMulticastPPPoERouing, GRP_ALL | GRP_L34 | GRP_IPMC), /* testing hash-1 */ MODEL_TEST_CASE( 45500, rtl8198C_testNAPTHash1, GRP_ALL | GRP_L34 | GRP_IPMC), MODEL_TEST_CASE( 45600, rtl8198C_testNAPTHash1_APItest, GRP_ALL | GRP_L34 | GRP_IPMC), #endif /*pass auto test case*/ MODEL_TEST_CASE(/*50000*/ 50000, rtl8198C_testNAPTOutbound, GRP_ALL | GRP_L34), //40007 done MODEL_TEST_CASE(/*50001*/ AUTO_CASE_NO, rtl8198C_testNAPTInbound, GRP_ALL | GRP_L34), //40008 done MODEL_TEST_CASE(/*50002*/ AUTO_CASE_NO, rtl8198C_testL2, GRP_ALL | GRP_L2), //40003 done MODEL_TEST_CASE(/*50003*/ AUTO_CASE_NO, rtl8198C_testNxthopRouting, GRP_ALL | GRP_L34), //40002 done MODEL_TEST_CASE(/*50004*/ AUTO_CASE_NO, rtl8198C_testArpRouting, GRP_ALL | GRP_L34), //40001 done MODEL_TEST_CASE(/*50005*/ AUTO_CASE_NO, rtl8198C_testV6ArpRouting, GRP_ALL | GRP_L34), //40004 done MODEL_TEST_CASE(/*50006*/ AUTO_CASE_NO, rtl8198C_testV6NxthopRouting, GRP_ALL | GRP_L34), //40005 done MODEL_TEST_CASE(/*50007*/ AUTO_CASE_NO, rtl8198C_testNAPTOutboundAclRedirect, GRP_ALL | GRP_L34), //40013 done MODEL_TEST_CASE(/*50008*/ AUTO_CASE_NO, rtl8198C_testNAPTOutboundAclRedirectChain, GRP_ALL | GRP_L34),//40014 done MODEL_TEST_CASE(/*50009*/ AUTO_CASE_NO, rtl8198C_testPktIPMulticast_txRemarkVid, GRP_ALL | GRP_L34), //40015 done MODEL_TEST_CASE(/*50010*/ AUTO_CASE_NO, rtl8198C_testV6RdEncap_ArpRouting, GRP_ALL | GRP_L34), //40009 done MODEL_TEST_CASE(/*50011*/ AUTO_CASE_NO, rtl8198C_testV6RdDecap_ArpRouting, GRP_ALL | GRP_L34), //40010 done MODEL_TEST_CASE(/*50012*/ AUTO_CASE_NO, rtl8198C_testDsLiteEncap_NxthopRouting, GRP_ALL | GRP_L34), //40011 done MODEL_TEST_CASE(/*50013*/ AUTO_CASE_NO, rtl8198C_testDsLiteDecap_NxthopRouting, GRP_ALL | GRP_L34), //40012 done MODEL_TEST_CASE(/*50014*/ AUTO_CASE_NO, rtl8198C_testPktIPMulticastL2, GRP_ALL | GRP_L34 ), //41000 done MODEL_TEST_CASE(/*50015*/ AUTO_CASE_NO, rtl8198C_testl3CheckSum, GRP_ALL | GRP_L34), //41200 done MODEL_TEST_CASE(/*50016*/ AUTO_CASE_NO, rtl8198C_testl4CheckSum, GRP_ALL | GRP_L34), //41300 done MODEL_TEST_CASE(/*50017*/ AUTO_CASE_NO, rtl8198C_testV6RdEncapIPM_ArpRouting, GRP_ALL | GRP_L34), //41400 done MODEL_TEST_CASE(/*50018*/ AUTO_CASE_NO, rtl8198C_testArpRouting_SnapMtuBug, GRP_ALL | GRP_L34), //42000 done MODEL_TEST_CASE(/*50019*/ AUTO_CASE_NO, rtl8198C_testV6RdEncapIPMTtlBug_ArpRouting, GRP_ALL | GRP_L34), //41700 done MODEL_TEST_CASE(/*50020*/ AUTO_CASE_NO, rtl8198C_testV6RdDecapIPMTtlBug_ArpRouting, GRP_ALL | GRP_L34), //41800 done MODEL_TEST_CASE(/*50021*/ AUTO_CASE_NO, rtl8198C_testDsLiteDecapIPMTtlBug_NxthopRouting, GRP_ALL | GRP_L34), //41900 done MODEL_TEST_CASE(/*50022*/ AUTO_CASE_NO, rtl8198C_testL2AclChangeVlanBug, GRP_ALL | GRP_L34), //42100 done MODEL_TEST_CASE(/*50023*/ AUTO_CASE_NO, rtl8198C_testL2UnknowSADA, GRP_ALL | GRP_L34), //42300 done MODEL_TEST_CASE(/*50024*/ AUTO_CASE_NO, rtl8198C_testV6RdDecapMtuBug_ArpRouting, GRP_ALL | GRP_L34), //41500 done MODEL_TEST_CASE(/*50025*/ AUTO_CASE_NO, rtl8198C_testDsLiteDecapMtuBug_NxthopRouting, GRP_ALL | GRP_L34), //41600 done MODEL_TEST_CASE(/*50026*/ AUTO_CASE_NO, rtl8198C_testV6NxthopRouting_AclV6CombBug, GRP_ALL | GRP_L34), //42700 done MODEL_TEST_CASE(/*50027*/ AUTO_CASE_NO, rtl8198C_testNAPTInbound_4way, GRP_ALL | GRP_L34), //40016 done MODEL_TEST_CASE(/*50028*/ AUTO_CASE_NO, rtl8198C_testNAPTOutbound_4way, GRP_ALL | GRP_L34), //40017 done MODEL_TEST_CASE(/*50029*/ AUTO_CASE_NO, rtl8198C_testMultipleWAN, GRP_ALL | GRP_L34), //40018 done MODEL_TEST_CASE(/*50030*/ AUTO_CASE_NO, rtl8198C_testMultipleWAN1, GRP_ALL | GRP_L34), //40019 done MODEL_TEST_CASE(/*50031*/ AUTO_CASE_NO, rtl8198C_testV6NxthopRouting_AclV6CombRedirect, GRP_ALL | GRP_L34), //40020 done MODEL_TEST_CASE(/*50032*/ AUTO_CASE_NO, rtl8198C_testNAPTOutboundPerflow, GRP_ALL | GRP_L34), //41100 done #if defined(CONFIG_RTL_8685S_HWNAT) MODEL_TEST_CASE(/*50033*/ AUTO_CASE_NO, rtl8198C_testV6Mcast, GRP_ALL | GRP_L34), //40021 done MODEL_TEST_CASE(/*50034*/ AUTO_CASE_NO, rtl8198C_testL2_NicDirectTx, GRP_ALL | GRP_L34), //40025 done MODEL_TEST_CASE(/*50035*/ AUTO_CASE_NO, rtl8198C_testNAPTOutbound_ARP, GRP_ALL | GRP_L34), //40026 done MODEL_TEST_CASE(/*50036*/ AUTO_CASE_NO, rtl8198C_testL2_NicDirectTx_VLANADD, GRP_ALL | GRP_L34), //40027 done MODEL_TEST_CASE(/*50037*/ AUTO_CASE_NO, rtl8198C_testL2_NicDirectTx_VLANADD_Test, GRP_ALL | GRP_L34), //40028 done MODEL_TEST_CASE(/*50038*/ AUTO_CASE_NO, rtl8198C_testNATOutbound, GRP_ALL | GRP_L34), //40028 done MODEL_TEST_CASE(/*50039*/ AUTO_CASE_NO, rtl8198C_testDsLiteDecapIPM_ALE_HangBug_NxthopRouting, GRP_ALL | GRP_L34),//43400 done MODEL_TEST_CASE(/*50040*/ AUTO_CASE_NO, rtl8198C_testV6L2_l4hsbCheckErrorBug, GRP_ALL | GRP_L34), //43500 done MODEL_TEST_CASE(/*50041*/ AUTO_CASE_NO, rtl8198C_testL2_checkSumOffLoad_HwLookUp, GRP_ALL | GRP_L34), //43600 done MODEL_TEST_CASE(/*50042*/ AUTO_CASE_NO, rtl8198C_testL2_checkSumOffLoad_DirectTx, GRP_ALL | GRP_L34), //43700 done MODEL_TEST_CASE(/*50043*/ AUTO_CASE_NO, rtl8198C_testLearningLimit_SWAddSubCounter, GRP_ALL | GRP_L34), //43800 done MODEL_TEST_CASE(/*50044*/ AUTO_CASE_NO, rtl8198C_testIPMv6_selectDestIf, GRP_ALL | GRP_L34), //43900 done MODEL_TEST_CASE(/*50045*/ AUTO_CASE_NO, rtl8198C_test_IPMv4_selectDestIf, GRP_ALL | GRP_L34), //44000 done MODEL_TEST_CASE(/*50046*/ AUTO_CASE_NO, rtl8198C_testL2_aclFragmentPkt, GRP_ALL | GRP_L34), //44100 done MODEL_TEST_CASE(/*50047*/ AUTO_CASE_NO, rtl8198C_testL2_acl2kl2, GRP_ALL | GRP_L34), //44200 done MODEL_TEST_CASE(/*50048*/ AUTO_CASE_NO, rtl8198C_DirectTx_6RD_DSLITE_BUG, GRP_ALL | GRP_L34), //44300 done MODEL_TEST_CASE(/*50049*/ AUTO_CASE_NO, rtl8198C_testDsLiteDecap_NxthopRouting_directBug, GRP_ALL | GRP_L34), //44400 done MODEL_TEST_CASE(/*50050*/ AUTO_CASE_NO, rtl8198C_testV6RdEncap_ArpRouting_directBug, GRP_ALL | GRP_L34), //44500 done MODEL_TEST_CASE(/*50051*/ AUTO_CASE_NO, rtl8198C_testDsLiteEncap_NxthopRouting_directBug, GRP_ALL | GRP_L34), //44600 done #endif MODEL_TEST_CASE(/*AUTO_CASE_NO end*/ AUTO_CASE_NO, rtl8198C_testV6L2, GRP_ALL | GRP_L34), //40006 done /* these test cases need time to run*/ #if defined(CONFIG_RTL_8685S_HWNAT) //new feature stress test IPM routing select DMac MODEL_TEST_CASE( 50200, rtl8198C_testIPMv4v6_DestSelectIf_StressTest, GRP_ALL | GRP_L34), //40024 done //new feature 2k l2 basic test MODEL_TEST_CASE( 50201, rtl8198C_test2KL2_basic, GRP_ALL | GRP_L34), #endif #if defined(CONFIG_RTL_HW_NAPT_4KENTRY) MODEL_TEST_CASE( 60001, rtl8198C_testNAPTOutbound4KEntry, GRP_ALL | GRP_L34), MODEL_TEST_CASE( 60002, rtl8198C_testNAPTInbound4KEntry, GRP_ALL | GRP_L34), #endif /* Final case, DO NOT remove it */ MODEL_TEST_CASE( 100000, NULL, GRP_ALL ), }; #if 0 int rtl_testModel_testEnhancedGRE( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testEnhancedGRE(); #else #error please implement your platform here #endif } int rtl_testModel_testIpOther( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testIpOther(); #else #error please implement your platform here #endif } int rtl_testModel_testLayer3RoutingToCpu( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testLayer3RoutingToCpu(); #else #error please implement your platform here #endif } int rtl_testModel_testIPMulticast( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testIPMulticast(); #else #error please implement your platform here #endif } int rtl_testModel_testLayer3MTU( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testLayer3MTU(); #else #error please implement your platform here #endif } int rtl_testModel_testPktIPMulticastL2( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testPktIPMulticastL2(); #else #error please implement your platform here #endif } int rtl_testModel_testPktIPMulticastL3( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testPktIPMulticastL3(); #else #error please implement your platform here #endif } int rtl_testModel_testPktIPMulticastPPPoE( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testPktIPMulticastPPPoE(); #else #error please implement your platform here #endif } int rtl_testModel_testLayer3Routing( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testLayer3Routing(); #else #error please implement your platform here #endif } int rtl_testModel_testLayer3GuestVLAN( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl865xC_testLayer3GuestVLAN(); #else #error please implement your platform here #endif } #endif int rtl_testModel_8198C_testPktIPMulticastL2( void ) { #ifdef CONFIG_RTL_8676HWNAT return rtl8198C_testPktIPMulticastL2(); #else #error please implement your platform here #endif } void rtl_testModel_run(int testcase_id) { int i,j; int32 caseNoSeq = 1; /* to generate auto-increased case number. */ uint32 groupmask = 0xffffffff; int totalCase=0; int retval; // char *testCaseString; // int32 testCaseInint=1 ; struct timeval tv, tv2; do_gettimeofday(&tv); printk("##### Enter %s test id:%d @ %d\n",__func__,testcase_id,__LINE__); //just testing api if(testcase_id<10000) { for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; if(pCase->no==testcase_id){ printk( "Running Model Test Case %d: %s() ...\n", pCase->no, pCase->name ); retval = pCase->fp(); } } if(retval==SUCCESS) printk("set success \n"); else printk("set Error\n"); }else{ /* generate auto-increased pCase->no */ for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; MODEL_TEST_CASE_T *pCase_pre ; if ( pCase->no == AUTO_CASE_NO ) { pCase_pre = &modelTestCase[i-1]; pCase->no =pCase_pre->no+1 ; } } // for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ){ // MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; // printk("pCase -> no = %d \n",pCase->no); // } for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; if ( ( pCase->group & groupmask ) == 0 ) continue; if ( pCase->fp == NULL ) continue; if( (pCase->no >= testcase_id+100) || (pCase->no <testcase_id)) continue; totalCase++; printk( "Running Model Test Case %d: %s() ...\n", pCase->no, pCase->name ); /* Prepare virtualMac environment */ //WRITE_MEM32( SSIR, READ_MEM32(SSIR)|FULL_RST); //mdelay(50); virtualMacInit(); retval = pCase->fp(); if (retval == RTL_TESTMODEL_TESTCASE_RUN_SUCCESS ) { printk("\033[0;32m %d:%s Pass! \033[m\n",pCase->no,pCase->name); } else { //force linkdown fordebug if failed int32 port=0; for( port = PHY0; port<=RTL8651_MAC_NUMBER; port++ ) { uint32 config; config = READ_MEM32( PCRP0+port*4 ); config &= (BYPASS_TCRC|MIIcfg_CRS|MIIcfg_COL|MIIcfg_RXER|GMIIcfg_CRS|BCSC_Types_MASK| EnLoopBack|PauseFlowControl_MASK|DisBKP|STP_PortST_MASK|AcptMaxLen_MASK); /* keep value */ config |= ((port<<ExtPHYID_OFFSET)|ForceSpeed100M|ForceDuplex| PauseFlowControlEtxErx|MacSwReset); WRITE_MEM32( PCRP0+port*4, config ); mdelay(10); } printk("\033[0;31m %d %s Failed! \033[m\n",pCase->no,pCase->name); return FAILED; } } } if(i==sizeof(modelTestCase)/sizeof(modelTestCase[0])) { /* Haha time */ do_gettimeofday(&tv2); printk(" ==================\n"); printk("total %3d test case using | %3u.%u sec | \n",totalCase,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))/1000000 ,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))%1000000 ); printk(" ==================\n"); printk("%d test case all pass !\n",totalCase); } } void rtl_testModel_run_range(int testcase_id_start, int testcase_id_end,uint32 repeatTimes) { int i,j; int32 caseNoSeq = 1; /* to generate auto-increased case number. */ uint32 groupmask = 0xffffffff; int totalCase=0; int retval; int pass_case_cnt=0; struct timeval tv, tv2; do_gettimeofday(&tv); printk("##### Enter %s test_id %d~%d @ %d\n",__func__,testcase_id_start,testcase_id_end,__LINE__); /* generate auto-increased pCase->no */ for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; MODEL_TEST_CASE_T *pCase_pre ; if ( pCase->no == AUTO_CASE_NO ) { pCase_pre = &modelTestCase[i-1]; pCase->no =pCase_pre->no+1 ; } } for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { for(j=0;j<repeatTimes;j++) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; if ( ( pCase->group & groupmask ) == 0 ) continue; if ( pCase->fp == NULL ) continue; if( (pCase->no > testcase_id_end) || (pCase->no < testcase_id_start)) continue; printk("\033[0;31m running times %d/%d \033[m\n",j,repeatTimes); totalCase++; printk( "Running Model Test Case %d: %s() ...\n", pCase->no, pCase->name ); /* Prepare virtualMac environment */ //WRITE_MEM32( SSIR, READ_MEM32(SSIR)|FULL_RST); //mdelay(50); virtualMacInit(); retval = pCase->fp(); if (retval == RTL_TESTMODEL_TESTCASE_RUN_SUCCESS ) { pass_case_cnt++; printk("\033[0;32m %d:%s Pass! \033[m\n",pCase->no,pCase->name); } else { printk("\033[0;31m %d %s Failed! \033[m\n",pCase->no,pCase->name); return -1; } } } if(i==sizeof(modelTestCase)/sizeof(modelTestCase[0])) { /* Haha time */ do_gettimeofday(&tv2); printk(" ==================\n"); printk("total %3d test case using | %3u.%u sec | \n",totalCase,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))/1000000 ,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))%1000000 ); printk(" ==================\n"); printk("\033[0;35m Total %d cases.\033[m \033[0;32m %d Pass.\033[m \033[0;31m %d Failed! \033[m\n",totalCase,pass_case_cnt,totalCase-pass_case_cnt); } } void rtl_testModel_run_grp(char *group) { int i,j; int32 caseNoSeq = 1; /* to generate auto-increased case number. */ uint32 groupmask = 0xffffffff; int totalCase=0; int pass_case_cnt=0; int retval; struct timeval tv, tv2; do_gettimeofday(&tv); // rtl_reset_all_tables(); /* generate auto-increased pCase->no */ for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; MODEL_TEST_CASE_T *pCase_pre ; if ( pCase->no == AUTO_CASE_NO ) { pCase_pre = &modelTestCase[i-1]; pCase->no =pCase_pre->no+1 ; } } if(!strncmp(group,"all",strlen(group)-1)) { groupmask = 0xffffffff; } else if(!strncmp(group,"l2",strlen(group)-1)) { groupmask = GRP_L2; } else if(!strncmp(group,"l34",strlen(group)-1)) { groupmask = GRP_L34; } else if(!strncmp(group,"ipmc",strlen(group)-1)) { groupmask = GRP_IPMC; } else { printk("[Error] group=[%s]\n",group); return; } for( i = 0; i < sizeof(modelTestCase)/sizeof(modelTestCase[0]); i++ ) { MODEL_TEST_CASE_T *pCase = &modelTestCase[i]; if ( ( pCase->group & groupmask ) == 0 ) continue; if ( pCase->fp == NULL ) continue; totalCase++; printk( "Running Model Test Case %d: %s() ...\n", pCase->no, pCase->name ); /* Prepare virtualMac environment */ virtualMacInit(); retval = pCase->fp(); if (retval == RTL_TESTMODEL_TESTCASE_RUN_SUCCESS ) { pass_case_cnt++; printk("\033[0;32m %d:%s Pass! \033[m\n",pCase->no,pCase->name); } else { printk("\033[0;31m %d %s Failed! \033[m\n",pCase->no,pCase->name); } } if(i==sizeof(modelTestCase)/sizeof(modelTestCase[0])) { /* Haha time */ do_gettimeofday(&tv2); printk("\033[0;34m ====================================================================== \033[m\n"); printk("\033[0;34m |Total %3d test case using | %3u.%u sec | \033[m ",totalCase,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))/1000000 ,((tv2.tv_sec*1000000+tv2.tv_usec)-(tv.tv_sec*1000000+tv.tv_usec))%1000000 ); printk("\033[0;32m %d [Pass]\033[m \033[0;31m %d [Failed]\033[m \033[0;35m|\033[m\n",pass_case_cnt,totalCase-pass_case_cnt); printk("\033[0;34m ====================================================================== \033[m\n"); } } void rtl_testModel_dumpPacket(char* data,int len) { int i; printk("-- len:%d --\n",len); for (i=0; i<len; i++) { printk("%02X ",data[i]&0xFF); if(i%16==15) printk("\n"); else if(i%8==7) printk(" "); } printk("\n"); }