diff --git a/fpga/app/dma_bench/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py b/fpga/app/dma_bench/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py index 3946141ba..c2c5e8fb3 100644 --- a/fpga/app/dma_bench/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py +++ b/fpga/app/dma_bench/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py @@ -490,7 +490,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -500,10 +501,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -513,7 +517,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -530,49 +535,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -590,7 +601,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -610,7 +622,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -630,7 +643,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -651,7 +665,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -683,7 +698,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/app/template/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py b/fpga/app/template/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py index 3ee299480..c34f7b0e1 100644 --- a/fpga/app/template/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py +++ b/fpga/app/template/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py @@ -490,7 +490,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -500,10 +501,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -513,7 +517,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -530,49 +535,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -590,7 +601,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -610,7 +622,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -630,7 +643,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -651,7 +665,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -683,7 +698,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/common/tb/mqnic_core_axi/test_mqnic_core_axi.py b/fpga/common/tb/mqnic_core_axi/test_mqnic_core_axi.py index b720bb6a5..4457226de 100644 --- a/fpga/common/tb/mqnic_core_axi/test_mqnic_core_axi.py +++ b/fpga/common/tb/mqnic_core_axi/test_mqnic_core_axi.py @@ -270,7 +270,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -280,10 +281,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -293,7 +297,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -310,49 +315,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -370,7 +381,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -389,7 +401,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -409,7 +422,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -429,7 +443,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -450,7 +465,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -482,7 +498,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/common/tb/mqnic_core_pcie_ptile/test_mqnic_core_pcie_ptile.py b/fpga/common/tb/mqnic_core_pcie_ptile/test_mqnic_core_pcie_ptile.py index 8ff790d86..ca054f7e2 100644 --- a/fpga/common/tb/mqnic_core_pcie_ptile/test_mqnic_core_pcie_ptile.py +++ b/fpga/common/tb/mqnic_core_pcie_ptile/test_mqnic_core_pcie_ptile.py @@ -468,7 +468,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -478,10 +479,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -491,7 +495,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -508,49 +513,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -568,7 +579,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -587,7 +599,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -607,7 +620,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -627,7 +641,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -648,7 +663,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -680,7 +696,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/common/tb/mqnic_core_pcie_s10/test_mqnic_core_pcie_s10.py b/fpga/common/tb/mqnic_core_pcie_s10/test_mqnic_core_pcie_s10.py index 413df2f21..0fadb292b 100644 --- a/fpga/common/tb/mqnic_core_pcie_s10/test_mqnic_core_pcie_s10.py +++ b/fpga/common/tb/mqnic_core_pcie_s10/test_mqnic_core_pcie_s10.py @@ -416,7 +416,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -426,10 +427,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -439,7 +443,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -456,49 +461,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -516,7 +527,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -535,7 +547,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -555,7 +568,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -575,7 +589,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -596,7 +611,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -628,7 +644,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/common/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py b/fpga/common/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py index e4c0f5354..cf50e89c2 100644 --- a/fpga/common/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py +++ b/fpga/common/tb/mqnic_core_pcie_us/test_mqnic_core_pcie_us.py @@ -490,7 +490,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -500,10 +501,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -513,7 +517,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -530,49 +535,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -590,7 +601,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -609,7 +621,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -629,7 +642,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -649,7 +663,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -670,7 +685,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -702,7 +718,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue) diff --git a/fpga/common/tb/mqnic_core_pcie_us_tdma/test_mqnic_core_pcie_us.py b/fpga/common/tb/mqnic_core_pcie_us_tdma/test_mqnic_core_pcie_us.py index 1dd2d5ac9..ed0a4a693 100644 --- a/fpga/common/tb/mqnic_core_pcie_us_tdma/test_mqnic_core_pcie_us.py +++ b/fpga/common/tb/mqnic_core_pcie_us_tdma/test_mqnic_core_pcie_us.py @@ -490,7 +490,8 @@ async def run_test_nic(dut): pkt = await interface.recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if interface.if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.log.info("RX and TX checksum tests") @@ -500,10 +501,13 @@ async def run_test_nic(dut): udp = UDP(sport=1, dport=2) test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) pkt = await tb.port_mac[0].tx.recv() tb.log.info("Packet: %s", pkt) @@ -513,7 +517,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert Ether(pkt.data).build() == test_pkt.build() tb.log.info("Queue mapping offset test") @@ -530,49 +535,55 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff assert pkt.queue == k tb.loopback_enable = False await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, 0, 0) - tb.log.info("Queue mapping RSS mask test") + if tb.driver.interfaces[0].if_feature_rss: + tb.log.info("Queue mapping RSS mask test") - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0x00000003) - for k in range(4): - await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) + for k in range(4): + await tb.driver.interfaces[0].set_rx_queue_map_indir_table(0, k, k) - tb.loopback_enable = True + tb.loopback_enable = True - queues = set() + queues = set() - for k in range(64): - payload = bytes([x % 256 for x in range(256)]) - eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') - ip = IP(src='192.168.1.100', dst='192.168.1.101') - udp = UDP(sport=1, dport=k+0) - test_pkt = eth / ip / udp / payload + for k in range(64): + payload = bytes([x % 256 for x in range(256)]) + eth = Ether(src='5A:51:52:53:54:55', dst='DA:D1:D2:D3:D4:D5') + ip = IP(src='192.168.1.100', dst='192.168.1.101') + udp = UDP(sport=1, dport=k+0) + test_pkt = eth / ip / udp / payload - test_pkt2 = test_pkt.copy() - test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) + if tb.driver.interfaces[0].if_feature_tx_csum: + test_pkt2 = test_pkt.copy() + test_pkt2[UDP].chksum = scapy.utils.checksum(bytes(test_pkt2[UDP])) - await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + await tb.driver.interfaces[0].start_xmit(test_pkt2.build(), 0, 34, 6) + else: + await tb.driver.interfaces[0].start_xmit(test_pkt.build(), 0) - for k in range(64): - pkt = await tb.driver.interfaces[0].recv() + for k in range(64): + pkt = await tb.driver.interfaces[0].recv() - tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + tb.log.info("Packet: %s", pkt) + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff - queues.add(pkt.queue) + queues.add(pkt.queue) - assert len(queues) == 4 + assert len(queues) == 4 - tb.loopback_enable = False + tb.loopback_enable = False - await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) + await tb.driver.interfaces[0].set_rx_queue_map_rss_mask(0, 0) tb.log.info("Multiple small packets") @@ -590,7 +601,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -609,7 +621,8 @@ async def run_test_nic(dut): pkt = await tb.driver.interfaces[0].recv() tb.log.info("Packet: %s", pkt) - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -629,7 +642,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -649,7 +663,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -670,7 +685,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff tb.loopback_enable = False @@ -702,7 +718,8 @@ async def run_test_nic(dut): tb.log.info("Packet: %s", pkt) # assert pkt.data == pkts[k] - assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff + if tb.driver.interfaces[0].if_feature_rx_csum: + assert pkt.rx_checksum == ~scapy.utils.checksum(bytes(pkt.data[14:])) & 0xffff queues.add(pkt.queue)