projects
/
litex.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
34dad82
)
ip: add checksum computation on ip rx (maybe not optimal on ressources)
author
Florent Kermarrec
<florent@enjoy-digital.fr>
Wed, 4 Feb 2015 18:42:50 +0000
(19:42 +0100)
committer
Florent Kermarrec
<florent@enjoy-digital.fr>
Wed, 4 Feb 2015 18:42:50 +0000
(19:42 +0100)
liteeth/ip/__init__.py
patch
|
blob
|
history
diff --git
a/liteeth/ip/__init__.py
b/liteeth/ip/__init__.py
index 84fd81773a6f7b9143cb64b9e68c25bd31596eed..e495972e7577e42c22c3eb58a82d70b56b96515a 100644
(file)
--- 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
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",
fsm = FSM(reset_state="IDLE")
self.submodules += fsm
fsm.act("IDLE",
@@
-131,7
+135,14
@@
class LiteEthIPRX(Module):
)
)
valid = Signal()
)
)
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")
fsm.act("CHECK",
If(valid,
NextState("PRESENT")