ipv4: Unmask upper DSCP bits in __ip_queue_xmit()
authorIdo Schimmel <idosch@nvidia.com>
Tue, 3 Sep 2024 13:53:24 +0000 (16:53 +0300)
committerJakub Kicinski <kuba@kernel.org>
Wed, 4 Sep 2024 23:57:11 +0000 (16:57 -0700)
The function is passed the full DS field in its 'tos' argument by its
two callers. It then masks the upper DSCP bits using RT_TOS() when
passing it to ip_route_output_ports().

Unmask the upper DSCP bits when passing 'tos' to ip_route_output_ports()
so that in the future it could perform the FIB lookup according to the
full DSCP value.

Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Link: https://patch.msgid.link/20240903135327.2810535-2-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/ip_output.c

index eea443b7f65e209fe005d20a5ad895e9cd902b6d..49811c9281d424bc4b43b8e9075da9fe724773cb 100644 (file)
@@ -494,7 +494,7 @@ int __ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
                                           inet->inet_dport,
                                           inet->inet_sport,
                                           sk->sk_protocol,
-                                          RT_TOS(tos),
+                                          tos & INET_DSCP_MASK,
                                           sk->sk_bound_dev_if);
                if (IS_ERR(rt))
                        goto no_route;