From: Eli Cohen <eli@mellanox.com>
Date: Wed, 27 May 2020 08:38:03 +0300
Subject: net/mlx5e: Use generic API to build MPLS label
Patch-mainline: v5.8-rc1
Git-commit: f7e3ac424a2b3fc6fb3b490106cd874adb62ae4a
References: jsc#SLE-15172
Make use of generic API mpls_entry_encode() to build mpls label and get
rid of local function.
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c | 20 +----------
1 file changed, 3 insertions(+), 17 deletions(-)
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_mplsoudp.c
@@ -25,35 +25,21 @@ static int init_encap_attr(struct net_de
return 0;
}
-static inline __be32 mpls_label_id_field(__be32 label, u8 tos, u8 ttl)
-{
- u32 res;
-
- /* mpls label is 32 bits long and construction as follows:
- * 20 bits label
- * 3 bits tos
- * 1 bit bottom of stack. Since we support only one label, this bit is
- * always set.
- * 8 bits TTL
- */
- res = be32_to_cpu(label) << 12 | 1 << 8 | (tos & 7) << 9 | ttl;
- return cpu_to_be32(res);
-}
-
static int generate_ip_tun_hdr(char buf[],
__u8 *ip_proto,
struct mlx5e_encap_entry *r)
{
const struct ip_tunnel_key *tun_key = &r->tun_info->key;
- __be32 tun_id = tunnel_id_to_key32(tun_key->tun_id);
struct udphdr *udp = (struct udphdr *)(buf);
struct mpls_shim_hdr *mpls;
+ u32 tun_id;
+ tun_id = be32_to_cpu(tunnel_id_to_key32(tun_key->tun_id));
mpls = (struct mpls_shim_hdr *)(udp + 1);
*ip_proto = IPPROTO_UDP;
udp->dest = tun_key->tp_dst;
- mpls->label_stack_entry = mpls_label_id_field(tun_id, tun_key->tos, tun_key->ttl);
+ *mpls = mpls_entry_encode(tun_id, tun_key->ttl, tun_key->tos, true);
return 0;
}