eth: Fix MAC padding bug in 32-bit MACs

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-01-02 01:19:53 -08:00
parent 77b50c7f85
commit d1bba66104
7 changed files with 12 additions and 12 deletions

View File

@@ -462,7 +462,7 @@ always_comb begin
// idle state - wait for data
frame_error_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;
frame_len_next = 0;
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;

View File

@@ -413,7 +413,7 @@ always_comb begin
// idle state - wait for data
frame_error_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;
frame_len_next = 0;
{frame_len_lim_cyc_next, frame_len_lim_last_next} = cfg_tx_max_pkt_len-1;

View File

@@ -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("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.ctrl 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():
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):

View File

@@ -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("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.ctrl 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():
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):

View File

@@ -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("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.error is None
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():
return list(range(60, 128)) + [512, 1514] + [60]*10
return list(range(4, 128)) + [512, 1514] + [60]*10
def incrementing_payload(length):

View File

@@ -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("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.ctrl is None
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():
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):

View File

@@ -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("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.ctrl is None
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():
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):