Socket option to configure Ethernet PCP / CoS per-flow
Richard.Scheffenegger at netapp.com
Fri Sep 11 16:33:21 UTC 2020
Currently, upstream head has only an IOCTL API to set up interface-wide default PCP marking:
#define SIOCGVLANPCP SIOCGLANPCP /* Get VLAN PCP */
#define SIOCSVLANPCP SIOCSLANPCP /* Set VLAN PCP */
And the interface is via ifconfig <if> pcp <x>.
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).
More information about the freebsd-transport