Skip to content

Commit 503310a

Browse files
committed
Merge branch 'mlxsw-next'
Ido Schimmel says: ==================== mlxsw: Various updates This patchset contains miscellaneous updates to mlxsw gathered over time. Patches #1-#2 fix recent regressions present in net-next. Patches #3-#11 are small cleanups performed while adding line card support in mlxsw. Patch #12 adds the SFF-8024 Identifier Value of OSFP transceiver in order to be able to dump their EEPROM contents over the ethtool IOCTL interface. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 8d78319 + f881c4a commit 503310a

File tree

9 files changed

+106
-174
lines changed

9 files changed

+106
-174
lines changed

drivers/net/ethernet/mellanox/mlxsw/core.c

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -177,17 +177,6 @@ void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core)
177177
}
178178
EXPORT_SYMBOL(mlxsw_core_driver_priv);
179179

180-
bool mlxsw_core_res_query_enabled(const struct mlxsw_core *mlxsw_core)
181-
{
182-
return mlxsw_core->driver->res_query_enabled;
183-
}
184-
EXPORT_SYMBOL(mlxsw_core_res_query_enabled);
185-
186-
bool mlxsw_core_temp_warn_enabled(const struct mlxsw_core *mlxsw_core)
187-
{
188-
return mlxsw_core->driver->temp_warn_enabled;
189-
}
190-
191180
bool
192181
mlxsw_core_fw_rev_minor_subminor_validate(const struct mlxsw_fw_rev *rev,
193182
const struct mlxsw_fw_rev *req_rev)
@@ -223,6 +212,9 @@ static int mlxsw_core_trap_groups_set(struct mlxsw_core *mlxsw_core)
223212
int err;
224213
int i;
225214

215+
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
216+
return 0;
217+
226218
for (i = 0; i < ARRAY_SIZE(mlxsw_core_trap_groups); i++) {
227219
mlxsw_reg_htgt_pack(htgt_pl, mlxsw_core_trap_groups[i],
228220
MLXSW_REG_HTGT_INVALID_POLICER,
@@ -2036,7 +2028,7 @@ static int mlxsw_core_health_init(struct mlxsw_core *mlxsw_core)
20362028
struct devlink_health_reporter *fw_fatal;
20372029
int err;
20382030

2039-
if (!mlxsw_core->driver->fw_fatal_enabled)
2031+
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
20402032
return 0;
20412033

20422034
fw_fatal = devlink_health_reporter_create(devlink, &mlxsw_core_health_fw_fatal_ops,
@@ -2066,7 +2058,7 @@ static int mlxsw_core_health_init(struct mlxsw_core *mlxsw_core)
20662058

20672059
static void mlxsw_core_health_fini(struct mlxsw_core *mlxsw_core)
20682060
{
2069-
if (!mlxsw_core->driver->fw_fatal_enabled)
2061+
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
20702062
return;
20712063

20722064
mlxsw_core_health_fw_fatal_config(mlxsw_core, false);
@@ -2086,7 +2078,6 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
20862078
const char *device_kind = mlxsw_bus_info->device_kind;
20872079
struct mlxsw_core *mlxsw_core;
20882080
struct mlxsw_driver *mlxsw_driver;
2089-
struct mlxsw_res *res;
20902081
size_t alloc_size;
20912082
int err;
20922083

@@ -2112,8 +2103,8 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
21122103
mlxsw_core->bus_priv = bus_priv;
21132104
mlxsw_core->bus_info = mlxsw_bus_info;
21142105

2115-
res = mlxsw_driver->res_query_enabled ? &mlxsw_core->res : NULL;
2116-
err = mlxsw_bus->init(bus_priv, mlxsw_core, mlxsw_driver->profile, res);
2106+
err = mlxsw_bus->init(bus_priv, mlxsw_core, mlxsw_driver->profile,
2107+
&mlxsw_core->res);
21172108
if (err)
21182109
goto err_bus_init;
21192110

@@ -2522,6 +2513,9 @@ int mlxsw_core_trap_register(struct mlxsw_core *mlxsw_core,
25222513
char hpkt_pl[MLXSW_REG_HPKT_LEN];
25232514
int err;
25242515

2516+
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
2517+
return 0;
2518+
25252519
err = mlxsw_core_listener_register(mlxsw_core, listener, priv,
25262520
listener->enabled_on_register);
25272521
if (err)
@@ -2551,6 +2545,9 @@ void mlxsw_core_trap_unregister(struct mlxsw_core *mlxsw_core,
25512545
{
25522546
char hpkt_pl[MLXSW_REG_HPKT_LEN];
25532547

2548+
if (!(mlxsw_core->bus->features & MLXSW_BUS_F_TXRX))
2549+
return;
2550+
25542551
if (!listener->is_event) {
25552552
mlxsw_reg_hpkt_pack(hpkt_pl, listener->dis_action,
25562553
listener->trap_id, listener->dis_trap_group,
@@ -3242,9 +3239,6 @@ int mlxsw_core_resources_query(struct mlxsw_core *mlxsw_core, char *mbox,
32423239
u16 id;
32433240
int err;
32443241

3245-
if (!res)
3246-
return 0;
3247-
32483242
mlxsw_cmd_mbox_zero(mbox);
32493243

32503244
for (index = 0; index < MLXSW_CMD_QUERY_RESOURCES_MAX_QUERIES;

drivers/net/ethernet/mellanox/mlxsw/core.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ unsigned int mlxsw_core_max_ports(const struct mlxsw_core *mlxsw_core);
3535

3636
void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core);
3737

38-
bool mlxsw_core_res_query_enabled(const struct mlxsw_core *mlxsw_core);
39-
40-
bool mlxsw_core_temp_warn_enabled(const struct mlxsw_core *mlxsw_core);
41-
4238
bool
4339
mlxsw_core_fw_rev_minor_subminor_validate(const struct mlxsw_fw_rev *rev,
4440
const struct mlxsw_fw_rev *req_rev);
@@ -406,9 +402,6 @@ struct mlxsw_driver {
406402

407403
u8 txhdr_len;
408404
const struct mlxsw_config_profile *profile;
409-
bool res_query_enabled;
410-
bool fw_fatal_enabled;
411-
bool temp_warn_enabled;
412405
};
413406

414407
int mlxsw_core_kvd_sizes_get(struct mlxsw_core *mlxsw_core,

drivers/net/ethernet/mellanox/mlxsw/core_env.c

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ mlxsw_env_validate_cable_ident(struct mlxsw_core *core, int id, bool *qsfp,
8787
*qsfp = true;
8888
break;
8989
case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_DD:
90+
case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_OSFP:
9091
*qsfp = true;
9192
*cmis = true;
9293
break;
@@ -303,6 +304,7 @@ int mlxsw_env_get_module_info(struct net_device *netdev,
303304
modinfo->eeprom_len = ETH_MODULE_SFF_8472_LEN / 2;
304305
break;
305306
case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_QSFP_DD:
307+
case MLXSW_REG_MCIA_EEPROM_MODULE_INFO_ID_OSFP:
306308
/* Use SFF_8636 as base type. ethtool should recognize specific
307309
* type through the identifier value.
308310
*/
@@ -462,9 +464,6 @@ int mlxsw_env_reset_module(struct net_device *netdev,
462464
!(req & (ETH_RESET_PHY << ETH_RESET_SHARED_SHIFT)))
463465
return 0;
464466

465-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
466-
return -EINVAL;
467-
468467
mutex_lock(&mlxsw_env->module_info_lock);
469468

470469
err = __mlxsw_env_validate_module_type(mlxsw_core, module);
@@ -510,9 +509,6 @@ mlxsw_env_get_module_power_mode(struct mlxsw_core *mlxsw_core, u8 module,
510509
u32 status_bits;
511510
int err;
512511

513-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
514-
return -EINVAL;
515-
516512
mutex_lock(&mlxsw_env->module_info_lock);
517513

518514
err = __mlxsw_env_validate_module_type(mlxsw_core, module);
@@ -620,9 +616,6 @@ mlxsw_env_set_module_power_mode(struct mlxsw_core *mlxsw_core, u8 module,
620616
bool low_power;
621617
int err = 0;
622618

623-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
624-
return -EINVAL;
625-
626619
if (policy != ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH &&
627620
policy != ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO) {
628621
NL_SET_ERR_MSG_MOD(extack, "Unsupported power mode policy");
@@ -831,19 +824,13 @@ static int mlxsw_env_temp_warn_event_register(struct mlxsw_core *mlxsw_core)
831824
{
832825
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
833826

834-
if (!mlxsw_core_temp_warn_enabled(mlxsw_core))
835-
return 0;
836-
837827
return mlxsw_core_trap_register(mlxsw_core,
838828
&mlxsw_env_temp_warn_listener,
839829
mlxsw_env);
840830
}
841831

842832
static void mlxsw_env_temp_warn_event_unregister(struct mlxsw_env *mlxsw_env)
843833
{
844-
if (!mlxsw_core_temp_warn_enabled(mlxsw_env->core))
845-
return;
846-
847834
mlxsw_core_trap_unregister(mlxsw_env->core,
848835
&mlxsw_env_temp_warn_listener, mlxsw_env);
849836
}
@@ -922,9 +909,6 @@ mlxsw_env_module_plug_event_register(struct mlxsw_core *mlxsw_core)
922909
{
923910
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
924911

925-
if (!mlxsw_core_temp_warn_enabled(mlxsw_core))
926-
return 0;
927-
928912
return mlxsw_core_trap_register(mlxsw_core,
929913
&mlxsw_env_module_plug_listener,
930914
mlxsw_env);
@@ -933,9 +917,6 @@ mlxsw_env_module_plug_event_register(struct mlxsw_core *mlxsw_core)
933917
static void
934918
mlxsw_env_module_plug_event_unregister(struct mlxsw_env *mlxsw_env)
935919
{
936-
if (!mlxsw_core_temp_warn_enabled(mlxsw_env->core))
937-
return;
938-
939920
mlxsw_core_trap_unregister(mlxsw_env->core,
940921
&mlxsw_env_module_plug_listener,
941922
mlxsw_env);
@@ -966,9 +947,6 @@ mlxsw_env_module_overheat_counter_get(struct mlxsw_core *mlxsw_core, u8 module,
966947
{
967948
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
968949

969-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
970-
return -EINVAL;
971-
972950
mutex_lock(&mlxsw_env->module_info_lock);
973951
*p_counter = mlxsw_env->module_info[module].module_overheat_counter;
974952
mutex_unlock(&mlxsw_env->module_info_lock);
@@ -981,9 +959,6 @@ void mlxsw_env_module_port_map(struct mlxsw_core *mlxsw_core, u8 module)
981959
{
982960
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
983961

984-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
985-
return;
986-
987962
mutex_lock(&mlxsw_env->module_info_lock);
988963
mlxsw_env->module_info[module].num_ports_mapped++;
989964
mutex_unlock(&mlxsw_env->module_info_lock);
@@ -994,9 +969,6 @@ void mlxsw_env_module_port_unmap(struct mlxsw_core *mlxsw_core, u8 module)
994969
{
995970
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
996971

997-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
998-
return;
999-
1000972
mutex_lock(&mlxsw_env->module_info_lock);
1001973
mlxsw_env->module_info[module].num_ports_mapped--;
1002974
mutex_unlock(&mlxsw_env->module_info_lock);
@@ -1008,9 +980,6 @@ int mlxsw_env_module_port_up(struct mlxsw_core *mlxsw_core, u8 module)
1008980
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
1009981
int err = 0;
1010982

1011-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
1012-
return -EINVAL;
1013-
1014983
mutex_lock(&mlxsw_env->module_info_lock);
1015984

1016985
if (mlxsw_env->module_info[module].power_mode_policy !=
@@ -1040,9 +1009,6 @@ void mlxsw_env_module_port_down(struct mlxsw_core *mlxsw_core, u8 module)
10401009
{
10411010
struct mlxsw_env *mlxsw_env = mlxsw_core_env(mlxsw_core);
10421011

1043-
if (WARN_ON_ONCE(module >= mlxsw_env->module_count))
1044-
return;
1045-
10461012
mutex_lock(&mlxsw_env->module_info_lock);
10471013

10481014
mlxsw_env->module_info[module].num_ports_up--;

0 commit comments

Comments
 (0)