mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
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>
This commit is contained in:
parent
4057a7652b
commit
5cc3a8c66d
|
|
@ -33,7 +33,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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
@ -499,16 +500,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);
|
||||
|
||||
|
|
@ -917,7 +920,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
|
||||
|
|
@ -944,7 +947,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
|
||||
|
|
|
|||
|
|
@ -1492,7 +1492,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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user