/projects/reference_router/test/hw_send_receive/run.py

https://github.com/Caustic/netfpga
Python | 111 lines | 79 code | 24 blank | 8 comment | 6 complexity | e872cf4362bde80bd3db0caedcbd33b3 MD5 | raw file
  1. #!/bin/env python
  2. from NFTest import *
  3. import random
  4. from NFTest.hwRegLib import *
  5. from RegressRouterLib import *
  6. phy2loop2 = ('../connections/2phy', ['nf2c2', 'nf2c3'])
  7. nftest_init(sim_loop = ['nf2c2', 'nf2c3'], hw_config = [phy2loop2])
  8. nftest_start()
  9. NUM_PKTS = 100
  10. routerMAC = ["00:ca:fe:00:00:01", "00:ca:fe:00:00:02", "00:ca:fe:00:00:03", "00:ca:fe:00:00:04"]
  11. routerIP = ["192.168.0.40", "192.168.1.40", "192.168.2.40", "192.168.3.40"]
  12. ALLSPFRouters = "224.0.0.5"
  13. # Clear all tables in a hardware test (not needed in software)
  14. if isHW():
  15. nftest_invalidate_all_tables()
  16. # Write the mac and IP addresses
  17. for port in range(4):
  18. nftest_add_dst_ip_filter_entry (port, routerIP[port])
  19. nftest_set_router_MAC ('nf2c%d'%port, routerMAC[port])
  20. nftest_add_dst_ip_filter_entry (4, ALLSPFRouters);
  21. DA = routerMAC[0]
  22. SA = "aa:bb:cc:dd:ee:ff"
  23. TTL = 64
  24. DST_IP = "192.168.1.1"
  25. SRC_IP = "192.168.0.1"
  26. nextHopMAC = "dd:55:dd:66:dd:77"
  27. # reset counters
  28. nftest_regwrite(reg_defines.MAC_GRP_0_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  29. nftest_regwrite(reg_defines.MAC_GRP_0_TX_QUEUE_NUM_PKTS_SENT_REG(), 0)
  30. nftest_regwrite(reg_defines.MAC_GRP_0_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  31. nftest_regwrite(reg_defines.MAC_GRP_0_TX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  32. nftest_regwrite(reg_defines.MAC_GRP_1_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  33. nftest_regwrite(reg_defines.MAC_GRP_1_TX_QUEUE_NUM_PKTS_SENT_REG(), 0)
  34. nftest_regwrite(reg_defines.MAC_GRP_1_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  35. nftest_regwrite(reg_defines.MAC_GRP_1_TX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  36. nftest_regwrite(reg_defines.MAC_GRP_2_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  37. nftest_regwrite(reg_defines.MAC_GRP_2_TX_QUEUE_NUM_PKTS_SENT_REG(), 0)
  38. nftest_regwrite(reg_defines.MAC_GRP_2_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  39. nftest_regwrite(reg_defines.MAC_GRP_2_TX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  40. nftest_regwrite(reg_defines.MAC_GRP_3_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  41. nftest_regwrite(reg_defines.MAC_GRP_3_TX_QUEUE_NUM_PKTS_SENT_REG(), 0)
  42. nftest_regwrite(reg_defines.MAC_GRP_3_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  43. nftest_regwrite(reg_defines.MAC_GRP_3_TX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  44. print "Sending now:"
  45. pkt = None
  46. totalPktLengths = [0,0,0,0]
  47. for i in range(NUM_PKTS):
  48. for port in range(4):
  49. pkt = make_IP_pkt(src_MAC=SA, dst_MAC=routerMAC[port], src_IP=SRC_IP,
  50. dst_IP=DST_IP, pkt_len=random.randint(60,1514))
  51. totalPktLengths[port] += len(pkt)
  52. nftest_send_dma('nf2c%d'%port, pkt)
  53. if port < 2:
  54. nftest_expect_phy('nf2c%d'%port, pkt)
  55. else:
  56. nftest_expect_dma('nf2c%d'%port, pkt)
  57. print 'nf2c0 numBytes sent--->' + str(totalPktLengths[0])
  58. print 'nf2c1 numBytes sent--->' + str(totalPktLengths[1])
  59. print 'nf2c2 numBytes sent--->' + str(totalPktLengths[2])
  60. print 'nf2c3 numBytes sent--->' + str(totalPktLengths[3])
  61. nftest_barrier()
  62. reset_phy()
  63. nftest_regread_expect(reg_defines.MAC_GRP_0_CONTROL_REG(), 0)
  64. nftest_regread_expect(reg_defines.MAC_GRP_1_CONTROL_REG(), 0)
  65. nftest_regread_expect(reg_defines.MAC_GRP_2_CONTROL_REG(), 0)
  66. nftest_regread_expect(reg_defines.MAC_GRP_3_CONTROL_REG(), 0)
  67. ###### QUEUE 0
  68. nftest_regread_expect(reg_defines.MAC_GRP_0_TX_QUEUE_NUM_PKTS_SENT_REG(), NUM_PKTS)
  69. nftest_regread_expect(reg_defines.MAC_GRP_0_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  70. nftest_regread_expect(reg_defines.MAC_GRP_0_TX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[0])
  71. nftest_regread_expect(reg_defines.MAC_GRP_0_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  72. ###### QUEUE 1
  73. nftest_regread_expect(reg_defines.MAC_GRP_1_TX_QUEUE_NUM_PKTS_SENT_REG(), NUM_PKTS)
  74. nftest_regread_expect(reg_defines.MAC_GRP_1_RX_QUEUE_NUM_PKTS_STORED_REG(), 0)
  75. nftest_regread_expect(reg_defines.MAC_GRP_1_TX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[1])
  76. nftest_regread_expect(reg_defines.MAC_GRP_1_RX_QUEUE_NUM_BYTES_PUSHED_REG(), 0)
  77. ###### QUEUE 2
  78. nftest_regread_expect(reg_defines.MAC_GRP_2_TX_QUEUE_NUM_PKTS_SENT_REG(), NUM_PKTS)
  79. nftest_regread_expect(reg_defines.MAC_GRP_2_RX_QUEUE_NUM_PKTS_STORED_REG(), NUM_PKTS)
  80. nftest_regread_expect(reg_defines.MAC_GRP_2_TX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[2])
  81. nftest_regread_expect(reg_defines.MAC_GRP_2_RX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[2])
  82. ###### QUEUE 3
  83. nftest_regread_expect(reg_defines.MAC_GRP_3_TX_QUEUE_NUM_PKTS_SENT_REG(), NUM_PKTS)
  84. nftest_regread_expect(reg_defines.MAC_GRP_3_RX_QUEUE_NUM_PKTS_STORED_REG(), NUM_PKTS)
  85. nftest_regread_expect(reg_defines.MAC_GRP_3_TX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[3])
  86. nftest_regread_expect(reg_defines.MAC_GRP_3_RX_QUEUE_NUM_BYTES_PUSHED_REG(), totalPktLengths[3])
  87. nftest_finish()