diff mbox series

[net-next,v4,11/16] netdevsim: generate random switch id instead of using dev id

Message ID 20190425135956.3970-12-jiri@resnulli.us
State Accepted
Delegated to: David Miller
Headers show
Series netdevsim: implement proper device model | expand

Commit Message

Jiri Pirko April 25, 2019, 1:59 p.m. UTC
From: Jiri Pirko <jiri@mellanox.com>

Current implementation of parent_id/switch_id does not follow the
original idea of being unique. The values are "0", "1", etc. Instead of
that, generate 32 random bytes.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
---
 drivers/net/netdevsim/dev.c       | 3 +++
 drivers/net/netdevsim/netdev.c    | 3 +--
 drivers/net/netdevsim/netdevsim.h | 1 +
 3 files changed, 5 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/drivers/net/netdevsim/dev.c b/drivers/net/netdevsim/dev.c
index 93abd0b6c1f9..98a56d8bdcec 100644
--- a/drivers/net/netdevsim/dev.c
+++ b/drivers/net/netdevsim/dev.c
@@ -17,6 +17,7 @@ 
 
 #include <linux/debugfs.h>
 #include <linux/device.h>
+#include <linux/random.h>
 #include <linux/rtnetlink.h>
 #include <net/devlink.h>
 
@@ -204,6 +205,8 @@  static struct nsim_dev *nsim_dev_create(struct nsim_bus_dev *nsim_bus_dev)
 		return ERR_PTR(-ENOMEM);
 	nsim_dev = devlink_priv(devlink);
 	nsim_dev->nsim_bus_dev = nsim_bus_dev;
+	nsim_dev->switch_id.id_len = sizeof(nsim_dev->switch_id.id);
+	get_random_bytes(nsim_dev->switch_id.id, nsim_dev->switch_id.id_len);
 
 	nsim_dev->fib_data = nsim_fib_create();
 	if (IS_ERR(nsim_dev->fib_data)) {
diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c
index c5f4bbb9716f..9b4310e20129 100644
--- a/drivers/net/netdevsim/netdev.c
+++ b/drivers/net/netdevsim/netdev.c
@@ -32,8 +32,7 @@  static int nsim_get_port_parent_id(struct net_device *dev,
 {
 	struct netdevsim *ns = netdev_priv(dev);
 
-	ppid->id_len = sizeof(ns->nsim_dev->nsim_bus_dev->dev.id);
-	memcpy(&ppid->id, &ns->nsim_dev->nsim_bus_dev->dev.id, ppid->id_len);
+	memcpy(ppid, &ns->nsim_dev->switch_id, sizeof(*ppid));
 	return 0;
 }
 
diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h
index 4ef44a9538db..17639c7c9032 100644
--- a/drivers/net/netdevsim/netdevsim.h
+++ b/drivers/net/netdevsim/netdevsim.h
@@ -141,6 +141,7 @@  struct nsim_dev {
 	u32 prog_id_gen;
 	struct list_head bpf_bound_progs;
 	struct list_head bpf_bound_maps;
+	struct netdev_phys_item_id switch_id;
 };
 
 struct nsim_dev *