* respin.
         */
        mlxsw_sp->netdevice_nb.notifier_call = mlxsw_sp_netdevice_event;
-       err = register_netdevice_notifier_net(&init_net,
+       err = register_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
                                              &mlxsw_sp->netdevice_nb);
        if (err) {
                dev_err(mlxsw_sp->bus_info->dev, "Failed to register netdev notifier\n");
 err_ports_create:
        mlxsw_sp_dpipe_fini(mlxsw_sp);
 err_dpipe_init:
-       unregister_netdevice_notifier_net(&init_net,
+       unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
                                          &mlxsw_sp->netdevice_nb);
 err_netdev_notifier:
        if (mlxsw_sp->clock)
 
        mlxsw_sp_ports_remove(mlxsw_sp);
        mlxsw_sp_dpipe_fini(mlxsw_sp);
-       unregister_netdevice_notifier_net(&init_net,
+       unregister_netdevice_notifier_net(mlxsw_sp_net(mlxsw_sp),
                                          &mlxsw_sp->netdevice_nb);
        if (mlxsw_sp->clock) {
                mlxsw_sp->ptp_ops->fini(mlxsw_sp->ptp_state);
 
 #include <linux/if_macvlan.h>
 #include <linux/refcount.h>
 #include <linux/jhash.h>
+#include <linux/net_namespace.h>
 #include <net/netevent.h>
 #include <net/neighbour.h>
 #include <net/arp.h>
        struct mlxsw_sp_netevent_work *net_work;
        struct mlxsw_sp_router *router;
 
-       if (!net_eq(net, &init_net))
+       router = container_of(nb, struct mlxsw_sp_router, netevent_nb);
+       if (!net_eq(net, mlxsw_sp_net(router->mlxsw_sp)))
                return NOTIFY_DONE;
 
        net_work = kzalloc(sizeof(*net_work), GFP_ATOMIC);
        if (!net_work)
                return NOTIFY_BAD;
 
-       router = container_of(nb, struct mlxsw_sp_router, netevent_nb);
        INIT_WORK(&net_work->work, cb);
        net_work->mlxsw_sp = router->mlxsw_sp;
        mlxsw_core_schedule_work(&net_work->work);
        rule = fr_info->rule;
 
        /* Rule only affects locally generated traffic */
-       if (rule->iifindex == init_net.loopback_dev->ifindex)
+       if (rule->iifindex == mlxsw_sp_net(mlxsw_sp)->loopback_dev->ifindex)
                return 0;
 
        switch (info->family) {
        mlxsw_reg_recr2_outer_header_fields_enable_set(recr2_pl, field, true);
 }
 
-static void mlxsw_sp_mp4_hash_init(char *recr2_pl)
+static void mlxsw_sp_mp4_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
 {
-       bool only_l3 = !init_net.ipv4.sysctl_fib_multipath_hash_policy;
+       struct net *net = mlxsw_sp_net(mlxsw_sp);
+       bool only_l3 = !net->ipv4.sysctl_fib_multipath_hash_policy;
 
        mlxsw_sp_mp_hash_header_set(recr2_pl,
                                    MLXSW_REG_RECR2_IPV4_EN_NOT_TCP_NOT_UDP);
        mlxsw_sp_mp_hash_field_set(recr2_pl, MLXSW_REG_RECR2_TCP_UDP_DPORT);
 }
 
-static void mlxsw_sp_mp6_hash_init(char *recr2_pl)
+static void mlxsw_sp_mp6_hash_init(struct mlxsw_sp *mlxsw_sp, char *recr2_pl)
 {
-       bool only_l3 = !ip6_multipath_hash_policy(&init_net);
+       bool only_l3 = !ip6_multipath_hash_policy(mlxsw_sp_net(mlxsw_sp));
 
        mlxsw_sp_mp_hash_header_set(recr2_pl,
                                    MLXSW_REG_RECR2_IPV6_EN_NOT_TCP_NOT_UDP);
 
        seed = jhash(mlxsw_sp->base_mac, sizeof(mlxsw_sp->base_mac), 0);
        mlxsw_reg_recr2_pack(recr2_pl, seed);
-       mlxsw_sp_mp4_hash_init(recr2_pl);
-       mlxsw_sp_mp6_hash_init(recr2_pl);
+       mlxsw_sp_mp4_hash_init(mlxsw_sp, recr2_pl);
+       mlxsw_sp_mp6_hash_init(mlxsw_sp, recr2_pl);
 
        return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(recr2), recr2_pl);
 }
 
 static int __mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp)
 {
-       bool usp = init_net.ipv4.sysctl_ip_fwd_update_priority;
+       struct net *net = mlxsw_sp_net(mlxsw_sp);
+       bool usp = net->ipv4.sysctl_ip_fwd_update_priority;
        char rgcr_pl[MLXSW_REG_RGCR_LEN];
        u64 max_rifs;
        int err;
                goto err_dscp_init;
 
        mlxsw_sp->router->fib_nb.notifier_call = mlxsw_sp_router_fib_event;
-       err = register_fib_notifier(&init_net, &mlxsw_sp->router->fib_nb,
+       err = register_fib_notifier(mlxsw_sp_net(mlxsw_sp),
+                                   &mlxsw_sp->router->fib_nb,
                                    mlxsw_sp_router_fib_dump_flush, NULL);
        if (err)
                goto err_register_fib_notifier;
 
 void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
 {
-       unregister_fib_notifier(&init_net, &mlxsw_sp->router->fib_nb);
+       unregister_fib_notifier(mlxsw_sp_net(mlxsw_sp),
+                               &mlxsw_sp->router->fib_nb);
        unregister_netevent_notifier(&mlxsw_sp->router->netevent_nb);
        mlxsw_sp_neigh_fini(mlxsw_sp);
        mlxsw_sp_vrs_fini(mlxsw_sp);