Socket option to configure Ethernet PCP / CoS per-flow

sthaug at sthaug at
Fri Sep 11 16:54:37 UTC 2020

> However, while this allows all traffic sent via a specific interface to be marked with a PCP (priority code point), it defeats the purpose of PFC (priority flow control) which works by individually pausing different queues of an interface, provided there is an actual differentiation of traffic into those various classes.
> Internally, we have added a socket option (SO_VLAN_PCP) to change the PCP specifically for traffic associated with that socket, to be marked differently from whatever the interface default is (unmarked, or the default PCP).
> Does the community see value in having such a socket option widely available? (Linux currently doesn't seem to have a per-socket option either, only a per-interface IOCTL API).

I've been doing quite a bit of network testing using iperf3 and
similar tools, and have wanted this type of functionality since the
interface option became available. Having this on a socket level would
make it possible to teach iperf3, ping and other tools to set PCP and
facilitate/simplify testing of L2 networks.

So the answer is a definite yes! This would be valuable.

Steinar Haug, Nethelp consulting, sthaug at

More information about the freebsd-transport mailing list