Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb517a4f authored by Yishai Hadas's avatar Yishai Hadas Committed by Doug Ledford
Browse files

net/mlx4_core: Set initial admin GUIDs for VFs



To have out of the box experience, the PF generates random GUIDs who
serve as the initial admin values.

Signed-off-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 773af94e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2350,6 +2350,7 @@ int mlx4_multi_func_init(struct mlx4_dev *dev)
				oper_vport->qos_vport = MLX4_VPP_DEFAULT_VPORT;
				vf_oper->vport[port].vlan_idx = NO_INDX;
				vf_oper->vport[port].mac_idx = NO_INDX;
				mlx4_set_random_admin_guid(dev, i, port);
			}
			spin_lock_init(&s_state->lock);
		}
+15 −0
Original line number Diff line number Diff line
@@ -2276,6 +2276,21 @@ __be64 mlx4_get_admin_guid(struct mlx4_dev *dev, int entry, int port)
}
EXPORT_SYMBOL_GPL(mlx4_get_admin_guid);

void mlx4_set_random_admin_guid(struct mlx4_dev *dev, int entry, int port)
{
	struct mlx4_priv *priv = mlx4_priv(dev);
	__be64 guid;

	/* hw GUID */
	if (entry == 0)
		return;

	get_random_bytes((char *)&guid, sizeof(guid));
	guid &= ~(cpu_to_be64(1ULL << 56));
	guid |= cpu_to_be64(1ULL << 57);
	priv->mfunc.master.vf_admin[entry].vport[port].guid = guid;
}

static int mlx4_setup_hca(struct mlx4_dev *dev)
{
	struct mlx4_priv *priv = mlx4_priv(dev);
+1 −0
Original line number Diff line number Diff line
@@ -1348,6 +1348,7 @@ void mlx4_counter_free(struct mlx4_dev *dev, u32 idx);
void mlx4_set_admin_guid(struct mlx4_dev *dev, __be64 guid, int entry,
			 int port);
__be64 mlx4_get_admin_guid(struct mlx4_dev *dev, int entry, int port);
void mlx4_set_random_admin_guid(struct mlx4_dev *dev, int entry, int port);
int mlx4_flow_attach(struct mlx4_dev *dev,
		     struct mlx4_net_trans_rule *rule, u64 *reg_id);
int mlx4_flow_detach(struct mlx4_dev *dev, u64 reg_id);