You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.7 KiB
98 lines
2.7 KiB
#include <core.p4> |
|
#include <sume_switch.p4> |
|
#include "headers.p4" |
|
#include "settings.p4" |
|
|
|
/******************************************************************************** |
|
* Possible bugs / things to fix: |
|
|
|
- Does NoAction exist? |
|
- Aligment of "meta" / replace metadate with our own |
|
- what does sume_metadata contain? ingress port is where? |
|
nico@nsg-System:~$ find . -name sume_switch.p4 |
|
./master-thesis/support/semester-thesis-1/project/SSS_example_2_SS/bitsnpices/sume_switch.p4 |
|
nico@nsg-System:~$ |
|
|
|
/******************** INFO ONLY *************************/ |
|
|
|
// one-hot encoded: {DMA, NF3, DMA, NF2, DMA, NF1, DMA, NF0} |
|
// typedef bit<8> port_t; |
|
|
|
/* standard sume switch metadata */ |
|
// struct sume_metadata_t { |
|
// bit<16> dma_q_size; // measured in 32-byte words |
|
// bit<16> nf3_q_size; // measured in 32-byte words |
|
// bit<16> nf2_q_size; // measured in 32-byte words |
|
// bit<16> nf1_q_size; // measured in 32-byte words |
|
// bit<16> nf0_q_size; // measured in 32-byte words |
|
// bit<8> send_dig_to_cpu; // send digest_data to CPU |
|
// bit<8> drop; |
|
// port_t dst_port; // one-hot encoded: {DMA, NF3, DMA, NF2, DMA, NF1, DMA, NF0} |
|
// port_t src_port; // one-hot encoded: {DMA, NF3, DMA, NF2, DMA, NF1, DMA, NF0} |
|
// bit<16> pkt_len; // unsigned int |
|
// } |
|
|
|
|
|
|
|
/******************************************************************************** |
|
* Header |
|
*/ |
|
|
|
|
|
// digest_data, MUST be 256 bits -- not used by us |
|
struct digest_data_t { |
|
bit<256> unused; |
|
} |
|
|
|
|
|
@Xilinx_MaxPacketRegion(1024) |
|
parser TopParser(packet_in packet, |
|
out headers hdr, |
|
out metadata meta, |
|
out digest_data_t digest_data, |
|
inout sume_metadata_t standard_metadata) { |
|
|
|
#include "parsers.p4" |
|
digest_data.unused = 0; /* avoid compiler warning */ |
|
} |
|
|
|
/******************************************************************************** |
|
* Main |
|
*/ |
|
control TopPipe(inout headers hdr, |
|
inout metadata meta, |
|
inout digest_data_t digest_data, |
|
inout sume_metadata_t sume_metadata) { |
|
|
|
#include "netpfga.p4" |
|
|
|
|
|
|
|
apply { |
|
dummy_table_for_netpfga.apply(); |
|
} |
|
} |
|
|
|
/******************************************************************************** |
|
* Deparser |
|
*/ |
|
|
|
@Xilinx_MaxPacketRegion(1024) |
|
control TopDeparser(packet_out packet, |
|
in headers hdr, |
|
in metadata meta, |
|
inout digest_data_t digest_data, |
|
inout sume_metadata_t sume_metadata) { |
|
|
|
#include "deparser.p4" |
|
} |
|
|
|
/******************************************************************************** |
|
* Switch |
|
*/ |
|
|
|
SimpleSumeSwitch( |
|
TopParser(), |
|
TopPipe(), |
|
TopDeparser() |
|
) main;
|
|
|