mirror of
https://github.com/fpganinja/taxi.git
synced 2026-01-18 01:30:36 -08:00
eth: Fix MAC padding bug in 32-bit MACs
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -462,7 +462,7 @@ always_comb begin
|
|||||||
// idle state - wait for data
|
// idle state - wait for data
|
||||||
frame_error_next = 1'b0;
|
frame_error_next = 1'b0;
|
||||||
frame_oversize_next = 1'b0;
|
frame_oversize_next = 1'b0;
|
||||||
frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4-KEEP_W);
|
frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4);
|
||||||
hdr_ptr_next = 0;
|
hdr_ptr_next = 0;
|
||||||
frame_len_next = 0;
|
frame_len_next = 0;
|
||||||
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;
|
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;
|
||||||
|
|||||||
@@ -413,7 +413,7 @@ always_comb begin
|
|||||||
// idle state - wait for data
|
// idle state - wait for data
|
||||||
frame_error_next = 1'b0;
|
frame_error_next = 1'b0;
|
||||||
frame_oversize_next = 1'b0;
|
frame_oversize_next = 1'b0;
|
||||||
frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4-CTRL_W);
|
frame_min_count_next = MIN_LEN_W'(MIN_FRAME_LEN-4);
|
||||||
hdr_ptr_next = 0;
|
hdr_ptr_next = 0;
|
||||||
frame_len_next = 0;
|
frame_len_next = 0;
|
||||||
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;
|
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
|||||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||||
|
|
||||||
assert rx_frame.get_payload() == test_data
|
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||||
assert rx_frame.check_fcs()
|
assert rx_frame.check_fcs()
|
||||||
assert rx_frame.ctrl is None
|
assert rx_frame.ctrl is None
|
||||||
if gbx_cfg is None:
|
if gbx_cfg is None:
|
||||||
@@ -384,7 +384,7 @@ async def run_test_oversize(dut, gbx_cfg=None, ifg=12):
|
|||||||
|
|
||||||
|
|
||||||
def size_list():
|
def size_list():
|
||||||
return list(range(60, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
return list(range(16, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
||||||
|
|
||||||
|
|
||||||
def incrementing_payload(length):
|
def incrementing_payload(length):
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ async def run_test(dut, gbx_cfg=None, payload_lengths=None, payload_data=None, i
|
|||||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||||
|
|
||||||
assert rx_frame.get_payload() == test_data
|
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||||
assert rx_frame.check_fcs()
|
assert rx_frame.check_fcs()
|
||||||
assert rx_frame.ctrl is None
|
assert rx_frame.ctrl is None
|
||||||
if gbx_cfg is None:
|
if gbx_cfg is None:
|
||||||
@@ -497,7 +497,7 @@ async def run_test_oversize(dut, gbx_cfg=None, ifg=12):
|
|||||||
|
|
||||||
|
|
||||||
def size_list():
|
def size_list():
|
||||||
return list(range(60, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
return list(range(16, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
||||||
|
|
||||||
|
|
||||||
def incrementing_payload(length):
|
def incrementing_payload(length):
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12, enable_
|
|||||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||||
|
|
||||||
assert rx_frame.get_payload() == test_data
|
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||||
assert rx_frame.check_fcs()
|
assert rx_frame.check_fcs()
|
||||||
assert rx_frame.error is None
|
assert rx_frame.error is None
|
||||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (32 if enable_gen else 8)) < 0.01
|
assert abs(rx_frame_sfd_ns - ptp_ts_ns - (32 if enable_gen else 8)) < 0.01
|
||||||
@@ -383,7 +383,7 @@ async def run_test_oversize(dut, ifg=12, enable_gen=None, mii_sel=False):
|
|||||||
|
|
||||||
|
|
||||||
def size_list():
|
def size_list():
|
||||||
return list(range(60, 128)) + [512, 1514] + [60]*10
|
return list(range(4, 128)) + [512, 1514] + [60]*10
|
||||||
|
|
||||||
|
|
||||||
def incrementing_payload(length):
|
def incrementing_payload(length):
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12):
|
|||||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||||
|
|
||||||
assert rx_frame.get_payload() == test_data
|
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||||
assert rx_frame.check_fcs()
|
assert rx_frame.check_fcs()
|
||||||
assert rx_frame.ctrl is None
|
assert rx_frame.ctrl is None
|
||||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 3.2) < 0.01
|
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 3.2) < 0.01
|
||||||
@@ -446,7 +446,7 @@ async def run_test_oversize(dut, ifg=12):
|
|||||||
|
|
||||||
|
|
||||||
def size_list():
|
def size_list():
|
||||||
return list(range(60, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
return list(range(16, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
||||||
|
|
||||||
|
|
||||||
def incrementing_payload(length):
|
def incrementing_payload(length):
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ async def run_test(dut, payload_lengths=None, payload_data=None, ifg=12):
|
|||||||
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
tb.log.info("RX frame SFD sim time: %f ns", rx_frame_sfd_ns)
|
||||||
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
tb.log.info("Difference: %f ns", abs(rx_frame_sfd_ns - ptp_ts_ns))
|
||||||
|
|
||||||
assert rx_frame.get_payload() == test_data
|
assert rx_frame.get_payload() == test_data.ljust(60, b'\x00')
|
||||||
assert rx_frame.check_fcs()
|
assert rx_frame.check_fcs()
|
||||||
assert rx_frame.ctrl is None
|
assert rx_frame.ctrl is None
|
||||||
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 6.4) < 0.01
|
assert abs(rx_frame_sfd_ns - ptp_ts_ns - 6.4) < 0.01
|
||||||
@@ -448,7 +448,7 @@ async def run_test_oversize(dut, ifg=12):
|
|||||||
|
|
||||||
|
|
||||||
def size_list():
|
def size_list():
|
||||||
return list(range(60, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
return list(range(16, 128)) + [512, 1514, 9214] + [60]*10 + [i for i in range(64, 73) for k in range(8)]
|
||||||
|
|
||||||
|
|
||||||
def incrementing_payload(length):
|
def incrementing_payload(length):
|
||||||
|
|||||||
Reference in New Issue
Block a user