forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/drivers/net/ethernet/mellanox/mlxsw/switchib.c
....@@ -30,6 +30,7 @@
3030 struct mlxsw_sib_port **ports;
3131 struct mlxsw_core *core;
3232 const struct mlxsw_bus_info *bus_info;
33
+ u8 hw_id[ETH_ALEN];
3334 };
3435
3536 struct mlxsw_sib_port {
....@@ -100,6 +101,18 @@
100101 mlxsw_tx_v1_hdr_control_tclass_set(txhdr, 1);
101102 mlxsw_tx_v1_hdr_port_mid_set(txhdr, tx_info->local_port);
102103 mlxsw_tx_v1_hdr_type_set(txhdr, MLXSW_TXHDR_TYPE_CONTROL);
104
+}
105
+
106
+static int mlxsw_sib_hw_id_get(struct mlxsw_sib *mlxsw_sib)
107
+{
108
+ char spad_pl[MLXSW_REG_SPAD_LEN] = {0};
109
+ int err;
110
+
111
+ err = mlxsw_reg_query(mlxsw_sib->core, MLXSW_REG(spad), spad_pl);
112
+ if (err)
113
+ return err;
114
+ mlxsw_reg_spad_base_mac_memcpy_from(spad_pl, mlxsw_sib->hw_id);
115
+ return 0;
103116 }
104117
105118 static int
....@@ -267,7 +280,9 @@
267280 {
268281 int err;
269282
270
- err = mlxsw_core_port_init(mlxsw_sib->core, local_port);
283
+ err = mlxsw_core_port_init(mlxsw_sib->core, local_port,
284
+ module + 1, false, 0, false, 0,
285
+ mlxsw_sib->hw_id, sizeof(mlxsw_sib->hw_id));
271286 if (err) {
272287 dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n",
273288 local_port);
....@@ -431,7 +446,8 @@
431446 }
432447
433448 static int mlxsw_sib_init(struct mlxsw_core *mlxsw_core,
434
- const struct mlxsw_bus_info *mlxsw_bus_info)
449
+ const struct mlxsw_bus_info *mlxsw_bus_info,
450
+ struct netlink_ext_ack *extack)
435451 {
436452 struct mlxsw_sib *mlxsw_sib = mlxsw_core_driver_priv(mlxsw_core);
437453 int err;
....@@ -439,6 +455,12 @@
439455 mlxsw_sib->core = mlxsw_core;
440456 mlxsw_sib->bus_info = mlxsw_bus_info;
441457
458
+ err = mlxsw_sib_hw_id_get(mlxsw_sib);
459
+ if (err) {
460
+ dev_err(mlxsw_sib->bus_info->dev, "Failed to get switch HW ID\n");
461
+ return err;
462
+ }
463
+
442464 err = mlxsw_sib_ports_create(mlxsw_sib);
443465 if (err) {
444466 dev_err(mlxsw_sib->bus_info->dev, "Failed to create ports\n");