Corundum status updates
Alex Forencich
1/16/2023
Agenda
Status update summary
Bugs: FIFO memory inference issue
10G/25G MAC optimizations
Priority Flow Control
AXI virtual FIFO
AXI virtual FIFO BW test
AXI virtual FIFO BW test
AXI virtual FIFO status
DMA benchmark application
DRAM integration
RAM BAR/AXI port
Batched completion write support
Baseline (MTU 9000)
Writeback on, but not used (MTU 9000)
Full queue pointer writeback (MTU 9000)
Writeback with IRQ rate limiting (MTU 9000)
New completion write (MTU 9000)
Baseline (MTU 1500)
New completion write (MTU 1500)
Batched completion write support
Variable-length descriptor support
Current descriptor format
struct mqnic_desc {
__u8 rsvd0[2];
__u16 tx_csum_cmd;
__u32 len;
__u64 addr;
};
Descriptor framing format
struct desc_hdr {
__u8 len;
__u8 type;
}
struct desc_block {
__u8 rsvd[16];
};
struct desc {
struct desc_hdr desc_hdr;
__u8 rsvd[14];
struct desc_block[];
};
Proposed descriptor format
struct desc_with_inline_data {
struct desc_hdr desc_hdr;
__u16 flags;
__u32 opcode;
__u8 data_seg_count;
__u8 rsvd0;
__u16 inl_data_len;
__u8 rsvd1[4];
union {
struct desc_data_seg data;
char inl_data[];
} segs[] __attribute__ ((aligned(16)));
};
struct desc_hdr {
__u8 len;
__u8 type;
}
struct desc_data_seg {
union {
struct desc_hdr desc_hdr;
__u8 rsvd0[2];
};
__u16 flags;
__u16 tx_csum_cmd;
__u16 len;
__u64 addr;
};
Queue state storage
Queue state storage (current)
TX/RX size | CQ/EQ size | Field |
64 | 64 | Base addr |
16 | 16 | Head ptr |
16 | 16 | Tail ptr |
16 | 16 | CQ/EQ/IRQ index |
4 | 4 | Log queue size |
2 | - | Log block size |
- | 1 | Arm |
- | 1 | Arm cont |
1 | 1 | Enable |
8 | 8 | Op index |
127 | 127 | Total |
URAM is 4096 x 64, so
2 URAM = 4096 queues
Queue state storage (current)
TX/RX size | CQ/EQ size | Field |
52 | 52 | Base addr (4K align) |
16 | 16 | Producer ptr |
16 | 16 | Consumer ptr |
16 | 16 | CQ/EQ/IRQ index |
4 | 4 | Log queue size |
- | 1 | Arm |
1 | 1 | Enable |
1 | 1 | Active |
12 (6) | 12 (6) | VF index |
16 | - | LSO offset |
58 (-) | 58 (-) | Writeback addr (64B align) |
192 (128) | 178 (113) | Total |
URAM is 4096 x 64, so
3 URAM = 4096 queues
Can fit into 2 URAM with writeback disabled and 6 bit VF index
Management soft core
10G/25G switching
25G/10G/1G switching
To-do list for stable release