SO_PRIORITY socket option requests TCP egress packets to contain a user provided value.
TCP manages to send most packets with the requested values, notably for TCP_ESTABLISHED state, but fails to do so for few packets. These packets are control packets sent on behalf of SYN_RECV or TIME_WAIT states. Note that to test this with packetdrill, it is a bit of a hassle, since packetdrill can not verify priority of egress packets, other than indirect observations, using for example sch_prio on its tunnel device. The bad skb priorities cause problems for GCP, as this field is one of the keys used in routing. Eric Dumazet (3): ipv6: add priority parameter to ip6_xmit() ipv6: tcp: provide sk->sk_priority to ctl packets tcp: honor SO_PRIORITY in TIME_WAIT state include/net/inet_timewait_sock.h | 1 + include/net/ipv6.h | 2 +- net/dccp/ipv6.c | 5 +++-- net/ipv4/ip_output.c | 1 - net/ipv4/tcp_ipv4.c | 4 ++++ net/ipv4/tcp_minisocks.c | 1 + net/ipv6/inet6_connection_sock.c | 2 +- net/ipv6/ip6_output.c | 4 ++-- net/ipv6/tcp_ipv6.c | 24 +++++++++++++++--------- net/sctp/ipv6.c | 2 +- 10 files changed, 29 insertions(+), 17 deletions(-) -- 2.23.0.351.gc4317032e6-goog