bench: hw_itl: Calculate and append FCS for incoming frames
This commit is contained in:
parent
0e80900426
commit
4b4e5fdbfa
@ -13,6 +13,7 @@ import time
|
||||
import os
|
||||
import asyncio
|
||||
import fcntl
|
||||
import zlib
|
||||
|
||||
'''
|
||||
# Set up virtual device using
|
||||
@ -37,11 +38,18 @@ class MacDevReceiver():
|
||||
self.macdev.bind((dev, 0))
|
||||
fcntl.fcntl(self.macdev, fcntl.F_SETFL, os.O_NONBLOCK) # Not the best way to poll, but I couldn't get asyncio to play nicely with threading...
|
||||
|
||||
def eth_fcs(self, data):
|
||||
crc = zlib.crc32(data) & 0xFFFF_FFFF
|
||||
return crc.to_bytes(4, byteorder='little')
|
||||
|
||||
async def main(self):
|
||||
ETH_HEAD = b'\x55\x55\x55\x55\xD5'
|
||||
while True:
|
||||
try:
|
||||
r = self.macdev.recv(2000)
|
||||
if len(r) < 60:
|
||||
r += b'\x00' * (60 - len(r))
|
||||
r += self.eth_fcs(r)
|
||||
await self.eth_tx.send(ETH_HEAD + r);
|
||||
except:
|
||||
await Timer(1, "us")
|
||||
|
Loading…
Reference in New Issue
Block a user