aos/devices/e10k_q.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

245 lines
7.0 KiB
Plaintext

/*
* Copyright (c) 2011, ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* e10k_q.dev
*
* DESCRIPTION: Intel 82599 10 GbE Controller Queues
*
* Numbers in comments refer to the Intel 82599 10 GbE Controller Datasheet
* 322429-007, Revison 2.6, December 2010
*/
device e10k_q lsbfirst () "Intel 82599 10 GbE Controller Queues" {
/************************************
* 7.1.5 - 7.1.6 Recieve Descriptors
***********************************/
// 7.1.5
datatype rdesc_legacy "Legacy Receive Descriptor" {
buffer 64 "Buffer Address";
length 16 "Length Field";
checksum 16 "Fragment Checksum";
// Recieve Status
dd 1 "Descriptor Done";
eop 1 "End of Packet";
_ 1 rsvd;
vp 1 "VLAN Packet";
udpcs 1 "UDP Checksum";
l4cs 1 "L4 Checksum";
ipcs 1 "Ipv4 Checksum";
pif 1 "Non Unicast Address";
// Error Field
rxe 1 "MAC error";
_ 5 rsvd;
tcpe 1 "TCP/UDP Checksum Error";
ipe 1 "Ipv4 Checksum Error";
vlan_tag 16 "VLAN Tag";
};
// 7.1.6.1
datatype rdesc_adv_rd "Advanced Receive Descriptor (read)" {
buffer 64 "Packet Buffer Address";
hdr_buffer 64 "Header Buffer Address";
};
// 7.1.6.2
datatype rdesc_adv_wb "Advanced Receive Descriptor (write-back)" {
rss_type 4 "RSS type";
// Packet type
pt_ipv4 1 "IPv4 header present";
pt_ipv4e 1 "IPv4 with extensions";
pt_ipv6 1 "IPv6 header present";
pt_ipv6e 1 "IPv6 with extensions";
pt_tcp 1 "TCP header present";
pt_udp 1 "UDP header present";
pt_sctp 1 "SCTP header";
pt_nfs 1 "NFS header";
pt_isesp 1 "IPSec ESP - IPSec encapsulation";
pt_isah 1 "IPSec AH - IPSec encapsulation";
pt_linksec 1 "LinkSec encapsulation";
pt_l2packet 1 "L2 packet";
_ 1;
rsccnt 4 "RSC Packet Count";
hdr_len 10 "Packet header length";
sph 1 "Split Header";
param 32 "RSS Hash/Fragement CS/Fdir Flt ID/...";
// Extended status
dd 1 "Descriptor Done Status";
eop 1 "End of Packet";
flm 1 "Flow director filter match";
vp 1 "VLAN Packet";
udpcs 1 "UDP Checksum";
l4i 1 "L4 Integrity";
ipcs 1 "IPv4 Checksum";
pif 1 "Non Unicast Address";
_ 1;
vext 1 "Outer-VLAN found in double VLAN packet";
udpv 1 "UDP Checksum Valid";
llint 1 "Low Latency Interrupt";
_ 4;
ts 1 "Time Stamp";
secp 1 "Security Processing bit";
lb 1 "Loopback status indication";
_ 1;
// Extended error
fdirerr_len 3 "FDIRErr/FCERR";
hbo 1 "Header Buffer Overflow";
_ 3;
secerr 2 "Security error indication (LinkSec, IPSec)";
rxe 1 "MAC error";
l4e 1 "L4 integrity error";
ipe 1 "IPv4 checksum error";
pkt_len 16 "Number of bytes posted to packet buffer";
vlan_tag 16 "VLAN Tag";
};
datatype rdesc_adv_wb_nl "Advanced Receive Descriptor (write-back) for non-last" {
_ 17;
rsccnt 4 "RSC Packet Count";
_ 43;
// Extended status
dd 1 "Descriptor Done Status";
eop 1 "End of Packet";
_ 2;
nextp 16 "Next Descriptor Pointer";
// Extended error
_ 12;
pkt_len 16 "Number of bytes posted to packet buffer";
_ 16;
};
/************************************
* 7.2.3 Transmit Descriptors
***********************************/
// 7.2.3.2.2
datatype tdesc_legacy "Legacy Transmit Descriptor Format" {
buffer 64 "Buffer Address";
length 16 "Length";
cso 8 "Checksum Offset";
// Command Byte
eop 1 "End of Packet";
ifcs 1 "Insert FCS";
ic 1 "Insert Checksum";
rs 1 "Report Status";
_ 1 rsvd;
dext 1 "Descriptor extension";
vle 1 "VLAN Packet Enable";
_ 1 rsvd;
// Status
dd 1 " Descriptor Done Status";
_ 3 rsvd;
_ 4 rsvd;
css 8 "Checksum Start";
vlan 16 "VLAN Field";
};
// 7.2.3.2.3
constants l4_type "L4 Packet type" {
udp = 0b00 "UDP";
tcp = 0b01 "TCP";
sctp = 0b10 "SCTP";
};
datatype tdesc_adv_ctx "Advanced Transmit Context Descriptor (write-back)" {
iplen 9 "IP header length";
maclen 7 "MAC header length";
vlan 16 "VLAN tag to be inserted";
ipsec_saidx 10 "Ipsec SA IDX";
fcoef 6 "FCoEF";
_ 16;
ips_esp_len 9 "Size of ESP trailer and ESP ICV (ipsec)";
// TUCMD
snap 1 "SNAP indication";
ipv4 1 "IPv4 Packet type (1=ipv4, 0=ipv6)";
l4t 2 type(l4_type) "L4 Packet type";
ipsec_type 1 "IPSEC_TYPE";
encryption 1 "ESP encryption offload";
fcoe 1 "FCoE";
_ 4;
dtyp 4 type(tdesc_dtyp) "Descriptor type: adv_ctx";
_ 5;
dext 1 "Descriptor Extension (must be 1)";
bcntlen 6 "Must be 0x3F for rate limited queues";
idx 1 "Index into the hardware context table";
_ 3;
l4len 8 "L4 header length";
mss 16 "Maximum Segment Size";
};
// 7.2.3.2.4
datatype tdesc_adv_rd "Advanced Transmit Data Descriptor (read)" {
buffer 64 "Buffer Address";
dtalen 16 "Bytes to be fetched for this descriptor";
_ 2;
mac_ilsec 1 "Apply LinkSec on packet";
mac_1588 1 "IEEE1588 time stamp packet";
dtyp 4 type(tdesc_dtyp) "Descriptor type: adv_data";
// DCMD
eop 1 "End of Packet";
ifcs 1 "Insert FCS";
_ 1;
rs 1 "Report Status";
_ 1;
dext 1 "Descriptor Extension (must be 1)";
vle 1 "VLAN Packet Enable";
tse 1 "Transmit Segmentation Enable";
// Status
dd 1 "Descriptor Done";
_ 3;
idx 3 "Index into the hardware context table";
cc 1 "Check Context bit";
// POPTS
ixsm 1 "Insert IP Checksum";
txsm 1 "Insert TCP/UDP Checksum";
ipsec 1 "Ipsec offload request";
_ 3;
paylen 18 "Size in bytes of whole packet (only first descriptor)";
};
datatype tdesc_adv_wb "Advanced Transmit Data Descriptor (write-back)" {
_ 64;
_ 32;
// Status
dd 1;
_ 3;
_ 28;
};
constants tdesc_dtyp "TX Descriptor Type" {
adv_ctx = 0b0010 "Advanced context descriptor";
adv_data = 0b0011 "Advanced data descriptor";
};
};