/usr/include/linux
NameSizeModeActions
android/-0755rm
byteorder/-0755rm
caif/-0755rm
can/-0755rm
cifs/-0755rm
dvb/-0755rm
genwqe/-0755rm
hdlc/-0755rm
hsi/-0755rm
iio/-0755rm
isdn/-0755rm
mmc/-0755rm
netfilter/-0755rm
netfilter_arp/-0755rm
netfilter_bridge/-0755rm
netfilter_ipv4/-0755rm
netfilter_ipv6/-0755rm
nfsd/-0755rm
raid/-0755rm
sched/-0755rm
spi/-0755rm
sunrpc/-0755rm
tc_act/-0755rm
tc_ematch/-0755rm
usb/-0755rm
wimax/-0755rm
a.out.h68920644editdlrm
acct.h37330644editdlrm
adb.h11400644editdlrm
adfs_fs.h9360644editdlrm
affs_hardblocks.h15440644editdlrm
agpgart.h39400644editdlrm
aio_abi.h34170644editdlrm
am437x-vpfe.h36810644editdlrm
apm_bios.h36830644editdlrm
arcfb.h2130644editdlrm
arm_sdei.h27510644editdlrm
aspeed-lpc-ctrl.h17800644editdlrm
atalk.h10230644editdlrm
atm.h78880644editdlrm
atmapi.h9520644editdlrm
atmarp.h12960644editdlrm
atmbr2684.h32710644editdlrm
atmclip.h5760644editdlrm
atmdev.h76770644editdlrm
atmioc.h16460644editdlrm
atmlec.h23810644editdlrm
atmmpc.h42260644editdlrm
atmppp.h6390644editdlrm
atmsap.h49700644editdlrm
atmsvc.h18530644editdlrm
atm_eni.h6480644editdlrm
atm_he.h4060644editdlrm
atm_idt77105.h9550644editdlrm
atm_nicstar.h12780644editdlrm
atm_tcp.h16220644editdlrm
atm_zatm.h15400644editdlrm
audit.h203940644editdlrm
auto_dev-ioctl.h49860644editdlrm
auto_fs.h64280644editdlrm
auto_fs4.h4510644editdlrm
auxvec.h15970644editdlrm
ax25.h28240644editdlrm
b1lli.h17170644editdlrm
batadv_packet.h204950644editdlrm
batman_adv.h119770644editdlrm
baycom.h8830644editdlrm
bcache.h83660644editdlrm
bcm933xx_hcs.h4190644editdlrm
bfs_fs.h18930644editdlrm
binfmts.h6280644editdlrm
blkpg.h9040644editdlrm
blktrace_api.h47010644editdlrm
blkzoned.h66080644editdlrm
bpf.h2286600644editdlrm
bpfilter.h4650644editdlrm
bpf_common.h13670644editdlrm
bpf_perf_event.h5290644editdlrm
bpqether.h9810644editdlrm
bsg.h24940644editdlrm
bt-bmc.h5720644editdlrm
btf.h47960644editdlrm
btrfs.h289130644editdlrm
btrfs_tree.h252850644editdlrm
can.h78810644editdlrm
capability.h135210644editdlrm
capi.h31240644editdlrm
cciss_defs.h32810644editdlrm
cciss_ioctl.h27610644editdlrm
cdrom.h288590644editdlrm
cec-funcs.h539010644editdlrm
cec.h376910644editdlrm
cfm_bridge.h14560644editdlrm
cgroupstats.h22190644editdlrm
chio.h53440644editdlrm
close_range.h3770644editdlrm
cm4000_cs.h18060644editdlrm
cn_proc.h34560644editdlrm
coda.h175050644editdlrm
coda_psdev.h7830644editdlrm
coff.h124760644editdlrm
connector.h22530644editdlrm
const.h7880644editdlrm
coresight-stm.h6740644editdlrm
cramfs_fs.h35550644editdlrm
cryptouser.h33920644editdlrm
cuda.h9050644editdlrm
cyclades.h171080644editdlrm
cycx_cfm.h29900644editdlrm
dcbnl.h252380644editdlrm
dccp.h64360644editdlrm
devlink.h215560644editdlrm
dlm.h25530644editdlrm
dlmconstants.h50800644editdlrm
dlm_device.h25430644editdlrm
dlm_netlink.h11590644editdlrm
dlm_plock.h8940644editdlrm
dm-ioctl.h114000644editdlrm
dm-log-userspace.h151910644editdlrm
dma-buf.h52470644editdlrm
dn.h46420644editdlrm
dqblk_xfs.h92450644editdlrm
edd.h56040644editdlrm
efs_fs_sb.h22270644editdlrm
elf-em.h21870644editdlrm
elf-fdpic.h11240644editdlrm
elf.h134710644editdlrm
elfcore.h29950644editdlrm
errno.h230644editdlrm
errqueue.h14770644editdlrm
erspan.h10590644editdlrm
ethtool.h838550644editdlrm
ethtool_netlink.h228260644editdlrm
eventpoll.h27340644editdlrm
fadvise.h8420644editdlrm
falloc.h35840644editdlrm
fanotify.h53410644editdlrm
fb.h164770644editdlrm
fcntl.h41740644editdlrm
fd.h116720644editdlrm
fdreg.h54200644editdlrm
fib_rules.h20360644editdlrm
fiemap.h27750644editdlrm
filter.h22160644editdlrm
firewire-cdev.h438860644editdlrm
firewire-constants.h32310644editdlrm
flat.h21480644editdlrm
fou.h6940644editdlrm
fpga-dfl.h87280644editdlrm
fs.h134240644editdlrm
fsl_hypervisor.h73010644editdlrm
fsmap.h43930644editdlrm
fuse.h234730644editdlrm
futex.h49930644editdlrm
gameport.h8970644editdlrm
genetlink.h21750644editdlrm
gen_stats.h15260644editdlrm
gfs2_ondisk.h147430644editdlrm
gigaset_dev.h14420644editdlrm
gpio.h67510644editdlrm
gsmmux.h10410644editdlrm
gtp.h6810644editdlrm
hash_info.h9210644editdlrm
hdlc.h6370644editdlrm
hdlcdrv.h29080644editdlrm
hdreg.h227030644editdlrm
hid.h19010644editdlrm
hiddev.h63450644editdlrm
hidraw.h19930644editdlrm
hpet.h7430644editdlrm
hsr_netlink.h10810644editdlrm
hw_breakpoint.h7420644editdlrm
hyperv.h111520644editdlrm
hysdn_if.h13820644editdlrm
i2c-dev.h26120644editdlrm
i2c.h71320644editdlrm
i2o-dev.h115550644editdlrm
i8k.h15280644editdlrm
icmp.h29750644editdlrm
icmpv6.h40380644editdlrm
idxd.h84170644editdlrm
if.h109010644editdlrm
ife.h3510644editdlrm
if_addr.h18860644editdlrm
if_addrlabel.h7210644editdlrm
if_alg.h9460644editdlrm
if_arcnet.h37170644editdlrm
if_arp.h65770644editdlrm
if_bonding.h52910644editdlrm
if_bridge.h195140644editdlrm
if_cablemodem.h9860644editdlrm
if_eql.h13490644editdlrm
if_ether.h82480644editdlrm
if_fc.h17380644editdlrm
if_fddi.h37480644editdlrm
if_frad.h30190644editdlrm
if_hippi.h42350644editdlrm
if_infiniband.h12450644editdlrm
if_link.h310050644editdlrm
if_ltalk.h2100644editdlrm
if_macsec.h58320644editdlrm
if_packet.h79190644editdlrm
if_phonet.h4240644editdlrm
if_plip.h6600644editdlrm
if_ppp.h290644editdlrm
if_pppol2tp.h32920644editdlrm
if_pppox.h48790644editdlrm
if_slip.h8720644editdlrm
if_team.h26000644editdlrm
if_tun.h40980644editdlrm
if_tunnel.h45120644editdlrm
if_vlan.h18310644editdlrm
if_x25.h8810644editdlrm
if_xdp.h30110644editdlrm
igmp.h30640644editdlrm
ila.h12460644editdlrm
in.h100140644editdlrm
in6.h74380644editdlrm
inet_diag.h46720644editdlrm
inotify.h32920644editdlrm
input-event-codes.h286060644editdlrm
input.h159850644editdlrm
in_route.h9360644editdlrm
ioctl.h1630644editdlrm
iommu.h49040644editdlrm
io_uring.h62070644editdlrm
ip.h47280644editdlrm
ip6_tunnel.h19530644editdlrm
ipc.h21010644editdlrm
ipmi.h154420644editdlrm
ipmi_bmc.h4640644editdlrm
ipmi_msgdefs.h34300644editdlrm
ipmi_ssif_bmc.h4410644editdlrm
ipsec.h9470644editdlrm
ipv6.h39670644editdlrm
ipv6_route.h19080644editdlrm
ipx.h23470644editdlrm
ip_vs.h136310644editdlrm
irqnr.h1040644editdlrm
isdn.h57740644editdlrm
isdnif.h23700644editdlrm
isdn_divertif.h12000644editdlrm
isdn_ppp.h19230644editdlrm
iso_fs.h64850644editdlrm
isst_if.h53840644editdlrm
ivtv.h30220644editdlrm
ivtvfb.h12070644editdlrm
jffs2.h70180644editdlrm
joystick.h34340644editdlrm
kcm.h8220644editdlrm
kcmp.h5220644editdlrm
kcov.h10990644editdlrm
kd.h62530644editdlrm
kdev_t.h3830644editdlrm
kernel-page-flags.h9000644editdlrm
kernel.h4380644editdlrm
kernelcapi.h10190644editdlrm
kexec.h18350644editdlrm
keyboard.h127830644editdlrm
keyctl.h35000644editdlrm
kfd_ioctl.h288140644editdlrm
kfd_sysfs.h43500644editdlrm
kvm.h615610644editdlrm
kvm_para.h10010644editdlrm
l2tp.h55910644editdlrm
libc-compat.h82890644editdlrm
lightnvm.h50420644editdlrm
limits.h9370644editdlrm
lirc.h78130644editdlrm
llc.h31640644editdlrm
loop.h34970644editdlrm
lp.h41900644editdlrm
lwtunnel.h21790644editdlrm
magic.h35310644editdlrm
major.h47130644editdlrm
map_to_7segment.h72510644editdlrm
matroxfb.h14640644editdlrm
max2175.h10350644editdlrm
mdio.h172720644editdlrm
media-bus-format.h64110644editdlrm
media.h113820644editdlrm
mei.h34750644editdlrm
membarrier.h78990644editdlrm
memfd.h13240644editdlrm
mempolicy.h22310644editdlrm
meye.h25290644editdlrm
mic_common.h65190644editdlrm
mic_ioctl.h22520644editdlrm
mii.h94960644editdlrm
minix_fs.h21220644editdlrm
mman.h13850644editdlrm
mmtimer.h21170644editdlrm
module.h2550644editdlrm
mount.h45460644editdlrm
mpls.h23020644editdlrm
mpls_iptunnel.h7610644editdlrm
mptcp.h56080644editdlrm
mqueue.h22010644editdlrm
mroute.h54270644editdlrm
mroute6.h45770644editdlrm
mrp_bridge.h17080644editdlrm
msdos_fs.h69630644editdlrm
msg.h33740644editdlrm
mtio.h81750644editdlrm
nbd-netlink.h24080644editdlrm
nbd.h30240644editdlrm
ncsi.h38800644editdlrm
ndctl.h68660644editdlrm
neighbour.h51380644editdlrm
net.h20850644editdlrm
netconf.h6140644editdlrm
netdevice.h22530644editdlrm
netfilter.h18200644editdlrm
netfilter_arp.h4450644editdlrm
netfilter_bridge.h11680644editdlrm
netfilter_decnet.h19790644editdlrm
netfilter_ipv4.h21690644editdlrm
netfilter_ipv6.h21890644editdlrm
netlink.h114950644editdlrm
netlink_diag.h15240644editdlrm
netrom.h8070644editdlrm
net_dropmon.h29220644editdlrm
net_namespace.h7150644editdlrm
net_tstamp.h58060644editdlrm
nexthop.h15340644editdlrm
nfc.h112090644editdlrm
nfs.h45000644editdlrm
nfs2.h14680644editdlrm
nfs3.h24530644editdlrm
nfs4.h65990644editdlrm
nfs4_mount.h19320644editdlrm
nfsacl.h7180644editdlrm
nfs_fs.h16410644editdlrm
nfs_idmap.h22430644editdlrm
nfs_mount.h21420644editdlrm
nilfs2_api.h75890644editdlrm
nilfs2_ondisk.h180330644editdlrm
nitro_enclaves.h131520644editdlrm
nl80211.h3352640644editdlrm
nsfs.h6390644editdlrm
nubus.h81910644editdlrm
nvme_ioctl.h21120644editdlrm
nvram.h5320644editdlrm
n_r3964.h24100644editdlrm
omap3isp.h208530644editdlrm
omapfb.h59180644editdlrm
oom.h5110644editdlrm
openat2.h12890644editdlrm
openvswitch.h401840644editdlrm
packet_diag.h16720644editdlrm
param.h1410644editdlrm
parport.h36440644editdlrm
patchkey.h8920644editdlrm
pci.h13800644editdlrm
pcitest.h7110644editdlrm
pci_regs.h578270644editdlrm
perf_event.h405800644editdlrm
personality.h20970644editdlrm
pfkeyv2.h105690644editdlrm
pfrut.h79870644editdlrm
pg.h23940644editdlrm
phantom.h16540644editdlrm
phonet.h46770644editdlrm
pktcdvd.h26870644editdlrm
pkt_cls.h185110644editdlrm
pkt_sched.h302960644editdlrm
pmu.h53190644editdlrm
poll.h220644editdlrm
posix_acl.h12540644editdlrm
posix_acl_xattr.h11150644editdlrm
posix_types.h10980644editdlrm
ppdev.h32110644editdlrm
ppp-comp.h25270644editdlrm
ppp-ioctl.h54750644editdlrm
ppp_defs.h51070644editdlrm
pps.h47340644editdlrm
pr.h10730644editdlrm
prctl.h80230644editdlrm
psample.h22710644editdlrm
psci.h43280644editdlrm
psp-sev.h45860644editdlrm
ptp_clock.h74560644editdlrm
ptrace.h36740644editdlrm
qemu_fw_cfg.h24690644editdlrm
qnx4_fs.h23280644editdlrm
qnxtypes.h6240644editdlrm
qrtr.h8930644editdlrm
quota.h62910644editdlrm
radeonfb.h3600644editdlrm
random.h13700644editdlrm
raw.h3650644editdlrm
rds.h93010644editdlrm
reboot.h13430644editdlrm
reiserfs_fs.h7750644editdlrm
reiserfs_xattr.h5330644editdlrm
resource.h23470644editdlrm
rfkill.h66080644editdlrm
rio_cm_cdev.h32480644editdlrm
rio_mport_cdev.h93300644editdlrm
romfs_fs.h12380644editdlrm
rose.h22320644editdlrm
route.h23320644editdlrm
rpmsg.h5440644editdlrm
rseq.h49040644editdlrm
rtc.h40090644editdlrm
rtnetlink.h202010644editdlrm
rxrpc.h50800644editdlrm
scc.h45970644editdlrm
sched.h27970644editdlrm
scif_ioctl.h63820644editdlrm
screen_info.h24790644editdlrm
sctp.h359940644editdlrm
sdla.h28390644editdlrm
seccomp.h22570644editdlrm
securebits.h27040644editdlrm
sed-opal.h32750644editdlrm
seg6.h11700644editdlrm
seg6_genl.h5890644editdlrm
seg6_hmac.h4230644editdlrm
seg6_iptunnel.h9270644editdlrm
seg6_local.h20600644editdlrm
selinux_netlink.h11950644editdlrm
sem.h30430644editdlrm
serial.h38660644editdlrm
serial_core.h62450644editdlrm
serial_reg.h154960644editdlrm
serio.h20370644editdlrm
sev-guest.h23030644editdlrm
shm.h37850644editdlrm
signal.h3880644editdlrm
signalfd.h12330644editdlrm
smc.h85130644editdlrm
smc_diag.h27280644editdlrm
smiapp.h10580644editdlrm
snmp.h136630644editdlrm
socket.h9010644editdlrm
sockios.h61060644editdlrm
sock_diag.h13010644editdlrm
sonet.h22900644editdlrm
sonypi.h53090644editdlrm
sound.h12370644editdlrm
soundcard.h460380644editdlrm
stat.h63520644editdlrm
stddef.h15320644editdlrm
stm.h12750644editdlrm
string.h2380644editdlrm
suspend_ioctls.h14310644editdlrm
swab.h69210644editdlrm
switchtec_ioctl.h52620644editdlrm
synclink.h89850644editdlrm
sync_file.h28830644editdlrm
sysctl.h258420644editdlrm
sysinfo.h10490644editdlrm
target_core_user.h46330644editdlrm
taskstats.h71800644editdlrm
tcp.h99200644editdlrm
tcp_metrics.h15490644editdlrm
tdx-guest.h13050644editdlrm
tee.h131650644editdlrm
termios.h5060644editdlrm
thermal.h33090644editdlrm
time.h17480644editdlrm
timerfd.h9360644editdlrm
times.h2780644editdlrm
timex.h64030644editdlrm
time_types.h11750644editdlrm
tiocl.h17290644editdlrm
tipc.h88250644editdlrm
tipc_config.h147080644editdlrm
tipc_netlink.h93950644editdlrm
tipc_sockets_diag.h4680644editdlrm
tls.h42880644editdlrm
toshiba.h19300644editdlrm
tty.h15850644editdlrm
tty_flags.h45270644editdlrm
types.h14760644editdlrm
udf_fs_i.h6970644editdlrm
udp.h16610644editdlrm
uhid.h46480644editdlrm
uinput.h92610644editdlrm
uio.h7320644editdlrm
uleds.h7980644editdlrm
ultrasound.h45620644editdlrm
un.h3840644editdlrm
unistd.h2200644editdlrm
unix_diag.h12530644editdlrm
usbdevice_fs.h83170644editdlrm
usbip.h6400644editdlrm
userfaultfd.h77740644editdlrm
userio.h15160644editdlrm
utime.h2150644editdlrm
utsname.h6690644editdlrm
uuid.h13560644editdlrm
uvcvideo.h26350644editdlrm
v4l2-common.h41770644editdlrm
v4l2-controls.h517770644editdlrm
v4l2-dv-timings.h315620644editdlrm
v4l2-mediabus.h51010644editdlrm
v4l2-subdev.h60960644editdlrm
vboxguest.h87290644editdlrm
vbox_err.h72570644editdlrm
vbox_vmmdev_types.h83560644editdlrm
vdpa.h14210644editdlrm
version.h4300644editdlrm
veth.h2240644editdlrm
vfio.h522230644editdlrm
vfio_ccw.h13170644editdlrm
vfio_zdev.h25420644editdlrm
vhost.h64180644editdlrm
vhost_types.h39970644editdlrm
videodev2.h907410644editdlrm
virtio_9p.h20410644editdlrm
virtio_balloon.h52740644editdlrm
virtio_blk.h67970644editdlrm
virtio_bt.h7720644editdlrm
virtio_config.h40050644editdlrm
virtio_console.h31360644editdlrm
virtio_crypto.h138740644editdlrm
virtio_fs.h5720644editdlrm
virtio_gpu.h114540644editdlrm
virtio_ids.h32690644editdlrm
virtio_input.h25060644editdlrm
virtio_iommu.h37830644editdlrm
virtio_mem.h71570644editdlrm
virtio_mmio.h49690644editdlrm
virtio_net.h105490644editdlrm
virtio_pci.h74060644editdlrm
virtio_ring.h74970644editdlrm
virtio_rng.h2650644editdlrm
virtio_scsi.h60350644editdlrm
virtio_snd.h93040644editdlrm
virtio_types.h21530644editdlrm
virtio_vsock.h30860644editdlrm
vmcore.h4310644editdlrm
vm_sockets.h64940644editdlrm
vm_sockets_diag.h9630644editdlrm
vsockmon.h18850644editdlrm
vt.h30590644editdlrm
vtpm_proxy.h17190644editdlrm
wait.h6820644editdlrm
wanrouter.h4530644editdlrm
watchdog.h23350644editdlrm
wimax.h83710644editdlrm
wireless.h427030644editdlrm
wmi.h18860644editdlrm
x25.h35620644editdlrm
xattr.h28600644editdlrm
xdp_diag.h14680644editdlrm
xfrm.h119940644editdlrm
xilinx-v4l2-controls.h29760644editdlrm
zorro.h32960644editdlrm
zorro_ids.h299630644editdlrm
Edit: /usr/include/linux/pkt_sched.h (30296B)
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ #ifndef __LINUX_PKT_SCHED_H #define __LINUX_PKT_SCHED_H #include #include /* Logical priority bands not depending on specific packet scheduler. Every scheduler will map them to real traffic classes, if it has no more precise mechanism to classify packets. These numbers have no special meaning, though their coincidence with obsolete IPv6 values is not occasional :-). New IPv6 drafts preferred full anarchy inspired by diffserv group. Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy class, actually, as rule it will be handled with more care than filler or even bulk. */ #define TC_PRIO_BESTEFFORT 0 #define TC_PRIO_FILLER 1 #define TC_PRIO_BULK 2 #define TC_PRIO_INTERACTIVE_BULK 4 #define TC_PRIO_INTERACTIVE 6 #define TC_PRIO_CONTROL 7 #define TC_PRIO_MAX 15 /* Generic queue statistics, available for all the elements. Particular schedulers may have also their private records. */ struct tc_stats { __u64 bytes; /* Number of enqueued bytes */ __u32 packets; /* Number of enqueued packets */ __u32 drops; /* Packets dropped because of lack of resources */ __u32 overlimits; /* Number of throttle events when this * flow goes out of allocated bandwidth */ __u32 bps; /* Current flow byte rate */ __u32 pps; /* Current flow packet rate */ __u32 qlen; __u32 backlog; }; struct tc_estimator { signed char interval; unsigned char ewma_log; }; /* "Handles" --------- All the traffic control objects have 32bit identifiers, or "handles". They can be considered as opaque numbers from user API viewpoint, but actually they always consist of two fields: major and minor numbers, which are interpreted by kernel specially, that may be used by applications, though not recommended. F.e. qdisc handles always have minor number equal to zero, classes (or flows) have major equal to parent qdisc major, and minor uniquely identifying class inside qdisc. Macros to manipulate handles: */ #define TC_H_MAJ_MASK (0xFFFF0000U) #define TC_H_MIN_MASK (0x0000FFFFU) #define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK) #define TC_H_MIN(h) ((h)&TC_H_MIN_MASK) #define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK)) #define TC_H_UNSPEC (0U) #define TC_H_ROOT (0xFFFFFFFFU) #define TC_H_INGRESS (0xFFFFFFF1U) #define TC_H_CLSACT TC_H_INGRESS #define TC_H_MIN_PRIORITY 0xFFE0U #define TC_H_MIN_INGRESS 0xFFF2U #define TC_H_MIN_EGRESS 0xFFF3U /* Need to corrospond to iproute2 tc/tc_core.h "enum link_layer" */ enum tc_link_layer { TC_LINKLAYER_UNAWARE, /* Indicate unaware old iproute2 util */ TC_LINKLAYER_ETHERNET, TC_LINKLAYER_ATM, }; #define TC_LINKLAYER_MASK 0x0F /* limit use to lower 4 bits */ struct tc_ratespec { unsigned char cell_log; __u8 linklayer; /* lower 4 bits */ unsigned short overhead; short cell_align; unsigned short mpu; __u32 rate; }; #define TC_RTAB_SIZE 1024 struct tc_sizespec { unsigned char cell_log; unsigned char size_log; short cell_align; int overhead; unsigned int linklayer; unsigned int mpu; unsigned int mtu; unsigned int tsize; }; enum { TCA_STAB_UNSPEC, TCA_STAB_BASE, TCA_STAB_DATA, __TCA_STAB_MAX }; #define TCA_STAB_MAX (__TCA_STAB_MAX - 1) /* FIFO section */ struct tc_fifo_qopt { __u32 limit; /* Queue length: bytes for bfifo, packets for pfifo */ }; /* SKBPRIO section */ /* * Priorities go from zero to (SKBPRIO_MAX_PRIORITY - 1). * SKBPRIO_MAX_PRIORITY should be at least 64 in order for skbprio to be able * to map one to one the DS field of IPV4 and IPV6 headers. * Memory allocation grows linearly with SKBPRIO_MAX_PRIORITY. */ #define SKBPRIO_MAX_PRIORITY 64 struct tc_skbprio_qopt { __u32 limit; /* Queue length in packets. */ }; /* PRIO section */ #define TCQ_PRIO_BANDS 16 #define TCQ_MIN_PRIO_BANDS 2 struct tc_prio_qopt { int bands; /* Number of bands */ __u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */ }; /* MULTIQ section */ struct tc_multiq_qopt { __u16 bands; /* Number of bands */ __u16 max_bands; /* Maximum number of queues */ }; /* PLUG section */ #define TCQ_PLUG_BUFFER 0 #define TCQ_PLUG_RELEASE_ONE 1 #define TCQ_PLUG_RELEASE_INDEFINITE 2 #define TCQ_PLUG_LIMIT 3 struct tc_plug_qopt { /* TCQ_PLUG_BUFFER: Inset a plug into the queue and * buffer any incoming packets * TCQ_PLUG_RELEASE_ONE: Dequeue packets from queue head * to beginning of the next plug. * TCQ_PLUG_RELEASE_INDEFINITE: Dequeue all packets from queue. * Stop buffering packets until the next TCQ_PLUG_BUFFER * command is received (just act as a pass-thru queue). * TCQ_PLUG_LIMIT: Increase/decrease queue size */ int action; __u32 limit; }; /* TBF section */ struct tc_tbf_qopt { struct tc_ratespec rate; struct tc_ratespec peakrate; __u32 limit; __u32 buffer; __u32 mtu; }; enum { TCA_TBF_UNSPEC, TCA_TBF_PARMS, TCA_TBF_RTAB, TCA_TBF_PTAB, TCA_TBF_RATE64, TCA_TBF_PRATE64, TCA_TBF_BURST, TCA_TBF_PBURST, TCA_TBF_PAD, __TCA_TBF_MAX, }; #define TCA_TBF_MAX (__TCA_TBF_MAX - 1) /* TEQL section */ /* TEQL does not require any parameters */ /* SFQ section */ struct tc_sfq_qopt { unsigned quantum; /* Bytes per round allocated to flow */ int perturb_period; /* Period of hash perturbation */ __u32 limit; /* Maximal packets in queue */ unsigned divisor; /* Hash divisor */ unsigned flows; /* Maximal number of flows */ }; struct tc_sfqred_stats { __u32 prob_drop; /* Early drops, below max threshold */ __u32 forced_drop; /* Early drops, after max threshold */ __u32 prob_mark; /* Marked packets, below max threshold */ __u32 forced_mark; /* Marked packets, after max threshold */ __u32 prob_mark_head; /* Marked packets, below max threshold */ __u32 forced_mark_head;/* Marked packets, after max threshold */ }; struct tc_sfq_qopt_v1 { struct tc_sfq_qopt v0; unsigned int depth; /* max number of packets per flow */ unsigned int headdrop; /* SFQRED parameters */ __u32 limit; /* HARD maximal flow queue length (bytes) */ __u32 qth_min; /* Min average length threshold (bytes) */ __u32 qth_max; /* Max average length threshold (bytes) */ unsigned char Wlog; /* log(W) */ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */ unsigned char Scell_log; /* cell size for idle damping */ unsigned char flags; __u32 max_P; /* probability, high resolution */ /* SFQRED stats */ struct tc_sfqred_stats stats; }; struct tc_sfq_xstats { __s32 allot; }; /* RED section */ enum { TCA_RED_UNSPEC, TCA_RED_PARMS, TCA_RED_STAB, TCA_RED_MAX_P, TCA_RED_FLAGS, /* bitfield32 */ TCA_RED_EARLY_DROP_BLOCK, /* u32 */ TCA_RED_MARK_BLOCK, /* u32 */ __TCA_RED_MAX, }; #define TCA_RED_MAX (__TCA_RED_MAX - 1) struct tc_red_qopt { __u32 limit; /* HARD maximal queue length (bytes) */ __u32 qth_min; /* Min average length threshold (bytes) */ __u32 qth_max; /* Max average length threshold (bytes) */ unsigned char Wlog; /* log(W) */ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */ unsigned char Scell_log; /* cell size for idle damping */ /* This field can be used for flags that a RED-like qdisc has * historically supported. E.g. when configuring RED, it can be used for * ECN, HARDDROP and ADAPTATIVE. For SFQ it can be used for ECN, * HARDDROP. Etc. Because this field has not been validated, and is * copied back on dump, any bits besides those to which a given qdisc * has assigned a historical meaning need to be considered for free use * by userspace tools. * * Any further flags need to be passed differently, e.g. through an * attribute (such as TCA_RED_FLAGS above). Such attribute should allow * passing both recent and historic flags in one value. */ unsigned char flags; #define TC_RED_ECN 1 #define TC_RED_HARDDROP 2 #define TC_RED_ADAPTATIVE 4 #define TC_RED_NODROP 8 }; #define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE) struct tc_red_xstats { __u32 early; /* Early drops */ __u32 pdrop; /* Drops due to queue limits */ __u32 other; /* Drops due to drop() calls */ __u32 marked; /* Marked packets */ }; /* GRED section */ #define MAX_DPs 16 enum { TCA_GRED_UNSPEC, TCA_GRED_PARMS, TCA_GRED_STAB, TCA_GRED_DPS, TCA_GRED_MAX_P, TCA_GRED_LIMIT, TCA_GRED_VQ_LIST, /* nested TCA_GRED_VQ_ENTRY */ __TCA_GRED_MAX, }; #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) enum { TCA_GRED_VQ_ENTRY_UNSPEC, TCA_GRED_VQ_ENTRY, /* nested TCA_GRED_VQ_* */ __TCA_GRED_VQ_ENTRY_MAX, }; #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1) enum { TCA_GRED_VQ_UNSPEC, TCA_GRED_VQ_PAD, TCA_GRED_VQ_DP, /* u32 */ TCA_GRED_VQ_STAT_BYTES, /* u64 */ TCA_GRED_VQ_STAT_PACKETS, /* u32 */ TCA_GRED_VQ_STAT_BACKLOG, /* u32 */ TCA_GRED_VQ_STAT_PROB_DROP, /* u32 */ TCA_GRED_VQ_STAT_PROB_MARK, /* u32 */ TCA_GRED_VQ_STAT_FORCED_DROP, /* u32 */ TCA_GRED_VQ_STAT_FORCED_MARK, /* u32 */ TCA_GRED_VQ_STAT_PDROP, /* u32 */ TCA_GRED_VQ_STAT_OTHER, /* u32 */ TCA_GRED_VQ_FLAGS, /* u32 */ __TCA_GRED_VQ_MAX }; #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1) struct tc_gred_qopt { __u32 limit; /* HARD maximal queue length (bytes) */ __u32 qth_min; /* Min average length threshold (bytes) */ __u32 qth_max; /* Max average length threshold (bytes) */ __u32 DP; /* up to 2^32 DPs */ __u32 backlog; __u32 qave; __u32 forced; __u32 early; __u32 other; __u32 pdrop; __u8 Wlog; /* log(W) */ __u8 Plog; /* log(P_max/(qth_max-qth_min)) */ __u8 Scell_log; /* cell size for idle damping */ __u8 prio; /* prio of this VQ */ __u32 packets; __u32 bytesin; }; /* gred setup */ struct tc_gred_sopt { __u32 DPs; __u32 def_DP; __u8 grio; __u8 flags; __u16 pad1; }; /* CHOKe section */ enum { TCA_CHOKE_UNSPEC, TCA_CHOKE_PARMS, TCA_CHOKE_STAB, TCA_CHOKE_MAX_P, __TCA_CHOKE_MAX, }; #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) struct tc_choke_qopt { __u32 limit; /* Hard queue length (packets) */ __u32 qth_min; /* Min average threshold (packets) */ __u32 qth_max; /* Max average threshold (packets) */ unsigned char Wlog; /* log(W) */ unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */ unsigned char Scell_log; /* cell size for idle damping */ unsigned char flags; /* see RED flags */ }; struct tc_choke_xstats { __u32 early; /* Early drops */ __u32 pdrop; /* Drops due to queue limits */ __u32 other; /* Drops due to drop() calls */ __u32 marked; /* Marked packets */ __u32 matched; /* Drops due to flow match */ }; /* HTB section */ #define TC_HTB_NUMPRIO 8 #define TC_HTB_MAXDEPTH 8 #define TC_HTB_PROTOVER 3 /* the same as HTB and TC's major */ struct tc_htb_opt { struct tc_ratespec rate; struct tc_ratespec ceil; __u32 buffer; __u32 cbuffer; __u32 quantum; __u32 level; /* out only */ __u32 prio; }; struct tc_htb_glob { __u32 version; /* to match HTB/TC */ __u32 rate2quantum; /* bps->quantum divisor */ __u32 defcls; /* default class number */ __u32 debug; /* debug flags */ /* stats */ __u32 direct_pkts; /* count of non shaped packets */ }; enum { TCA_HTB_UNSPEC, TCA_HTB_PARMS, TCA_HTB_INIT, TCA_HTB_CTAB, TCA_HTB_RTAB, TCA_HTB_DIRECT_QLEN, TCA_HTB_RATE64, TCA_HTB_CEIL64, TCA_HTB_PAD, TCA_HTB_OFFLOAD, __TCA_HTB_MAX, }; #define TCA_HTB_MAX (__TCA_HTB_MAX - 1) struct tc_htb_xstats { __u32 lends; __u32 borrows; __u32 giants; /* unused since 'Make HTB scheduler work with TSO.' */ __s32 tokens; __s32 ctokens; }; /* HFSC section */ struct tc_hfsc_qopt { __u16 defcls; /* default class */ }; struct tc_service_curve { __u32 m1; /* slope of the first segment in bps */ __u32 d; /* x-projection of the first segment in us */ __u32 m2; /* slope of the second segment in bps */ }; struct tc_hfsc_stats { __u64 work; /* total work done */ __u64 rtwork; /* work done by real-time criteria */ __u32 period; /* current period */ __u32 level; /* class level in hierarchy */ }; enum { TCA_HFSC_UNSPEC, TCA_HFSC_RSC, TCA_HFSC_FSC, TCA_HFSC_USC, __TCA_HFSC_MAX, }; #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) /* CBQ section */ #define TC_CBQ_MAXPRIO 8 #define TC_CBQ_MAXLEVEL 8 #define TC_CBQ_DEF_EWMA 5 struct tc_cbq_lssopt { unsigned char change; unsigned char flags; #define TCF_CBQ_LSS_BOUNDED 1 #define TCF_CBQ_LSS_ISOLATED 2 unsigned char ewma_log; unsigned char level; #define TCF_CBQ_LSS_FLAGS 1 #define TCF_CBQ_LSS_EWMA 2 #define TCF_CBQ_LSS_MAXIDLE 4 #define TCF_CBQ_LSS_MINIDLE 8 #define TCF_CBQ_LSS_OFFTIME 0x10 #define TCF_CBQ_LSS_AVPKT 0x20 __u32 maxidle; __u32 minidle; __u32 offtime; __u32 avpkt; }; struct tc_cbq_wrropt { unsigned char flags; unsigned char priority; unsigned char cpriority; unsigned char __reserved; __u32 allot; __u32 weight; }; struct tc_cbq_ovl { unsigned char strategy; #define TC_CBQ_OVL_CLASSIC 0 #define TC_CBQ_OVL_DELAY 1 #define TC_CBQ_OVL_LOWPRIO 2 #define TC_CBQ_OVL_DROP 3 #define TC_CBQ_OVL_RCLASSIC 4 unsigned char priority2; __u16 pad; __u32 penalty; }; struct tc_cbq_police { unsigned char police; unsigned char __res1; unsigned short __res2; }; struct tc_cbq_fopt { __u32 split; __u32 defmap; __u32 defchange; }; struct tc_cbq_xstats { __u32 borrows; __u32 overactions; __s32 avgidle; __s32 undertime; }; enum { TCA_CBQ_UNSPEC, TCA_CBQ_LSSOPT, TCA_CBQ_WRROPT, TCA_CBQ_FOPT, TCA_CBQ_OVL_STRATEGY, TCA_CBQ_RATE, TCA_CBQ_RTAB, TCA_CBQ_POLICE, __TCA_CBQ_MAX, }; #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) /* dsmark section */ enum { TCA_DSMARK_UNSPEC, TCA_DSMARK_INDICES, TCA_DSMARK_DEFAULT_INDEX, TCA_DSMARK_SET_TC_INDEX, TCA_DSMARK_MASK, TCA_DSMARK_VALUE, __TCA_DSMARK_MAX, }; #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) /* ATM section */ enum { TCA_ATM_UNSPEC, TCA_ATM_FD, /* file/socket descriptor */ TCA_ATM_PTR, /* pointer to descriptor - later */ TCA_ATM_HDR, /* LL header */ TCA_ATM_EXCESS, /* excess traffic class (0 for CLP) */ TCA_ATM_ADDR, /* PVC address (for output only) */ TCA_ATM_STATE, /* VC state (ATM_VS_*; for output only) */ __TCA_ATM_MAX, }; #define TCA_ATM_MAX (__TCA_ATM_MAX - 1) /* Network emulator */ enum { TCA_NETEM_UNSPEC, TCA_NETEM_CORR, TCA_NETEM_DELAY_DIST, TCA_NETEM_REORDER, TCA_NETEM_CORRUPT, TCA_NETEM_LOSS, TCA_NETEM_RATE, TCA_NETEM_ECN, TCA_NETEM_RATE64, TCA_NETEM_PAD, TCA_NETEM_LATENCY64, TCA_NETEM_JITTER64, TCA_NETEM_SLOT, TCA_NETEM_SLOT_DIST, __TCA_NETEM_MAX, }; #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) struct tc_netem_qopt { __u32 latency; /* added delay (us) */ __u32 limit; /* fifo limit (packets) */ __u32 loss; /* random packet loss (0=none ~0=100%) */ __u32 gap; /* re-ordering gap (0 for none) */ __u32 duplicate; /* random packet dup (0=none ~0=100%) */ __u32 jitter; /* random jitter in latency (us) */ }; struct tc_netem_corr { __u32 delay_corr; /* delay correlation */ __u32 loss_corr; /* packet loss correlation */ __u32 dup_corr; /* duplicate correlation */ }; struct tc_netem_reorder { __u32 probability; __u32 correlation; }; struct tc_netem_corrupt { __u32 probability; __u32 correlation; }; struct tc_netem_rate { __u32 rate; /* byte/s */ __s32 packet_overhead; __u32 cell_size; __s32 cell_overhead; }; struct tc_netem_slot { __s64 min_delay; /* nsec */ __s64 max_delay; __s32 max_packets; __s32 max_bytes; __s64 dist_delay; /* nsec */ __s64 dist_jitter; /* nsec */ }; enum { NETEM_LOSS_UNSPEC, NETEM_LOSS_GI, /* General Intuitive - 4 state model */ NETEM_LOSS_GE, /* Gilbert Elliot models */ __NETEM_LOSS_MAX }; #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) /* State transition probabilities for 4 state model */ struct tc_netem_gimodel { __u32 p13; __u32 p31; __u32 p32; __u32 p14; __u32 p23; }; /* Gilbert-Elliot models */ struct tc_netem_gemodel { __u32 p; __u32 r; __u32 h; __u32 k1; }; #define NETEM_DIST_SCALE 8192 #define NETEM_DIST_MAX 16384 /* DRR */ enum { TCA_DRR_UNSPEC, TCA_DRR_QUANTUM, __TCA_DRR_MAX }; #define TCA_DRR_MAX (__TCA_DRR_MAX - 1) struct tc_drr_stats { __u32 deficit; }; /* MQPRIO */ #define TC_QOPT_BITMASK 15 #define TC_QOPT_MAX_QUEUE 16 enum { TC_MQPRIO_HW_OFFLOAD_NONE, /* no offload requested */ TC_MQPRIO_HW_OFFLOAD_TCS, /* offload TCs, no queue counts */ __TC_MQPRIO_HW_OFFLOAD_MAX }; #define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1) enum { TC_MQPRIO_MODE_DCB, TC_MQPRIO_MODE_CHANNEL, __TC_MQPRIO_MODE_MAX }; #define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1) enum { TC_MQPRIO_SHAPER_DCB, TC_MQPRIO_SHAPER_BW_RATE, /* Add new shapers below */ __TC_MQPRIO_SHAPER_MAX }; #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1) struct tc_mqprio_qopt { __u8 num_tc; __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; __u8 hw; __u16 count[TC_QOPT_MAX_QUEUE]; __u16 offset[TC_QOPT_MAX_QUEUE]; }; #define TC_MQPRIO_F_MODE 0x1 #define TC_MQPRIO_F_SHAPER 0x2 #define TC_MQPRIO_F_MIN_RATE 0x4 #define TC_MQPRIO_F_MAX_RATE 0x8 enum { TCA_MQPRIO_UNSPEC, TCA_MQPRIO_MODE, TCA_MQPRIO_SHAPER, TCA_MQPRIO_MIN_RATE64, TCA_MQPRIO_MAX_RATE64, __TCA_MQPRIO_MAX, }; #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1) /* SFB */ enum { TCA_SFB_UNSPEC, TCA_SFB_PARMS, __TCA_SFB_MAX, }; #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) /* * Note: increment, decrement are Q0.16 fixed-point values. */ struct tc_sfb_qopt { __u32 rehash_interval; /* delay between hash move, in ms */ __u32 warmup_time; /* double buffering warmup time in ms (warmup_time < rehash_interval) */ __u32 max; /* max len of qlen_min */ __u32 bin_size; /* maximum queue length per bin */ __u32 increment; /* probability increment, (d1 in Blue) */ __u32 decrement; /* probability decrement, (d2 in Blue) */ __u32 limit; /* max SFB queue length */ __u32 penalty_rate; /* inelastic flows are rate limited to 'rate' pps */ __u32 penalty_burst; }; struct tc_sfb_xstats { __u32 earlydrop; __u32 penaltydrop; __u32 bucketdrop; __u32 queuedrop; __u32 childdrop; /* drops in child qdisc */ __u32 marked; __u32 maxqlen; __u32 maxprob; __u32 avgprob; }; #define SFB_MAX_PROB 0xFFFF /* QFQ */ enum { TCA_QFQ_UNSPEC, TCA_QFQ_WEIGHT, TCA_QFQ_LMAX, __TCA_QFQ_MAX }; #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1) struct tc_qfq_stats { __u32 weight; __u32 lmax; }; /* CODEL */ enum { TCA_CODEL_UNSPEC, TCA_CODEL_TARGET, TCA_CODEL_LIMIT, TCA_CODEL_INTERVAL, TCA_CODEL_ECN, TCA_CODEL_CE_THRESHOLD, __TCA_CODEL_MAX }; #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) struct tc_codel_xstats { __u32 maxpacket; /* largest packet we've seen so far */ __u32 count; /* how many drops we've done since the last time we * entered dropping state */ __u32 lastcount; /* count at entry to dropping state */ __u32 ldelay; /* in-queue delay seen by most recently dequeued packet */ __s32 drop_next; /* time to drop next packet */ __u32 drop_overlimit; /* number of time max qdisc packet limit was hit */ __u32 ecn_mark; /* number of packets we ECN marked instead of dropped */ __u32 dropping; /* are we in dropping state ? */ __u32 ce_mark; /* number of CE marked packets because of ce_threshold */ }; /* FQ_CODEL */ #define FQ_CODEL_QUANTUM_MAX (1 << 20) enum { TCA_FQ_CODEL_UNSPEC, TCA_FQ_CODEL_TARGET, TCA_FQ_CODEL_LIMIT, TCA_FQ_CODEL_INTERVAL, TCA_FQ_CODEL_ECN, TCA_FQ_CODEL_FLOWS, TCA_FQ_CODEL_QUANTUM, TCA_FQ_CODEL_CE_THRESHOLD, TCA_FQ_CODEL_DROP_BATCH_SIZE, TCA_FQ_CODEL_MEMORY_LIMIT, TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR, TCA_FQ_CODEL_CE_THRESHOLD_MASK, __TCA_FQ_CODEL_MAX }; #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) enum { TCA_FQ_CODEL_XSTATS_QDISC, TCA_FQ_CODEL_XSTATS_CLASS, }; struct tc_fq_codel_qd_stats { __u32 maxpacket; /* largest packet we've seen so far */ __u32 drop_overlimit; /* number of time max qdisc * packet limit was hit */ __u32 ecn_mark; /* number of packets we ECN marked * instead of being dropped */ __u32 new_flow_count; /* number of time packets * created a 'new flow' */ __u32 new_flows_len; /* count of flows in new list */ __u32 old_flows_len; /* count of flows in old list */ __u32 ce_mark; /* packets above ce_threshold */ __u32 memory_usage; /* in bytes */ __u32 drop_overmemory; }; struct tc_fq_codel_cl_stats { __s32 deficit; __u32 ldelay; /* in-queue delay seen by most recently * dequeued packet */ __u32 count; __u32 lastcount; __u32 dropping; __s32 drop_next; }; struct tc_fq_codel_xstats { __u32 type; union { struct tc_fq_codel_qd_stats qdisc_stats; struct tc_fq_codel_cl_stats class_stats; }; }; /* FQ */ enum { TCA_FQ_UNSPEC, TCA_FQ_PLIMIT, /* limit of total number of packets in queue */ TCA_FQ_FLOW_PLIMIT, /* limit of packets per flow */ TCA_FQ_QUANTUM, /* RR quantum */ TCA_FQ_INITIAL_QUANTUM, /* RR quantum for new flow */ TCA_FQ_RATE_ENABLE, /* enable/disable rate limiting */ TCA_FQ_FLOW_DEFAULT_RATE,/* obsolete, do not use */ TCA_FQ_FLOW_MAX_RATE, /* per flow max rate */ TCA_FQ_BUCKETS_LOG, /* log2(number of buckets) */ TCA_FQ_FLOW_REFILL_DELAY, /* flow credit refill delay in usec */ TCA_FQ_ORPHAN_MASK, /* mask applied to orphaned skb hashes */ TCA_FQ_LOW_RATE_THRESHOLD, /* per packet delay under this rate */ TCA_FQ_CE_THRESHOLD, /* DCTCP-like CE-marking threshold */ TCA_FQ_TIMER_SLACK, /* timer slack */ __TCA_FQ_MAX }; #define TCA_FQ_MAX (__TCA_FQ_MAX - 1) struct tc_fq_qd_stats { __u64 gc_flows; __u64 highprio_packets; __u64 tcp_retrans; __u64 throttled; __u64 flows_plimit; __u64 pkts_too_long; __u64 allocation_errors; __s64 time_next_delayed_flow; __u32 flows; __u32 inactive_flows; __u32 throttled_flows; __u32 unthrottle_latency_ns; __u64 ce_mark; /* packets above ce_threshold */ }; /* Heavy-Hitter Filter */ enum { TCA_HHF_UNSPEC, TCA_HHF_BACKLOG_LIMIT, TCA_HHF_QUANTUM, TCA_HHF_HH_FLOWS_LIMIT, TCA_HHF_RESET_TIMEOUT, TCA_HHF_ADMIT_BYTES, TCA_HHF_EVICT_TIMEOUT, TCA_HHF_NON_HH_WEIGHT, __TCA_HHF_MAX }; #define TCA_HHF_MAX (__TCA_HHF_MAX - 1) struct tc_hhf_xstats { __u32 drop_overlimit; /* number of times max qdisc packet limit * was hit */ __u32 hh_overlimit; /* number of times max heavy-hitters was hit */ __u32 hh_tot_count; /* number of captured heavy-hitters so far */ __u32 hh_cur_count; /* number of current heavy-hitters */ }; /* PIE */ enum { TCA_PIE_UNSPEC, TCA_PIE_TARGET, TCA_PIE_LIMIT, TCA_PIE_TUPDATE, TCA_PIE_ALPHA, TCA_PIE_BETA, TCA_PIE_ECN, TCA_PIE_BYTEMODE, TCA_PIE_DQ_RATE_ESTIMATOR, __TCA_PIE_MAX }; #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) struct tc_pie_xstats { __u64 prob; /* current probability */ __u32 delay; /* current delay in ms */ __u32 avg_dq_rate; /* current average dq_rate in * bits/pie_time */ __u32 dq_rate_estimating; /* is avg_dq_rate being calculated? */ __u32 packets_in; /* total number of packets enqueued */ __u32 dropped; /* packets dropped due to pie_action */ __u32 overlimit; /* dropped due to lack of space * in queue */ __u32 maxq; /* maximum queue size */ __u32 ecn_mark; /* packets marked with ecn*/ }; /* FQ PIE */ enum { TCA_FQ_PIE_UNSPEC, TCA_FQ_PIE_LIMIT, TCA_FQ_PIE_FLOWS, TCA_FQ_PIE_TARGET, TCA_FQ_PIE_TUPDATE, TCA_FQ_PIE_ALPHA, TCA_FQ_PIE_BETA, TCA_FQ_PIE_QUANTUM, TCA_FQ_PIE_MEMORY_LIMIT, TCA_FQ_PIE_ECN_PROB, TCA_FQ_PIE_ECN, TCA_FQ_PIE_BYTEMODE, TCA_FQ_PIE_DQ_RATE_ESTIMATOR, __TCA_FQ_PIE_MAX }; #define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1) struct tc_fq_pie_xstats { __u32 packets_in; /* total number of packets enqueued */ __u32 dropped; /* packets dropped due to fq_pie_action */ __u32 overlimit; /* dropped due to lack of space in queue */ __u32 overmemory; /* dropped due to lack of memory in queue */ __u32 ecn_mark; /* packets marked with ecn */ __u32 new_flow_count; /* count of new flows created by packets */ __u32 new_flows_len; /* count of flows in new list */ __u32 old_flows_len; /* count of flows in old list */ __u32 memory_usage; /* total memory across all queues */ }; /* CBS */ struct tc_cbs_qopt { __u8 offload; __u8 _pad[3]; __s32 hicredit; __s32 locredit; __s32 idleslope; __s32 sendslope; }; enum { TCA_CBS_UNSPEC, TCA_CBS_PARMS, __TCA_CBS_MAX, }; #define TCA_CBS_MAX (__TCA_CBS_MAX - 1) /* ETF */ struct tc_etf_qopt { __s32 delta; __s32 clockid; __u32 flags; #define TC_ETF_DEADLINE_MODE_ON _BITUL(0) #define TC_ETF_OFFLOAD_ON _BITUL(1) #define TC_ETF_SKIP_SOCK_CHECK _BITUL(2) }; enum { TCA_ETF_UNSPEC, TCA_ETF_PARMS, __TCA_ETF_MAX, }; #define TCA_ETF_MAX (__TCA_ETF_MAX - 1) /* CAKE */ enum { TCA_CAKE_UNSPEC, TCA_CAKE_PAD, TCA_CAKE_BASE_RATE64, TCA_CAKE_DIFFSERV_MODE, TCA_CAKE_ATM, TCA_CAKE_FLOW_MODE, TCA_CAKE_OVERHEAD, TCA_CAKE_RTT, TCA_CAKE_TARGET, TCA_CAKE_AUTORATE, TCA_CAKE_MEMORY, TCA_CAKE_NAT, TCA_CAKE_RAW, TCA_CAKE_WASH, TCA_CAKE_MPU, TCA_CAKE_INGRESS, TCA_CAKE_ACK_FILTER, TCA_CAKE_SPLIT_GSO, TCA_CAKE_FWMARK, __TCA_CAKE_MAX }; #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) enum { __TCA_CAKE_STATS_INVALID, TCA_CAKE_STATS_PAD, TCA_CAKE_STATS_CAPACITY_ESTIMATE64, TCA_CAKE_STATS_MEMORY_LIMIT, TCA_CAKE_STATS_MEMORY_USED, TCA_CAKE_STATS_AVG_NETOFF, TCA_CAKE_STATS_MIN_NETLEN, TCA_CAKE_STATS_MAX_NETLEN, TCA_CAKE_STATS_MIN_ADJLEN, TCA_CAKE_STATS_MAX_ADJLEN, TCA_CAKE_STATS_TIN_STATS, TCA_CAKE_STATS_DEFICIT, TCA_CAKE_STATS_COBALT_COUNT, TCA_CAKE_STATS_DROPPING, TCA_CAKE_STATS_DROP_NEXT_US, TCA_CAKE_STATS_P_DROP, TCA_CAKE_STATS_BLUE_TIMER_US, __TCA_CAKE_STATS_MAX }; #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1) enum { __TCA_CAKE_TIN_STATS_INVALID, TCA_CAKE_TIN_STATS_PAD, TCA_CAKE_TIN_STATS_SENT_PACKETS, TCA_CAKE_TIN_STATS_SENT_BYTES64, TCA_CAKE_TIN_STATS_DROPPED_PACKETS, TCA_CAKE_TIN_STATS_DROPPED_BYTES64, TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS, TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64, TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS, TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64, TCA_CAKE_TIN_STATS_BACKLOG_PACKETS, TCA_CAKE_TIN_STATS_BACKLOG_BYTES, TCA_CAKE_TIN_STATS_THRESHOLD_RATE64, TCA_CAKE_TIN_STATS_TARGET_US, TCA_CAKE_TIN_STATS_INTERVAL_US, TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS, TCA_CAKE_TIN_STATS_WAY_MISSES, TCA_CAKE_TIN_STATS_WAY_COLLISIONS, TCA_CAKE_TIN_STATS_PEAK_DELAY_US, TCA_CAKE_TIN_STATS_AVG_DELAY_US, TCA_CAKE_TIN_STATS_BASE_DELAY_US, TCA_CAKE_TIN_STATS_SPARSE_FLOWS, TCA_CAKE_TIN_STATS_BULK_FLOWS, TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS, TCA_CAKE_TIN_STATS_MAX_SKBLEN, TCA_CAKE_TIN_STATS_FLOW_QUANTUM, __TCA_CAKE_TIN_STATS_MAX }; #define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1) #define TC_CAKE_MAX_TINS (8) enum { CAKE_FLOW_NONE = 0, CAKE_FLOW_SRC_IP, CAKE_FLOW_DST_IP, CAKE_FLOW_HOSTS, /* = CAKE_FLOW_SRC_IP | CAKE_FLOW_DST_IP */ CAKE_FLOW_FLOWS, CAKE_FLOW_DUAL_SRC, /* = CAKE_FLOW_SRC_IP | CAKE_FLOW_FLOWS */ CAKE_FLOW_DUAL_DST, /* = CAKE_FLOW_DST_IP | CAKE_FLOW_FLOWS */ CAKE_FLOW_TRIPLE, /* = CAKE_FLOW_HOSTS | CAKE_FLOW_FLOWS */ CAKE_FLOW_MAX, }; enum { CAKE_DIFFSERV_DIFFSERV3 = 0, CAKE_DIFFSERV_DIFFSERV4, CAKE_DIFFSERV_DIFFSERV8, CAKE_DIFFSERV_BESTEFFORT, CAKE_DIFFSERV_PRECEDENCE, CAKE_DIFFSERV_MAX }; enum { CAKE_ACK_NONE = 0, CAKE_ACK_FILTER, CAKE_ACK_AGGRESSIVE, CAKE_ACK_MAX }; enum { CAKE_ATM_NONE = 0, CAKE_ATM_ATM, CAKE_ATM_PTM, CAKE_ATM_MAX }; /* TAPRIO */ enum { TC_TAPRIO_CMD_SET_GATES = 0x00, TC_TAPRIO_CMD_SET_AND_HOLD = 0x01, TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02, }; enum { TCA_TAPRIO_SCHED_ENTRY_UNSPEC, TCA_TAPRIO_SCHED_ENTRY_INDEX, /* u32 */ TCA_TAPRIO_SCHED_ENTRY_CMD, /* u8 */ TCA_TAPRIO_SCHED_ENTRY_GATE_MASK, /* u32 */ TCA_TAPRIO_SCHED_ENTRY_INTERVAL, /* u32 */ __TCA_TAPRIO_SCHED_ENTRY_MAX, }; #define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1) /* The format for schedule entry list is: * [TCA_TAPRIO_SCHED_ENTRY_LIST] * [TCA_TAPRIO_SCHED_ENTRY] * [TCA_TAPRIO_SCHED_ENTRY_CMD] * [TCA_TAPRIO_SCHED_ENTRY_GATES] * [TCA_TAPRIO_SCHED_ENTRY_INTERVAL] */ enum { TCA_TAPRIO_SCHED_UNSPEC, TCA_TAPRIO_SCHED_ENTRY, __TCA_TAPRIO_SCHED_MAX, }; #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1) /* The format for the admin sched (dump only): * [TCA_TAPRIO_SCHED_ADMIN_SCHED] * [TCA_TAPRIO_ATTR_SCHED_BASE_TIME] * [TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST] * [TCA_TAPRIO_ATTR_SCHED_ENTRY] * [TCA_TAPRIO_ATTR_SCHED_ENTRY_CMD] * [TCA_TAPRIO_ATTR_SCHED_ENTRY_GATES] * [TCA_TAPRIO_ATTR_SCHED_ENTRY_INTERVAL] */ #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0) #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1) enum { TCA_TAPRIO_TC_ENTRY_UNSPEC, TCA_TAPRIO_TC_ENTRY_INDEX, /* u32 */ TCA_TAPRIO_TC_ENTRY_MAX_SDU, /* u32 */ /* add new constants above here */ __TCA_TAPRIO_TC_ENTRY_CNT, TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1) }; enum { TCA_TAPRIO_ATTR_UNSPEC, TCA_TAPRIO_ATTR_PRIOMAP, /* struct tc_mqprio_qopt */ TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST, /* nested of entry */ TCA_TAPRIO_ATTR_SCHED_BASE_TIME, /* s64 */ TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, /* single entry */ TCA_TAPRIO_ATTR_SCHED_CLOCKID, /* s32 */ TCA_TAPRIO_PAD, TCA_TAPRIO_ATTR_ADMIN_SCHED, /* The admin sched, only used in dump */ TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, /* s64 */ TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, /* s64 */ TCA_TAPRIO_ATTR_FLAGS, /* u32 */ TCA_TAPRIO_ATTR_TXTIME_DELAY, /* u32 */ TCA_TAPRIO_ATTR_TC_ENTRY, /* nest */ __TCA_TAPRIO_ATTR_MAX, }; #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1) /* ETS */ #define TCQ_ETS_MAX_BANDS 16 enum { TCA_ETS_UNSPEC, TCA_ETS_NBANDS, /* u8 */ TCA_ETS_NSTRICT, /* u8 */ TCA_ETS_QUANTA, /* nested TCA_ETS_QUANTA_BAND */ TCA_ETS_QUANTA_BAND, /* u32 */ TCA_ETS_PRIOMAP, /* nested TCA_ETS_PRIOMAP_BAND */ TCA_ETS_PRIOMAP_BAND, /* u8 */ __TCA_ETS_MAX, }; #define TCA_ETS_MAX (__TCA_ETS_MAX - 1) #endif