From: Florent Kermarrec Date: Wed, 4 Feb 2015 18:42:50 +0000 (+0100) Subject: ip: add checksum computation on ip rx (maybe not optimal on ressources) X-Git-Tag: 24jan2021_ls180~2604^2~92 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=97daf9bd853fdb77e2fe1cd1f2bb78bc2e4eca66;p=litex.git ip: add checksum computation on ip rx (maybe not optimal on ressources) --- diff --git a/liteeth/ip/__init__.py b/liteeth/ip/__init__.py index 84fd8177..e495972e 100644 --- a/liteeth/ip/__init__.py +++ b/liteeth/ip/__init__.py @@ -121,6 +121,10 @@ class LiteEthIPRX(Module): self.comb += Record.connect(self.sink, depacketizer.sink) sink = depacketizer.source + checksum = LiteEthIPV4Checksum(skip_header=False) + self.submodules += checksum + self.comb += checksum.header.eq(depacketizer.header) + fsm = FSM(reset_state="IDLE") self.submodules += fsm fsm.act("IDLE", @@ -131,7 +135,14 @@ class LiteEthIPRX(Module): ) ) valid = Signal() - self.comb += valid.eq(1) # XXX FIXME + self.comb += valid.eq( + sink.stb & + (sink.destination_ip_address == ip_address) & + (sink.version == 0x4) & + (sink.ihl == 0x5) & + (checksum.value == 0) + ) + fsm.act("CHECK", If(valid, NextState("PRESENT")