Message ID | 20240827111813.2115285-8-idosch@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Unmask upper DSCP bits - part 2 | expand |
On Tue, Aug 27, 2024 at 02:18:08PM +0300, Ido Schimmel wrote: > The function returns a value that is used to initialize 'flowi4_tos' > before being passed to the FIB lookup API in the following call chain: > > xfrm_bundle_create() > tos = xfrm_get_tos(fl, family) > xfrm_dst_lookup(..., tos, ...) > __xfrm_dst_lookup(..., tos, ...) > xfrm4_dst_lookup(..., tos, ...) > __xfrm4_dst_lookup(..., tos, ...) > fl4->flowi4_tos = tos > __ip_route_output_key(net, fl4) > > Unmask the upper DSCP bits so that in the future the output route lookup > could be performed according to the full DSCP value. Reviewed-by: Guillaume Nault <gnault@redhat.com>
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index c56c61b0c12e..b22767c0c078 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -45,6 +45,7 @@ #ifdef CONFIG_XFRM_ESPINTCP #include <net/espintcp.h> #endif +#include <net/inet_dscp.h> #include "xfrm_hash.h" @@ -2561,7 +2562,7 @@ xfrm_tmpl_resolve(struct xfrm_policy **pols, int npols, const struct flowi *fl, static int xfrm_get_tos(const struct flowi *fl, int family) { if (family == AF_INET) - return IPTOS_RT_MASK & fl->u.ip4.flowi4_tos; + return fl->u.ip4.flowi4_tos & INET_DSCP_MASK; return 0; }
The function returns a value that is used to initialize 'flowi4_tos' before being passed to the FIB lookup API in the following call chain: xfrm_bundle_create() tos = xfrm_get_tos(fl, family) xfrm_dst_lookup(..., tos, ...) __xfrm_dst_lookup(..., tos, ...) xfrm4_dst_lookup(..., tos, ...) __xfrm4_dst_lookup(..., tos, ...) fl4->flowi4_tos = tos __ip_route_output_key(net, fl4) Unmask the upper DSCP bits so that in the future the output route lookup could be performed according to the full DSCP value. Signed-off-by: Ido Schimmel <idosch@nvidia.com> --- net/xfrm/xfrm_policy.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)