liteeth icon indicating copy to clipboard operation
liteeth copied to clipboard

Add VLAN (802.1q) tag support for all datawidths of LiteethMAC

Open jersey99 opened this issue 1 year ago • 0 comments

A working ping and UDP on both HW and sim on verilator tun/tap over 2 VLAN tags and IPs. See bench/sim_xgmii_vlan.py

Currently adding a VLAN tag sets up a new port on a newly added MACVLANCrossbar, with a new IP in that virtual network. This can be modded in the future upon necessity and add more IP addresses within the network.

common.py: Add vlan header related things core/init.py: Adds a separate instantiator for VLANs LiteEthVLANUDPIPCore core/{arp/ip}.py: Facilitate the necessary VLAN related modifications mac/common.py: Update the get_port method of the crossbar to support a fancier dispatcher liteeth/packet.py: VLAN header is 4 bytes, this is smaller than 8 byte dw of xgmii, so necessary changes to handle packet headers that are less than datawidth are in here. Note that header_words == 0 codepath is basically independent from the previous code, and the new packet.py is backwards compatible.

jersey99 avatar May 24 '23 21:05 jersey99