mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 18:50:54 +07:00
net/mlx5e: CT: Support restore ipv6 tunnel
Currently the driver restores only IPv4 tunnel headers.
Add support for restoring IPv6 tunnel header.
Fixes: b8ce903709
("net/mlx5e: Restore tunnel metadata on miss")
Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Oz Shlomo <ozsh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
85496a2922
commit
01cefbbe2c
@ -551,19 +551,31 @@ static bool mlx5e_restore_tunnel(struct mlx5e_priv *priv, struct sk_buff *skb,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tun_dst = tun_rx_dst(enc_opts.key.len);
|
if (key.enc_control.addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) {
|
||||||
if (!tun_dst) {
|
tun_dst = __ip_tun_set_dst(key.enc_ipv4.src, key.enc_ipv4.dst,
|
||||||
WARN_ON_ONCE(true);
|
key.enc_ip.tos, key.enc_ip.ttl,
|
||||||
|
key.enc_tp.dst, TUNNEL_KEY,
|
||||||
|
key32_to_tunnel_id(key.enc_key_id.keyid),
|
||||||
|
enc_opts.key.len);
|
||||||
|
} else if (key.enc_control.addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS) {
|
||||||
|
tun_dst = __ipv6_tun_set_dst(&key.enc_ipv6.src, &key.enc_ipv6.dst,
|
||||||
|
key.enc_ip.tos, key.enc_ip.ttl,
|
||||||
|
key.enc_tp.dst, 0, TUNNEL_KEY,
|
||||||
|
key32_to_tunnel_id(key.enc_key_id.keyid),
|
||||||
|
enc_opts.key.len);
|
||||||
|
} else {
|
||||||
|
netdev_dbg(priv->netdev,
|
||||||
|
"Couldn't restore tunnel, unsupported addr_type: %d\n",
|
||||||
|
key.enc_control.addr_type);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ip_tunnel_key_init(&tun_dst->u.tun_info.key,
|
if (!tun_dst) {
|
||||||
key.enc_ipv4.src, key.enc_ipv4.dst,
|
netdev_dbg(priv->netdev, "Couldn't restore tunnel, no tun_dst\n");
|
||||||
key.enc_ip.tos, key.enc_ip.ttl,
|
return false;
|
||||||
0, /* label */
|
}
|
||||||
key.enc_tp.src, key.enc_tp.dst,
|
|
||||||
key32_to_tunnel_id(key.enc_key_id.keyid),
|
tun_dst->u.tun_info.key.tp_src = key.enc_tp.src;
|
||||||
TUNNEL_KEY);
|
|
||||||
|
|
||||||
if (enc_opts.key.len)
|
if (enc_opts.key.len)
|
||||||
ip_tunnel_info_opts_set(&tun_dst->u.tun_info,
|
ip_tunnel_info_opts_set(&tun_dst->u.tun_info,
|
||||||
|
Loading…
Reference in New Issue
Block a user