You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.6 KiB
127 lines
4.6 KiB
From 157c8134fb32202e02e283e8c9be3fcaee9d2f66 Mon Sep 17 00:00:00 2001
|
|
From: Alaa Hleihel <ahleihel@redhat.com>
|
|
Date: Sun, 10 May 2020 14:52:23 -0400
|
|
Subject: [PATCH 050/312] [netdrv] net/mlx5e: Use ipv6_stub to avoid dependency
|
|
with ipv6 being a module
|
|
|
|
Message-id: <20200510145245.10054-61-ahleihel@redhat.com>
|
|
Patchwork-id: 306601
|
|
Patchwork-instance: patchwork
|
|
O-Subject: [RHEL8.3 BZ 1789378 v2 60/82] net/mlx5e: Use ipv6_stub to avoid dependency with ipv6 being a module
|
|
Bugzilla: 1789378
|
|
RH-Acked-by: Kamal Heib <kheib@redhat.com>
|
|
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
|
|
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
|
RH-Acked-by: Jonathan Toppins <jtoppins@redhat.com>
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/1789378
|
|
Upstream: v5.4-rc1
|
|
|
|
commit 5cc3a8c66dd5ab18bacef5dd54ccdbae5182e003
|
|
Author: Saeed Mahameed <saeedm@mellanox.com>
|
|
Date: Tue Aug 27 14:06:23 2019 -0700
|
|
|
|
net/mlx5e: Use ipv6_stub to avoid dependency with ipv6 being a module
|
|
|
|
mlx5 is dependent on IPv6 tristate since we use ipv6's nd_tbl directly,
|
|
alternatively we can use ipv6_stub->nd_tbl and remove the dependency.
|
|
|
|
Reported-by: Walter Harms <wharms@bfs.de>
|
|
Reviewed-by: Mark Bloch <markb@mellanox.com>
|
|
Reviewed-by: Vlad Buslov <vladbu@mellanox.com>
|
|
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
|
|
|
|
Signed-off-by: Alaa Hleihel <ahleihel@redhat.com>
|
|
Signed-off-by: Frantisek Hrbata <fhrbata@redhat.com>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 1 -
|
|
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 23 +++++++++++++----------
|
|
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
|
|
3 files changed, 14 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
|
|
index ae7c28ba9f5a..361c783ec9b5 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
|
|
@@ -32,7 +32,6 @@ config MLX5_FPGA
|
|
config MLX5_CORE_EN
|
|
bool "Mellanox 5th generation network adapters (ConnectX series) Ethernet support"
|
|
depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE
|
|
- depends on IPV6=y || IPV6=n || MLX5_CORE=m
|
|
select PAGE_POOL
|
|
select DIMLIB
|
|
default n
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
|
|
index 037983a8f149..2681bd39eab2 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
|
|
@@ -38,6 +38,7 @@
|
|
#include <net/netevent.h>
|
|
#include <net/arp.h>
|
|
#include <net/devlink.h>
|
|
+#include <net/ipv6_stubs.h>
|
|
|
|
#include "eswitch.h"
|
|
#include "en.h"
|
|
@@ -475,16 +476,18 @@ void mlx5e_remove_sqs_fwd_rules(struct mlx5e_priv *priv)
|
|
mlx5e_sqs2vport_stop(esw, rep);
|
|
}
|
|
|
|
+static unsigned long mlx5e_rep_ipv6_interval(void)
|
|
+{
|
|
+ if (IS_ENABLED(CONFIG_IPV6) && ipv6_stub->nd_tbl)
|
|
+ return NEIGH_VAR(&ipv6_stub->nd_tbl->parms, DELAY_PROBE_TIME);
|
|
+
|
|
+ return ~0UL;
|
|
+}
|
|
+
|
|
static void mlx5e_rep_neigh_update_init_interval(struct mlx5e_rep_priv *rpriv)
|
|
{
|
|
-#if IS_ENABLED(CONFIG_IPV6)
|
|
- unsigned long ipv6_interval = NEIGH_VAR(&nd_tbl.parms,
|
|
- DELAY_PROBE_TIME);
|
|
-#else
|
|
- unsigned long ipv6_interval = ~0UL;
|
|
-#endif
|
|
- unsigned long ipv4_interval = NEIGH_VAR(&arp_tbl.parms,
|
|
- DELAY_PROBE_TIME);
|
|
+ unsigned long ipv4_interval = NEIGH_VAR(&arp_tbl.parms, DELAY_PROBE_TIME);
|
|
+ unsigned long ipv6_interval = mlx5e_rep_ipv6_interval();
|
|
struct net_device *netdev = rpriv->netdev;
|
|
struct mlx5e_priv *priv = netdev_priv(netdev);
|
|
|
|
@@ -893,7 +896,7 @@ static int mlx5e_rep_netevent_event(struct notifier_block *nb,
|
|
case NETEVENT_NEIGH_UPDATE:
|
|
n = ptr;
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
- if (n->tbl != &nd_tbl && n->tbl != &arp_tbl)
|
|
+ if (n->tbl != ipv6_stub->nd_tbl && n->tbl != &arp_tbl)
|
|
#else
|
|
if (n->tbl != &arp_tbl)
|
|
#endif
|
|
@@ -920,7 +923,7 @@ static int mlx5e_rep_netevent_event(struct notifier_block *nb,
|
|
* done per device delay prob time parameter.
|
|
*/
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
- if (!p->dev || (p->tbl != &nd_tbl && p->tbl != &arp_tbl))
|
|
+ if (!p->dev || (p->tbl != ipv6_stub->nd_tbl && p->tbl != &arp_tbl))
|
|
#else
|
|
if (!p->dev || p->tbl != &arp_tbl)
|
|
#endif
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
|
|
index 31d71e1f0545..9a49ae5ac4ce 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
|
|
@@ -1494,7 +1494,7 @@ void mlx5e_tc_update_neigh_used_value(struct mlx5e_neigh_hash_entry *nhe)
|
|
tbl = &arp_tbl;
|
|
#if IS_ENABLED(CONFIG_IPV6)
|
|
else if (m_neigh->family == AF_INET6)
|
|
- tbl = &nd_tbl;
|
|
+ tbl = ipv6_stub->nd_tbl;
|
|
#endif
|
|
else
|
|
return;
|
|
--
|
|
2.13.6
|
|
|